| + + + + + + |
diff --git a/test/maat_json.json b/test/maat_json.json index df4c290..1c690f9 100644 --- a/test/maat_json.json +++ b/test/maat_json.json @@ -1275,7 +1275,33 @@ "not_flag":0 } ] - } + }, + { + "compile_id": 164, + "service": 1, + "action": 1, + "do_blacklist": 1, + "do_log": 1, + "user_region": "CharsetWindows1251", + "is_valid": "yes", + "groups": [ + { + "group_name": "Untitled", + "regions": [ + { + "table_name": "KEYWORDS_TABLE", + "table_type": "string", + "table_content": { + "keywords": ">ЗАО\\b«Севергазвтоматика\\bАйС»<", + "expr_type": "none", + "match_method": "sub", + "format": "uncase plain" + } + } + ] + } + ] + } ], "plugin_table": [ { diff --git a/test/table_info.conf b/test/table_info.conf index 013dfeb..b698c40 100644 --- a/test/table_info.conf +++ b/test/table_info.conf @@ -22,7 +22,7 @@ 1 GROUP group -- 2 HTTP_URL expr UTF8 GBK/BIG5/UNICODE/UTF8/url_encode_gb2312/url_encode_utf8 yes 128 quickoff 2 HTTP_HOST expr UTF8 GBK/BIG5/UNICODE/UTF8/url_encode_gb2312/url_encode_utf8 yes 128 quickoff -3 KEYWORDS_TABLE expr UTF8 GBK/BIG5/UNICODE/UTF8/unicode_ascii_esc/unicode_ascii_aligned/unicode_ncr_dec/unicode_ncr_hex yes 0 +3 KEYWORDS_TABLE expr UTF8 GBK/BIG5/UNICODE/UTF8/unicode_ascii_esc/unicode_ascii_aligned/unicode_ncr_dec/unicode_ncr_hex/windows-1251 yes 0 4 IP_CONFIG ip -- 5 CONTENT_SIZE intval -- 6 QD_ENTRY_INFO plugin 4 -- diff --git a/test/test_maatframe.cpp b/test/test_maatframe.cpp index 3cffc1b..469a524 100644 --- a/test/test_maatframe.cpp +++ b/test/test_maatframe.cpp @@ -377,6 +377,7 @@ TEST(StringScan, ExprPlus) return; } + TEST(StringScan, ExprPlusWithOffset) { int ret=0, table_id=0; @@ -653,6 +654,54 @@ TEST(NOTLogic, OneRegion) Maat_clean_status(&mid); } + +TEST(StringScan, CharsetWindows1251) +{ + int table_id=0,ret=0; + int read_size=0,pass_flag=0; + struct Maat_rule_t result[4]; + scan_status_t mid=NULL; + //const char* fn="./testdata/mesa_logo.jpg"; + const char* table_name="KEYWORDS_TABLE"; + const char* fn="./testdata/charsetWindows1251.txt"; + FILE* fp=fopen(fn,"r"); + ASSERT_FALSE(fp==NULL); + + char scan_data[4096]={0}; + table_id=Maat_table_register(g_feather,table_name); + ASSERT_GT(table_id, 0); + + + struct Maat_hit_detail_t *hit_detail=(struct Maat_hit_detail_t *)malloc(sizeof(struct Maat_hit_detail_t)*10); + stream_para_t sp=Maat_stream_scan_string_start(g_feather,table_id,0); + int detail_ret=0; + + ASSERT_FALSE(sp==NULL); + + while(0==feof(fp)) + { + read_size=fread(scan_data,1,sizeof(scan_data),fp); + ret=Maat_stream_scan_string_detail(&sp,CHARSET_NONE,scan_data,read_size + ,result,4,hit_detail,10 + ,&detail_ret,&mid); + if(ret>0) + { + pass_flag=1; + break; + } + } + EXPECT_EQ(pass_flag, 1); + EXPECT_EQ(result[0].config_id, 164); + + Maat_stream_scan_string_end(&sp); + free(hit_detail); + fclose(fp); + Maat_clean_status(&mid); + return; + +} + + TEST(NOTLogic, ScanNotAtLast) { const char* string_should_hit="This string ONLY contains must-contained-string-of-rule-144."; diff --git a/test/testdata/charsetWindows1251.txt b/test/testdata/charsetWindows1251.txt new file mode 100644 index 0000000..da978a6 --- /dev/null +++ b/test/testdata/charsetWindows1251.txt @@ -0,0 +1,48 @@ + !','JS_CORE_WINDOW_AUTH':'','JS_CORE_IMAGE_FULL':' '}); + + + + + + + + + + + + + + +