From c448188315827283d6e906d8d469442c50c13e32 Mon Sep 17 00:00:00 2001 From: fengweihao Date: Tue, 19 Apr 2022 14:31:54 +0800 Subject: [PATCH] =?UTF-8?q?TSG-10339=20=E4=BB=A3=E7=90=86Deny=E7=AD=96?= =?UTF-8?q?=E7=95=A5=EF=BC=8C=E5=BD=93TEXT=E4=B8=BA=E7=A9=BA=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E6=9B=BF=E6=8D=A2=E7=94=A8=E6=88=B7=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E6=97=B6=E9=87=8D=E5=90=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugin/business/pangu-http/src/pangu_http.cpp | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/plugin/business/pangu-http/src/pangu_http.cpp b/plugin/business/pangu-http/src/pangu_http.cpp index 690df06..dde4af5 100644 --- a/plugin/business/pangu-http/src/pangu_http.cpp +++ b/plugin/business/pangu-http/src/pangu_http.cpp @@ -1590,13 +1590,18 @@ static void http_get_subscriber_id(const struct tfe_stream * stream, char *repla snprintf(replace_regex, TFE_SYMBOL_MAX, "%s", source_subscribe_id); } -static int http_decoder_url(const struct tfe_stream * stream, char *rd_url, int profile_id, char **rewrite_uri) +static int http_regex_replace_message(const struct tfe_stream * stream, char *message, int profile_id, char **rewrite_message) { int i=0, n_rule=0; char replace_with[TFE_SYMBOL_MAX]={0}; struct replace_rule *rule; - if(strstr(rd_url, "tsg_policy_id")==NULL && strstr(rd_url, "tsg_subscriber_id")==NULL && strstr(rd_url, "tsg_client_ip")==NULL) + if(message == NULL) + { + return 0; + } + + if(strstr(message, "tsg_policy_id")==NULL && strstr(message, "tsg_subscriber_id")==NULL && strstr(message, "tsg_client_ip")==NULL) { return 0; } @@ -1622,7 +1627,7 @@ static int http_decoder_url(const struct tfe_stream * stream, char *rd_url, int http_get_client_id(stream, replace_with); rule[n_rule].replace_with = tfe_strdup(replace_with); - size_t rewrite_uri_sz = execute_replace_rule(rd_url, strlen(rd_url), kZoneRequestUri, rule, n_rule+1, rewrite_uri, 1); + size_t rewrite_uri_sz = execute_replace_rule(message, strlen(message), kZoneRequestUri, rule, n_rule+1, rewrite_message, 1); for(i=0; ienforce_rules[0].config_id, &rewrite_uri); + rewrite_uri_sz = http_regex_replace_message(stream, rd_url, ctx->enforce_rules[0].config_id, &rewrite_uri); if(rewrite_uri_sz>0 && rewrite_uri!= NULL) { tfe_http_std_field_write(response, TFE_HTTP_LOCATION, rewrite_uri); @@ -1729,17 +1734,16 @@ static void http_block(const struct tfe_stream * stream, const struct tfe_http_s ret = html_generate(profile_id, message, &page_buff, &page_size); if (ret != 0) { - rewrite_message_sz = http_decoder_url(stream, message, ctx->enforce_rules[0].config_id, &rewrite_message); + rewrite_message_sz = http_regex_replace_message(stream, message, ctx->enforce_rules[0].config_id, &rewrite_message); if(rewrite_message_sz>0 && rewrite_message!= NULL) { - /*read local configuration**/ - template_generate(resp_code, ctx->enforce_rules[0].config_id, rewrite_message, &page_buff, &page_size); - FREE(&rewrite_message); + message = rewrite_message; } - else + /*read local configuration**/ + template_generate(resp_code, ctx->enforce_rules[0].config_id, message, &page_buff, &page_size); + if(rewrite_message_sz>0 && rewrite_message!= NULL) { - /*read local configuration**/ - template_generate(resp_code, ctx->enforce_rules[0].config_id, message, &page_buff, &page_size); + FREE(&rewrite_message); } } tfe_http_std_field_write(response, TFE_HTTP_CONT_TYPE, "text/html; charset=utf-8");