summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfengweihao <[email protected]>2022-04-19 14:31:54 +0800
committerfengweihao <[email protected]>2022-04-19 14:31:54 +0800
commitc448188315827283d6e906d8d469442c50c13e32 (patch)
tree1257c1b293d54dd230482edc5f6934c331b5e6d9
parentdbf7ca3053106c6cbb4af46fcdc75dc363edbf86 (diff)
TSG-10339 代理Deny策略,当TEXT为空时,替换用户信息时重启v4.6.13-20220419
-rw-r--r--plugin/business/pangu-http/src/pangu_http.cpp26
1 files 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; i<n_rule+1; i++)
{
@@ -1677,7 +1682,7 @@ static void http_redirect(const struct tfe_stream * stream, const struct tfe_htt
response = tfe_http_session_response_create(to_write, resp_code);
- rewrite_uri_sz = http_decoder_url(stream, rd_url, ctx->enforce_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");