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; }