diff --git a/src/entry/Maat_rule.cpp b/src/entry/Maat_rule.cpp index e2561e0..da6eb76 100644 --- a/src/entry/Maat_rule.cpp +++ b/src/entry/Maat_rule.cpp @@ -3217,7 +3217,7 @@ void garbage_bury(MESA_lqueue_head garbage_q,int timeout,void *logger) } void update_plugin_table(struct Maat_table_desc* table,const char* table_line,Maat_scanner_t* scanner, const struct rule_tag* tags, int n_tags, void* logger) { - int i=0, ret=1; + int i=0, ret=1, matched_tag=1; unsigned int len=strlen(table_line)+1; struct plugin_table_desc* plugin_desc=&(table->plugin); struct Maat_table_runtime* table_rt=scanner->table_rt[table->table_id]; @@ -3242,22 +3242,22 @@ void update_plugin_table(struct Maat_table_desc* table,const char* table_line,Ma { copy=ALLOC(char, accept_tag_len+1); memcpy(copy, table_line+accept_tag_offset, accept_tag_len); - ret=compare_accept_tag(copy, tags, n_tags); - if(ret<0) + matched_tag=compare_accept_tag(copy, tags, n_tags); + if(matched_tag<0) { MESA_handle_runtime_log(logger,RLOG_LV_FATAL,maat_module , "update error,invalid tag format of plugin table %s:%s" ,table->table_name[table->updating_name],table_line); table->udpate_err_cnt++; } - if(ret==0) + if(matched_tag==0) { table->unmatch_tag_cnt++; } free(copy); copy=NULL; } - if(ret!=1) + if(!matched_tag) { return; } diff --git a/test/maat_json.json b/test/maat_json.json index d33a751..da4b3a2 100644 --- a/test/maat_json.json +++ b/test/maat_json.json @@ -762,6 +762,13 @@ "3\tFAILED\t11\t1\t{\"tag_sets\":[[{\"tag\":\"location\",\"value\":[\"北京/朝阳/华严北里\",\"上海/浦东/陆家嘴\"]},{\"tag\":\"isp\",\"value\":[\"电信\",\"联通\"]}],[{\"tag\":\"location\",\"value\":[\"北京\"]},{\"tag\":\"isp\",\"value\":[\"联通\"]}]]}\t333", "4\tSUCCESS\t66\t1\t{}\t444" ] + }, + { + "table_name": "IR_INTERCEPT_IP", + "table_content": [ + "1000000130\t1000000130\t4\t192.168.10.99\t255.255.255.255\t0\t65535\t0.0.0.0\t255.255.255.255\t0\t65535\t0\t1\t1\t96\t1\tuser_region\t{}\t2019/1/24/18:0:34", + "161\t161\t4\t0.0.0.0\t255.255.255.255\t0\t65535\t61.135.169.121\t255.255.255.255\t0\t65535\t0\t0\t1\t96\t832\t0\t0\t2019/1/24/18:48:42" + ] } ] } diff --git a/test/table_info.conf b/test/table_info.conf index 55b0825..c16e6d7 100644 --- a/test/table_info.conf +++ b/test/table_info.conf @@ -31,3 +31,4 @@ 12 TEST_FOREIGN_KEY plugin {"valid":4,"foreign":[6,8],"tag":3} -- 13 COMPILE_ALIAS compile escape -- 14 TEST_PLUGIN_EXDATA_TABLE plugin {"key":2,"valid":4,"tag":5,"estimate_size":1024} -- +15 IR_INTERCEPT_IP plugin {"valid":14,"tag":18} \ No newline at end of file diff --git a/test/test_maatframe.cpp b/test/test_maatframe.cpp index 38c327f..c1c5048 100644 --- a/test/test_maatframe.cpp +++ b/test/test_maatframe.cpp @@ -784,30 +784,59 @@ TEST(StringScan, OffsetChunk1460) void accept_tags_entry_cb(int table_id,const char* table_line,void* u_para) { + int* callback_times=(int*)u_para; char status[32]={0}; int entry_id=-1,seq=-1; int is_valid=0; sscanf(table_line,"%d\t%s\t%d\t%d",&seq,status,&entry_id,&is_valid); EXPECT_STREQ(status ,"SUCCESS"); - + (*callback_times)++; return; } -TEST(RuleTags, Plugin) +TEST(RuleTags, Plugin1) { #define RuleTags_Plugin - int table_id=0,ret=0; - const char* table_name="TEST_EFFECTIVE_RANGE_TABLE"; - table_id=Maat_table_register(g_feather,table_name); + int ret=0; + + int table_id=Maat_table_register(g_feather,"TEST_EFFECTIVE_RANGE_TABLE"); ASSERT_GT(table_id, 0); + int callback_times=0; ret=Maat_table_callback_register(g_feather, table_id, NULL, accept_tags_entry_cb, NULL, - NULL); + &callback_times); ASSERT_GE(ret, 0); + EXPECT_EQ(callback_times, 3); + return; +} +void accept_tags_entry2_cb(int table_id,const char* table_line,void* u_para) +{ + int* callback_times=(int*)u_para; + (*callback_times)++; + return; +} + +TEST(RuleTags, Plugin2) +{ +#define RuleTags_Plugin2 + int ret=0; + + int table_id=Maat_table_register(g_feather,"IR_INTERCEPT_IP"); + ASSERT_GT(table_id, 0); + + int callback_times=0; + ret=Maat_table_callback_register(g_feather, table_id, + NULL, + accept_tags_entry2_cb, + NULL, + &callback_times); + + ASSERT_GE(ret, 0); + EXPECT_EQ(callback_times, 2); return; } @@ -1910,8 +1939,8 @@ int main(int argc, char ** argv) const char* log_file="./test.log"; const char* stat_file="./scan_staus.log"; const char* decrypt_key="mesa2017wy"; - const char* accept_tags="{\"tags\":[{\"tag\":\"location\",\"value\":\"北京/朝阳/华严北里/甲22号\"},{\"tag\":\"isp\",\"value\":\"移动\"}]}"; - + const char* accept_tags="{\"tags\":[{\"tag\":\"location\",\"value\":\"北京/朝阳/华严北里/甲22号\"},{\"tag\":\"isp\",\"value\":\"移动\"},{\"tag\":\"location\",\"value\":\"Astana\"}]}"; +// const char* subsitute_acc_tags="{\"tags\":[{\"tag\":\"location\",\"value\":\"Astana\"}]}"; int scan_detail=0; ::testing::InitGoogleTest(&argc, argv);