summaryrefslogtreecommitdiff
path: root/plugin/business/tsg-http/src
diff options
context:
space:
mode:
authorfengweihao <[email protected]>2024-02-29 11:25:36 +0800
committerfengweihao <[email protected]>2024-02-29 11:25:36 +0800
commiteb70e87583edda1c894e9a3d5e40da9571770de9 (patch)
tree2d7ea472c71098f42a34938f523410c628fd359e /plugin/business/tsg-http/src
parentddb41ce22f506114eb702fcb132178602d773591 (diff)
TSG-19480 修复Metric中命中策略统计和Throughput的时机不一致,造成界面展示歧义v4.8.67-20240301
TSG-19540 修复Manipulation策略中Protocol选择UDP/ICMP时,选择非无法命中策略 TSG-19337 界面展示一致性,Proxy的Manipulate日志中的IP Protocol统一小写
Diffstat (limited to 'plugin/business/tsg-http/src')
-rw-r--r--plugin/business/tsg-http/src/tsg_http.cpp152
-rw-r--r--plugin/business/tsg-http/src/tsg_logger.cpp2
2 files changed, 78 insertions, 76 deletions
diff --git a/plugin/business/tsg-http/src/tsg_http.cpp b/plugin/business/tsg-http/src/tsg_http.cpp
index 42afd8c..5f2481a 100644
--- a/plugin/business/tsg-http/src/tsg_http.cpp
+++ b/plugin/business/tsg-http/src/tsg_http.cpp
@@ -1189,6 +1189,77 @@ struct proxy_http_ctx
int thread_id;
};
+static inline int ctx_actually_replaced(struct proxy_http_ctx * ctx)
+{
+ if(ctx->action == PX_ACTION_MANIPULATE &&
+ ctx->param->action == MA_ACTION_REPLACE &&
+ ctx->rep_ctx->actually_replaced==1)
+ {
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+static inline int ctx_actually_ran_script(struct proxy_http_ctx * ctx)
+{
+ if(ctx->action == PX_ACTION_MANIPULATE &&
+ ctx->param->action == MA_ACTION_LUA_SCRIPT &&
+ ctx->tsg_ctx->actually_executed==1)
+ {
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+static inline int ctx_actually_inserted(struct proxy_http_ctx * ctx)
+{
+ if(ctx->action == PX_ACTION_MANIPULATE &&
+ ctx->param->action == MA_ACTION_INSERT &&
+ ctx->ins_ctx->actually_inserted==1)
+ {
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+static inline int ctx_actually_edited(struct proxy_http_ctx * ctx)
+{
+ if(ctx->action == PX_ACTION_MANIPULATE &&
+ ctx->param->action == MA_ACTION_ELEMENT && ctx->edit_ctx != NULL &&
+ ctx->edit_ctx->actually_edited==1)
+ {
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+static inline int ctx_actually_manipulate(struct proxy_http_ctx * ctx)
+{
+ if(ctx->action == PX_ACTION_MANIPULATE &&
+ (ctx->param->action == MA_ACTION_REDIRECT ||
+ ctx->param->action == MA_ACTION_HIJACK)&&
+ ctx->manipulate_replaced==1)
+ {
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
void http_repl_ctx_free(struct replace_ctx* rep_ctx)
{
if (rep_ctx->http_body)
@@ -2829,7 +2900,12 @@ void enforce_control_policy(const struct tfe_stream * stream, const struct tfe_h
if(ctx->log_resp_body == NULL) ctx->log_resp_body = evbuffer_new();
evbuffer_add(ctx->log_resp_body, body_frag, frag_size);
}
- proxy_send_metric_log(stream, ctx, thread_id, 1);
+
+ if((((ctx_actually_replaced(ctx)) || (ctx_actually_inserted(ctx)) || (ctx_actually_edited(ctx)) || (ctx_actually_manipulate(ctx))
+ || ctx_actually_ran_script(ctx)) || ctx->action == PX_ACTION_REJECT || (ctx->action == PX_ACTION_MONIT)))
+ {
+ proxy_send_metric_log(stream, ctx, thread_id, 1);
+ }
return;
}
@@ -2910,80 +2986,6 @@ void proxy_on_http_begin(const struct tfe_stream *stream, const struct tfe_http_
return;
}
-static inline int ctx_actually_replaced(struct proxy_http_ctx * ctx)
-{
-
- if(ctx->action == PX_ACTION_MANIPULATE &&
- ctx->param->action == MA_ACTION_REPLACE &&
- ctx->rep_ctx->actually_replaced==1)
- {
- return 1;
- }
- else
- {
- return 0;
- }
-}
-
-static inline int ctx_actually_ran_script(struct proxy_http_ctx * ctx)
-{
- if(ctx->action == PX_ACTION_MANIPULATE &&
- ctx->param->action == MA_ACTION_LUA_SCRIPT &&
- ctx->tsg_ctx->actually_executed==1)
- {
- return 1;
- }
- else
- {
- return 0;
- }
-}
-
-static inline int ctx_actually_inserted(struct proxy_http_ctx * ctx)
-{
-
- if(ctx->action == PX_ACTION_MANIPULATE &&
- ctx->param->action == MA_ACTION_INSERT &&
- ctx->ins_ctx->actually_inserted==1)
- {
- return 1;
- }
- else
- {
- return 0;
- }
-}
-
-static inline int ctx_actually_edited(struct proxy_http_ctx * ctx)
-{
-
- if(ctx->action == PX_ACTION_MANIPULATE &&
- ctx->param->action == MA_ACTION_ELEMENT && ctx->edit_ctx != NULL &&
- ctx->edit_ctx->actually_edited==1)
- {
- return 1;
- }
- else
- {
- return 0;
- }
-}
-
-static inline int ctx_actually_manipulate(struct proxy_http_ctx * ctx)
-{
- if(ctx->action == PX_ACTION_MANIPULATE &&
- (ctx->param->action == MA_ACTION_REDIRECT ||
- ctx->param->action == MA_ACTION_HIJACK)&&
- ctx->manipulate_replaced==1)
- {
- return 1;
- }
- else
- {
- return 0;
- }
-}
-
void proxy_on_http_end(const struct tfe_stream * stream,
const struct tfe_http_session * session, unsigned int thread_id, void ** pme)
{
diff --git a/plugin/business/tsg-http/src/tsg_logger.cpp b/plugin/business/tsg-http/src/tsg_logger.cpp
index 6673d83..4ae7203 100644
--- a/plugin/business/tsg-http/src/tsg_logger.cpp
+++ b/plugin/business/tsg-http/src/tsg_logger.cpp
@@ -253,7 +253,7 @@ int proxy_send_log(struct proxy_logger* handle, const struct proxy_log* log_msg)
cJSON_AddStringToObject(common_obj, "http_version", app_proto[http->major_version]);
cJSON_AddStringToObject(common_obj, "decoded_as", "HTTP");
- cJSON_AddStringToObject(common_obj, "ip_protocol", "TCP");
+ cJSON_AddStringToObject(common_obj, "ip_protocol", "tcp");
cJSON_AddNumberToObject(common_obj, "out_link_id", 0);
cJSON_AddNumberToObject(common_obj, "in_link_id", 0);
cJSON_AddStringToObject(common_obj, "sled_ip", handle->kafka_logger->local_ip_str);