TSG-14379 Monitor策略日志多命中情况下Vsys ID填写错误

This commit is contained in:
fengweihao
2023-04-04 16:06:40 +08:00
parent 26b533cba9
commit ed9a4739a1
7 changed files with 40 additions and 26 deletions

View File

@@ -231,6 +231,10 @@ static char *cerate_device_id(const char *profile, const char *section, void *lo
}
device_id = tfe_strdup(item->valuestring);
if(tsg_sn_file)
{
FREE(&tsg_sn_file);
}
cJSON_Delete(json);
TFE_LOG_INFO(logger, "tfe device id : %s", device_id);
@@ -238,7 +242,13 @@ static char *cerate_device_id(const char *profile, const char *section, void *lo
finish:
TFE_LOG_INFO(logger, "tfe use default device id : %s", device_def_id);
if (json)
cJSON_Delete(json);
{
cJSON_Delete(json);
}
if(tsg_sn_file)
{
FREE(&tsg_sn_file);
}
return (char *)device_def_id;
}

View File

@@ -107,7 +107,6 @@ struct doh_action_param
char *message;
char *position;
float enforcement_ratio;
int vsys_id;
int profile_id;
int status_code;
size_t n_rule;
@@ -486,6 +485,12 @@ static void doh_ctx_free(struct doh_ctx *ctx)
ctx->opts = NULL;
}
if(ctx->scan_mid)
{
maat_state_free(ctx->scan_mid);
ctx->scan_mid = NULL;
}
if (ctx->http_req_body)
{
evbuffer_free(ctx->http_req_body);
@@ -515,7 +520,6 @@ static void doh_ctx_free(struct doh_ctx *ctx)
free(ctx->location_server);
ctx->location_server = NULL;
}
FREE(&ctx);
}

View File

@@ -82,6 +82,7 @@ struct doh_maat_rule_t
unsigned char do_blacklist;
unsigned char action;
char *srv_def_large;
int vsys_id;
};
struct doh_ctx

View File

@@ -11,6 +11,7 @@ struct log_rule_t
unsigned char do_blacklist;
unsigned char action;
char *srv_def_large;
int vsys_id;
};
struct proxy_log
@@ -26,7 +27,6 @@ struct proxy_log
char *asn_server;
char *location_client;
char *location_server;
int vsys_id;
};
struct proxy_logger;
struct proxy_logger* proxy_log_handle_create(const char* profile, const char* section, void* local_logger);

View File

