soft

soft

NGINX 模块开发 args 中是否包含KEY-VALUE检测

static ngx_uint_t get_exist_target_in_uri(ngx_http_request_t* r) {
    ngx_log_error(NGX_LOG_DEBUG, r->connection->log, 0, "[%s %d]%Z", __FUNCTION__, __LINE__);
    ngx_uint_t rt = 0;
    if (NULL!=r->args.data)
    {
        size_t i = 0;
        char* key_val=NULL;
        char* key = ngx_pcalloc(r->pool, r->args.len);
        char* val = NULL;
        char* buf = ngx_pcalloc(r->pool, r->args.len+1);
        ngx_memcpy((u_char*)buf, r->args.data, r->args.len);
        //ngx_log_error(NGX_LOG_DEBUG, r->connection->log, 0, "buf=%s, [%s %d]%Z", buf, __FUNCTION__, __LINE__);
        for ( i = r->args.len-1; i >0; i--)
        {
            if (buf[i]=='&' || buf[i] == '?')
            {
                key_val = buf + i+1;
                //ngx_log_error(NGX_LOG_DEBUG, r->connection->log, 0, "[%s %d]%Z", __FUNCTION__, __LINE__);
                break;
            }
        }
        if (key_val)
        {
            ngx_log_error(NGX_LOG_DEBUG, r->connection->log, 0, "key_val=%s [%s %d]%Z", key_val,__FUNCTION__, __LINE__);
            for ( i = 0; i < strlen(key_val); i++)
            {
                if (key_val[i]=='=')
                {
                    memcpy(key, key_val, i);
                    val = strstr(key_val, "=")+1;
                }
            }
        }
        if (key && val)
        {
            ngx_log_error(NGX_LOG_DEBUG, r->connection->log, 0, "key=%s,val=%s [%s %d]%Z", key,val, __FUNCTION__, __LINE__);
            char* find_buf = ngx_pcalloc(r->pool, 128);
            ngx_snprintf((u_char*)find_buf, 127, "%s=%xi", key, get_ip_addr_key_crc(r, key));
            ngx_log_error(NGX_LOG_DEBUG, r->connection->log, 0, "find_buf=>%s [%s %d]%Z", find_buf, __FUNCTION__, __LINE__);
            char* found = ngx_strstr((char*)r->args.data, find_buf);
            if (found)
            {
                rt = 1;
            }
        }      
    }
    else {
        ngx_log_error(NGX_LOG_DEBUG, r->connection->log, 0, "[%s %d]%Z", __FUNCTION__, __LINE__);
    }
    return rt;
}


发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

联系我 331434376    15629529961