代码适配Maat command、maat json。

This commit is contained in:
zhengchao
2020-06-13 21:05:42 +08:00
parent 7e1cb56d4f
commit 2c80ba4c0a
22 changed files with 935 additions and 1513 deletions

View File

@@ -21,6 +21,9 @@
#include "Maat_rule.h"
#include "Maat_rule_internal.h"
#include "Maat_utils.h"
#include "Maat_hierarchy.h"
#include "Maat_garbage_collection.h"
#include "json2iris.h"
#include "cJSON.h"
#include "dynamic_array.h"
@@ -28,8 +31,6 @@
#include "config_monitor.h"
#include "map_str2int.h"
#include "rulescan.h"
#include "bool_matcher.h"
#include "stream_fuzzy_hash.h"
#include "gram_index_engine.h"
@@ -712,6 +713,18 @@ void op_expr_add_rule(struct op_expr_t* op_expr,scan_rule_t* p_rule)
op_expr->rule_type=p_rule->rule_type;
return;
}
void Maat_region_inner_free(struct Maat_region_inner* region)
{
free(region);
}
void Maat_region_inner_cancel_last_expr_id(struct Maat_region_inner* region)
{
assert(region->expr_id_cnt==region->expr_id_ub-region->expr_id_lb);
region->expr_id_ub--;
region->expr_id_cnt--;
return;
}
struct Maat_scanner* create_maat_scanner(unsigned int version, _Maat_feather_t *feather)
{
@@ -721,8 +734,8 @@ struct Maat_scanner* create_maat_scanner(unsigned int version, _Maat_feather_t *
struct Maat_scanner* scanner=NULL;
scanner=ALLOC(struct Maat_scanner, 1);
scanner->hier=Maat_hierarchy_new(scan_thread_num, feather->logger);
Maat_hierarchy_set_compile_user_data_free_func(scanner->hier, destroy_compile_rule);
Maat_hierarchy_set_region_user_data_free_func(scanner->hier, Maat_region_inner_free);
Maat_hierarchy_set_compile_user_data_free_func(scanner->hier, (void (*)(void*))destroy_compile_rule);
Maat_hierarchy_set_region_user_data_free_func(scanner->hier, (void (*)(void*))Maat_region_inner_free);
scanner->district_map=map_create();
@@ -1038,18 +1051,7 @@ void Maat_region_inner_add_expr_id(struct Maat_region_inner* region, int expr_id
region->expr_id_cnt++;
return;
}
void Maat_region_inner_free(struct Maat_region_inner* region)
{
free(region);
}
void Maat_region_inner_cancel_last_expr_id(struct Maat_region_inner* region)
{
assert(region->expr_id_cnt==region->expr_id_ub-region->expr_id_lb);
region->expr_id_ub--;
region->expr_id_cnt--;
return;
}
int add_expr_rule(struct Maat_table_schema* table,struct db_str_rule_t* db_rule,struct Maat_scanner *scanner,void* logger)
{
@@ -1307,7 +1309,7 @@ int add_ip_rule(struct Maat_table_schema* table, struct db_ip_rule_t* db_ip_rule
scan_rule_t* p_rule=NULL;
struct op_expr_t* op_expr=NULL;
struct Maat_region_inner* u_para=NULL;
int expr_id=0, district_id=-1, ret=0;
int expr_id=0, ret=0;
u_para=Maat_region_inner_new(db_ip_rule->group_id, db_ip_rule->region_id, table->table_id, -1);
ret=Maat_hierarchy_add_region_to_group(scanner->hier, db_ip_rule->group_id, db_ip_rule->region_id, table->table_id, u_para);
@@ -1386,7 +1388,6 @@ int add_digest_rule(struct Maat_table_schema* table, struct db_digest_rule* db_r
int del_region_rule(struct Maat_table_schema* table, int region_id, int group_id, int rule_type, struct Maat_scanner *maat_scanner, void* logger)
{
int i=0;
int expr_num=0;
struct Maat_table_runtime* table_rt=NULL;
struct op_expr_t* op_expr=NULL;
@@ -1426,7 +1427,7 @@ int del_region_rule(struct Maat_table_schema* table, int region_id, int group_id
assert(0);
break;
}
Maat_garbage_bag(maat_scanner->ref_garbage_bin, region, Maat_region_inner_free);
Maat_garbage_bagging(maat_scanner->ref_garbage_bin, region, (void (*)(void*))Maat_region_inner_free);
return 0;
}
@@ -1437,7 +1438,7 @@ void update_group2compile_rule(struct Maat_table_schema* table, const char* tabl
int ret=0;
char virtual_table_name[MAX_TABLE_NAME_LEN]={0};
memset(&db_g2c_rule, 0, sizeof(db_g2c_rule));
ret=sscanf(table_line,"%d\t%d\t%d\t%d\t%d\t%s", &(db_g2c_rule.group_id),
ret=sscanf(table_line,"%d\t%d\t%d\t%d\t%s\t%d", &(db_g2c_rule.group_id),
&(db_g2c_rule.compile_id),
&(db_g2c_rule.is_valid),
&(db_g2c_rule.not_flag),
@@ -1486,7 +1487,7 @@ void update_group2compile_rule(struct Maat_table_schema* table, const char* tabl
if(ret==0)
{
table_rt->origin_rule_num++;
if(db_group2compile_rule.not_flag)
if(db_g2c_rule.not_flag)
{
table_rt->group2compile.not_flag_group++;
}
@@ -1528,10 +1529,6 @@ void update_group2group_rule(struct Maat_table_schema* table, const char* table_
if(ret==0)
{
table_rt->origin_rule_num++;
if(db_group2compile_rule.not_flag)
{
table_rt->group2compile.not_flag_group++;
}
scanner->to_update_group_cnt++;
}
}
@@ -1627,16 +1624,6 @@ void update_expr_rule(struct Maat_table_schema* table,const char* table_line,str
table->udpate_err_cnt++;
goto error_out;
}
ret=sync_region(scanner->region_hash,
maat_str_rule->region_id,
maat_str_rule->group_id,
table->table_name[table->updating_name],
maat_str_rule->is_valid,logger);
if(ret<0)
{
table->udpate_err_cnt++;
goto error_out;
}
if(maat_str_rule->is_valid==FALSE)
{
@@ -1876,16 +1863,6 @@ void update_ip_rule(struct Maat_table_schema* table, const char* table_line, str
goto error_out;
}
}
ret=sync_region(scanner->region_hash,
ip_rule->region_id,
ip_rule->group_id,
table->table_name[table->updating_name],
ip_rule->is_valid,logger);
if(ret<0)
{
table->udpate_err_cnt++;
goto error_out;
}
if(ip_rule->is_valid==FALSE)
{
ret=del_region_rule(table,
@@ -2045,7 +2022,7 @@ void update_compile_rule(struct Maat_table_schema* table,const char* table_line
ret=Maat_hierarchy_compile_remove(scanner->hier, m_rule_tmp.config_id);
assert(ret==0);
table_rt->origin_rule_num--;
Maat_garbage_bag(scanner->ref_garbage_bin, p_compile, destroy_compile_rule);
Maat_garbage_bagging(scanner->ref_garbage_bin, p_compile, (void (*)(void*))destroy_compile_rule);
}
else
{
@@ -2246,7 +2223,6 @@ void update_ip_plugin_table(struct Maat_table_schema* table_schema, const char*
void do_scanner_update(struct Maat_scanner* scanner, int scan_thread_num, void* logger)
{
struct bool_matcher *tmp1=NULL,*tmp2=NULL;
MESA_htable_handle tmp_map=NULL;
struct Maat_table_runtime* table_rt=NULL;
struct ip_matcher* old_ip_matcher=NULL;
@@ -2295,7 +2271,7 @@ void do_scanner_update(struct Maat_scanner* scanner, int scan_thread_num, void*
case TABLE_TYPE_IP_PLUGIN:
Maat_table_runtime_ip_plugin_rebuild_ip_matcher(table_rt);
old_ip_matcher=Maat_table_runtime_dettach_old_ip_matcher(table_rt);
Maat_garbage_bag(scanner->ref_garbage_bin, old_ip_matcher, ip_matcher_free);
Maat_garbage_bagging(scanner->ref_garbage_bin, old_ip_matcher, (void (*)(void*))ip_matcher_free);
break;
default:
break;
@@ -2307,7 +2283,7 @@ void do_scanner_update(struct Maat_scanner* scanner, int scan_thread_num, void*
tmp_map=scanner->district_map;
scanner->district_map=scanner->tmp_district_map;
scanner->tmp_district_map=NULL;
Maat_garbage_bag(scanner->ref_garbage_bin, tmp_map, map_destroy)
Maat_garbage_bagging(scanner->ref_garbage_bin, tmp_map, (void (*)(void*))map_destroy);
}
scanner->last_update_time=time(NULL);
scanner->gie_update_q_size=0;
@@ -2592,7 +2568,7 @@ void *thread_rule_monitor(void *arg)
old_scanner->version, feather->scanner->version);
}
feather->zombie_rs_stream+=alignment_int64_array_sum(old_scanner->ref_cnt,old_scanner->max_thread_num);
Maat_garbage_bag(feather->garbage_bin, old_scanner, destroy_maat_scanner);
Maat_garbage_bagging(feather->garbage_bin, old_scanner, (void (*)(void*))destroy_maat_scanner);
}
feather->update_tmp_scanner=NULL;
feather->maat_version=feather->scanner->version;
@@ -2628,7 +2604,7 @@ void *thread_rule_monitor(void *arg)
Maat_garbage_bin_free(feather->garbage_bin);
alignment_int64_array_free(feather->thread_call_cnt);
alignment_int64_array_free(feather->inner_mid_cnt);
alignment_int64_array_free(feather-> compile_mid_cnt);
alignment_int64_array_free(feather->outer_mid_cnt);
alignment_int64_array_free(feather->hit_cnt);
alignment_int64_array_free(feather->not_grp_hit_cnt);