@@ -128,6 +128,7 @@ struct maat_rule_t
unsigned char do_blacklist;
unsigned char action;
char *srv_def_large;
int vsys_id;
};
struct policy_action_param
@@ -137,7 +138,6 @@ struct policy_action_param
char *message;
char *position;
float enforcement_ratio;
int vsys_id;
int profile_id;
int status_code;
@@ -390,13 +390,14 @@ void octal_utf8_escapes(char *input)
void policy_action_param_new(const char *table_name, int table_id, const char* key, const char* table_line, void **ad, long argl, void* argp)
{
int ret=0;
int config_id=0, service_id=0, action=0;
long long config_id=0;
int service_id=0, action=0;
int do_log=0,do_blacklist=0,is_valid=0;
char effective_range[1024]={0};
char srv_def_large[8192]={0};
struct policy_action_param* param=NULL;
ret=sscanf(table_line, "%d\t%d\t%d\t%d\t%d\t%s\t%s\t%d", &config_id, &service_id, &action, &do_blacklist, &do_log,effective_range, srv_def_large, &is_valid);
ret=sscanf(table_line, "%lld\t%d\t%d\t%d\t%d\t%s\t%s\t%d", &config_id, &service_id, &action, &do_blacklist, &do_log,effective_range, srv_def_large, &is_valid);
if(ret!=8)
{
TFE_LOG_ERROR(g_proxy_rt->local_logger, "ctrl policy table parse failed, ret:%d, %s", ret, table_line);
@@ -415,14 +416,14 @@ void policy_action_param_new(const char *table_name, int table_id, const char* k
json=cJSON_Parse(srv_def_large);
if(json==NULL)
{
TFE_LOG_ERROR(g_proxy_rt->local_logger, "invalid policy parameter: id = %d", config_id);
TFE_LOG_ERROR(g_proxy_rt->local_logger, "invalid policy parameter: id = %lld", config_id);
return;
}
item=cJSON_GetObjectItem(json, "protocol");
if(unlikely(!item || !cJSON_IsString(item)))
{
TFE_LOG_ERROR(g_proxy_rt->local_logger, "Invalid policy parameter: %d invalid protocol format", config_id);
TFE_LOG_ERROR(g_proxy_rt->local_logger, "Invalid policy parameter: %lld invalid protocol format", config_id);
goto error_out;
}
@@ -454,14 +455,14 @@ void policy_action_param_new(const char *table_name, int table_id, const char* k
item=cJSON_GetObjectItem(json,"vsys_id");
if(item && item->type==cJSON_Number)
{
param->vsys_id= item->valueint;
param->hit_rule.vsys_id=item->valueint;
}
break;
case MA_ACTION_REDIRECT:
item=cJSON_GetObjectItem(json,"vsys_id");
if(item && item->type==cJSON_Number)
{
param->vsys_id= item->valueint;
param->hit_rule.vsys_id=item->valueint;
}
item=cJSON_GetObjectItem(json,"code");
if(item && item->type==cJSON_Number)
@@ -487,7 +488,7 @@ void policy_action_param_new(const char *table_name, int table_id, const char* k
item=cJSON_GetObjectItem(json,"vsys_id");
if(item && item->type==cJSON_Number)
{
param->vsys_id= item->valueint;
param->hit_rule.vsys_id=item->valueint;
}
item=cJSON_GetObjectItem(json,"code");
if(item && item->type==cJSON_Number)
@@ -509,7 +510,7 @@ void policy_action_param_new(const char *table_name, int table_id, const char* k
item=cJSON_GetObjectItem(json,"vsys_id");
if(item && item->type==cJSON_Number)
{
param->vsys_id= item->valueint;
param->hit_rule.vsys_id=item->valueint;
}
item=cJSON_GetObjectItem(json,"enforcement_ratio");
if(item && item->type==cJSON_Number)
@@ -549,7 +550,7 @@ void policy_action_param_new(const char *table_name, int table_id, const char* k
item=cJSON_GetObjectItem(json,"vsys_id");
if(item && item->type==cJSON_Number)
{
param->vsys_id= item->valueint;
param->hit_rule.vsys_id=item->valueint;
}
item=cJSON_GetObjectItem(json,"hijack_profile");
if(item && item->type==cJSON_Number){
@@ -569,7 +570,7 @@ void policy_action_param_new(const char *table_name, int table_id, const char* k
item=cJSON_GetObjectItem(json,"vsys_id");
if(item && item->type==cJSON_Number)
{
param->vsys_id= item->valueint;
param->hit_rule.vsys_id=item->valueint;
}
item=cJSON_GetObjectItem(json,"insert_profile");
if(item && item->type==cJSON_Number){
@@ -593,7 +594,7 @@ void policy_action_param_new(const char *table_name, int table_id, const char* k
item=cJSON_GetObjectItem(json,"vsys_id");
if(item && item->type==cJSON_Number)
{
param->vsys_id= item->valueint;
param->hit_rule.vsys_id=item->valueint;
}
rules = cJSON_GetObjectItem(json, "rules");
if(rules == NULL)
@@ -636,7 +637,7 @@ void policy_action_param_new(const char *table_name, int table_id, const char* k
item=cJSON_GetObjectItem(json,"vsys_id");
if(item && item->type==cJSON_Number)
{
param->vsys_id= item->valueint;
param->hit_rule.vsys_id=item->valueint;
}
item=cJSON_GetObjectItem(json,"run_script_profile");
if(item && item->type==cJSON_Number){
@@ -656,7 +657,7 @@ void policy_action_param_new(const char *table_name, int table_id, const char* k
break;
}
*ad=param;
TFE_LOG_INFO(g_proxy_rt->local_logger, "Add ctrl policy: %d", config_id);
TFE_LOG_INFO(g_proxy_rt->local_logger, "Add ctrl policy: %lld", config_id);
error_out:
cJSON_Delete(json);
return;
@@ -1560,6 +1561,10 @@ static enum proxy_action decide_ctrl_action(long long *results, size_t n_hit,
{
*param=(struct policy_action_param*)ex_data;
}
if(hit_rules)
{
FREE(&hit_rules);
}
return prior_action;
}
@@ -3249,12 +3254,6 @@ void proxy_on_http_end(const struct tfe_stream * stream,
.req_body=ctx->log_req_body, .resp_body=ctx->log_resp_body, .action=0, .inject_sz=ctx->inject_sz,
.asn_client=ctx->ip_ctx.asn_client, .asn_server=ctx->ip_ctx.asn_server, .location_client=ctx->ip_ctx.location_client,
.location_server=ctx->ip_ctx.location_server};
if(ctx != NULL && ctx->param != NULL)
{
log_msg.vsys_id = ctx->param->vsys_id;
}
if(ctx->action == PX_ACTION_MANIPULATE)
{
log_msg.action = ctx->param->action;

View File

@@ -225,7 +225,6 @@ int proxy_send_log(struct proxy_logger* handle, const struct proxy_log* log_msg)
cJSON_AddNumberToObject(common_obj, "common_stream_dir", 3); //1:c2s, 2:s2c, 3:double
cJSON_AddStringToObject(common_obj, "common_sled_ip", handle->kafka_logger->local_ip_str);
cJSON_AddNumberToObject(common_obj, "common_t_vsys_id", handle->kafka_logger->t_vsys_id);
cJSON_AddNumberToObject(common_obj, "common_vsys_id", log_msg->vsys_id);
cJSON_AddNumberToObject(common_obj, "common_entrance_id", handle->entry_id);
cJSON_AddStringToObject(common_obj, "common_device_id", handle->device_id);
cJSON_AddNumberToObject(common_obj, "common_c2s_byte_num", c2s_byte_num);
@@ -361,6 +360,7 @@ int proxy_send_log(struct proxy_logger* handle, const struct proxy_log* log_msg)
per_hit_obj=cJSON_Duplicate(common_obj, 1);
cJSON_AddNumberToObject(per_hit_obj, "common_policy_id", log_msg->result[i].config_id);
cJSON_AddNumberToObject(per_hit_obj, "common_service", log_msg->result[i].service_id);
cJSON_AddNumberToObject(per_hit_obj, "common_vsys_id", log_msg->result[i].vsys_id);
cJSON_AddNumberToObject(per_hit_obj, "common_action", LG_ACTION_MANIPULATE);
if(log_msg->result[i].action == LG_ACTION_MANIPULATE)
{

View File

@@ -1,6 +1,6 @@
{
"compile_table": "PXY_CTRL_COMPILE",
"group2compile_table": "GROUP_COMPILE_RELATION",
"group2compile_table": "GROUP_PXY_CTRL_COMPILE_RELATION",
"group2group_table": "GROUP_GROUP_RELATION",
"rules": [
{