TSG-19480 修复Metric中命中策略统计和Throughput的时机不一致,造成界面展示歧义

TSG-19540 修复Manipulation策略中Protocol选择UDP/ICMP时,选择非无法命中策略
TSG-19337 界面展示一致性,Proxy的Manipulate日志中的IP Protocol统一小写
This commit is contained in:
fengweihao
2024-02-29 11:25:36 +08:00
parent ddb41ce22f
commit eb70e87583
4 changed files with 85 additions and 78 deletions

View File

@@ -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)
{