summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
author刘文坛 <[email protected]>2023-11-28 02:16:07 +0000
committer刘文坛 <[email protected]>2023-11-28 02:16:07 +0000
commit2773be9b95d86ac5f2f3f40c4382ccb59953d519 (patch)
treee3ef99a55e2654c89db920797d24e2b20b1fb29d /test
parent7568d4e2b9f2bf4ea4540731eb35d9395ca1c28b (diff)
[FEATURE] one clause support multi literal{vtable_id, group_id_array}v4.1.11
Diffstat (limited to 'test')
-rw-r--r--test/maat_framework_gtest.cpp672
-rw-r--r--test/maat_json.json626
-rw-r--r--test/table_info.conf12
3 files changed, 1014 insertions, 296 deletions
diff --git a/test/maat_framework_gtest.cpp b/test/maat_framework_gtest.cpp
index 54b5cdb..2a838af 100644
--- a/test/maat_framework_gtest.cpp
+++ b/test/maat_framework_gtest.cpp
@@ -3404,7 +3404,7 @@ TEST_F(MaatGroupScan, basic) {
int table_id = maat_get_table_id(maat_inst, table_name);
ASSERT_GE(table_id, 0);
- long long group_id = 158;
+ long long group_id = 247;
int ret = maat_scan_group(maat_inst, table_id, &group_id, 1, results,
ARRAY_SIZE, &n_hit_result, state);
EXPECT_EQ(ret, MAAT_SCAN_HIT);
@@ -3432,7 +3432,7 @@ TEST_F(MaatGroupScan, SetScanCompileTable) {
int ret = maat_state_set_scan_compile_table(state, compile_table_id);
EXPECT_EQ(ret, 0);
- long long group_id = 159;
+ long long group_id = 248;
ret = maat_scan_group(maat_inst, table_id, &group_id, 1, results,
ARRAY_SIZE, &n_hit_result, state);
EXPECT_EQ(ret, MAAT_SCAN_HIT);
@@ -3545,15 +3545,12 @@ TEST_F(NOTLogic, ScanNotAtLast) {
int hit_table_id = maat_get_table_id(maat_inst, hit_table_name);
ASSERT_GT(hit_table_id, 0);
+ // scan string_should_hit(HTTP_URL_FILTER) & string_should_not_hit(HTTP_RESPONSE_KEYWORDS) => not hit compile
int ret = maat_scan_string(maat_inst, hit_table_id, string_should_hit,
strlen(string_should_hit), results, ARRAY_SIZE,
&n_hit_result, state);
EXPECT_EQ(ret, MAAT_SCAN_HALF_HIT);
- ret = maat_scan_not_logic(maat_inst, hit_table_id, results, ARRAY_SIZE,
- &n_hit_result, state);
- EXPECT_EQ(ret, MAAT_SCAN_OK);
-
int not_hit_table_id = maat_get_table_id(maat_inst, not_hit_table_name);
ASSERT_GT(not_hit_table_id, 0);
@@ -3562,10 +3559,23 @@ TEST_F(NOTLogic, ScanNotAtLast) {
&n_hit_result, state);
EXPECT_EQ(ret, MAAT_SCAN_HALF_HIT);
+ ret = maat_scan_string(maat_inst, not_hit_table_id, string_contain_nothing,
+ strlen(string_contain_nothing), results, ARRAY_SIZE,
+ &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_OK);
+
ret = maat_scan_not_logic(maat_inst, not_hit_table_id, results, ARRAY_SIZE,
&n_hit_result, state);
EXPECT_EQ(ret, MAAT_SCAN_OK);
-
+
+ maat_state_reset(state);
+
+ //scan string_should_hit(HTTP_URL_FILTER) & nothing(HTTP_RESPONSE_KEYWORDS) => hit compile144
+ ret = maat_scan_string(maat_inst, hit_table_id, string_should_hit,
+ strlen(string_should_hit), results, ARRAY_SIZE,
+ &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_HALF_HIT);
+
ret = maat_scan_string(maat_inst, not_hit_table_id, string_contain_nothing,
strlen(string_contain_nothing), results, ARRAY_SIZE,
&n_hit_result, state);
@@ -3573,7 +3583,7 @@ TEST_F(NOTLogic, ScanNotAtLast) {
ret = maat_scan_not_logic(maat_inst, not_hit_table_id, results, ARRAY_SIZE,
&n_hit_result, state);
- EXPECT_EQ(ret, MAAT_SCAN_HIT);
+ EXPECT_EQ(ret, MAAT_SCAN_HIT);
EXPECT_EQ(n_hit_result, 1);
EXPECT_EQ(results[0], 144);
@@ -3749,6 +3759,7 @@ TEST_F(NOTLogic, ScanNotIP) {
int hit_table_id = maat_get_table_id(maat_inst, hit_table_name);
ASSERT_GT(hit_table_id, 0);
+ // scan string_should_hit(HTTP_URL) & hit ip(VIRTUAL_IP_CONFIG) => not hit compile
int ret = maat_scan_string(maat_inst, hit_table_id, string_should_hit,
strlen(string_should_hit), results, ARRAY_SIZE,
&n_hit_result, state);
@@ -3774,6 +3785,14 @@ TEST_F(NOTLogic, ScanNotIP) {
&n_hit_result, state);
EXPECT_EQ(ret, MAAT_SCAN_OK);
+ maat_state_reset(state);
+
+ // scan string_should_hit(HTTP_URL) & not hit ip(VIRTUAL_IP_CONFIG) => hit compile145
+ ret = maat_scan_string(maat_inst, hit_table_id, string_should_hit,
+ strlen(string_should_hit), results, ARRAY_SIZE,
+ &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_HALF_HIT);
+
inet_pton(AF_INET, "10.1.0.0", &sip);
ret = maat_scan_ipv4(maat_inst, not_hit_table_id, sip, port, proto,
results, ARRAY_SIZE, &n_hit_result, state);
@@ -3805,15 +3824,12 @@ TEST_F(NOTLogic, ScanNotWithDistrict) {
int url_table_id = maat_get_table_id(maat_inst, url_table_name);
ASSERT_GT(url_table_id, 0);
+ // scan string1(HTTP_URL) & string2(HTTP_REQUEST_HEADER) => not hit compile
int ret = maat_scan_string(maat_inst, url_table_id, string1,
strlen(string1), results, ARRAY_SIZE,
&n_hit_result, state);
EXPECT_EQ(ret, MAAT_SCAN_HALF_HIT);
- ret = maat_scan_not_logic(maat_inst, url_table_id, results, ARRAY_SIZE,
- &n_hit_result, state);
- EXPECT_EQ(ret, MAAT_SCAN_OK);
-
int virtual_table_id = maat_get_table_id(maat_inst, virtual_table_name);
ASSERT_GT(virtual_table_id, 0);
@@ -3829,6 +3845,18 @@ TEST_F(NOTLogic, ScanNotWithDistrict) {
&n_hit_result, state);
EXPECT_EQ(ret, MAAT_SCAN_OK);
+ maat_state_reset(state);
+
+ // scan string1(HTTP_URL) & string3(HTTP_REQUEST_HEADER) => hit compile221
+ ret = maat_scan_string(maat_inst, url_table_id, string1,
+ strlen(string1), results, ARRAY_SIZE,
+ &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_HALF_HIT);
+
+ ret = maat_state_set_scan_district(state, virtual_table_id, district_str1,
+ strlen(district_str1));
+ ASSERT_EQ(ret, 0);
+
ret = maat_scan_string(maat_inst, virtual_table_id, string3, strlen(string3),
results, ARRAY_SIZE, &n_hit_result, state);
EXPECT_EQ(ret, MAAT_SCAN_OK);
@@ -3860,6 +3888,7 @@ TEST_F(NOTLogic, NotUrlAndNotIp) {
int url_table_id = maat_get_table_id(maat_inst, url_table_name);
ASSERT_GT(url_table_id, 0);
+ //scan string_should_half_hit(HTTP_URL_FILTER) & hit ip(VIRTUAL_IP_CONFIG) => not hit compile
int ret = maat_scan_string(maat_inst, url_table_id, string_should_half_hit,
strlen(string_should_half_hit), results, ARRAY_SIZE,
&n_hit_result, state);
@@ -3870,7 +3899,7 @@ TEST_F(NOTLogic, NotUrlAndNotIp) {
EXPECT_EQ(ret, MAAT_SCAN_OK);
uint32_t sip;
- inet_pton(AF_INET, "10.1.0.0", &sip);
+ inet_pton(AF_INET, "10.0.6.201", &sip);
uint16_t port = htons(50001);
int proto = 6;
@@ -3879,12 +3908,15 @@ TEST_F(NOTLogic, NotUrlAndNotIp) {
ret = maat_scan_ipv4(maat_inst, ip_table_id, sip, port, proto,
results, ARRAY_SIZE, &n_hit_result, state);
- EXPECT_EQ(ret, MAAT_SCAN_OK);
+ EXPECT_EQ(ret, MAAT_SCAN_HALF_HIT);
ret = maat_scan_not_logic(maat_inst, ip_table_id, results, ARRAY_SIZE,
&n_hit_result, state);
EXPECT_EQ(ret, MAAT_SCAN_OK);
+ maat_state_reset(state);
+
+ // scan string_should_half_hit(HTTP_RESPONSE_KEYWORDS) & not hit ip(VIRTUAL_IP_CONFIG) => not hit compile
int http_table_id = maat_get_table_id(maat_inst, http_table_name);
ASSERT_GT(http_table_id, 0);
@@ -3897,6 +3929,23 @@ TEST_F(NOTLogic, NotUrlAndNotIp) {
&n_hit_result, state);
EXPECT_EQ(ret, MAAT_SCAN_OK);
+ inet_pton(AF_INET, "10.1.0.0", &sip);
+ ret = maat_scan_ipv4(maat_inst, ip_table_id, sip, port, proto,
+ results, ARRAY_SIZE, &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_OK);
+
+ ret = maat_scan_not_logic(maat_inst, ip_table_id, results, ARRAY_SIZE,
+ &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_OK);
+
+ maat_state_reset(state);
+
+ // scan scan string_should_half_hit(HTTP_URL_FILTER) & not hit ip(VIRTUAL_IP_CONFIG) => hit compile146
+ ret = maat_scan_string(maat_inst, url_table_id, string_should_half_hit,
+ strlen(string_should_half_hit), results, ARRAY_SIZE,
+ &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_HALF_HIT);
+
ret = maat_scan_string(maat_inst, http_table_id, string_nothing,
strlen(string_nothing), results, ARRAY_SIZE,
&n_hit_result, state);
@@ -3904,6 +3953,15 @@ TEST_F(NOTLogic, NotUrlAndNotIp) {
ret = maat_scan_not_logic(maat_inst, http_table_id, results, ARRAY_SIZE,
&n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_OK);
+
+ inet_pton(AF_INET, "10.1.0.0", &sip);
+ ret = maat_scan_ipv4(maat_inst, ip_table_id, sip, port, proto,
+ results, ARRAY_SIZE, &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_OK);
+
+ ret = maat_scan_not_logic(maat_inst, ip_table_id, results, ARRAY_SIZE,
+ &n_hit_result, state);
EXPECT_EQ(ret, MAAT_SCAN_HIT);
EXPECT_EQ(n_hit_result, 1);
EXPECT_EQ(results[0], 146);
@@ -3930,6 +3988,7 @@ TEST_F(NOTLogic, NotPhysicalTable) {
int vtable_id = maat_get_table_id(maat_inst, vtable_name);
ASSERT_GT(vtable_id, 0);
+ // scan hit string1(KEYWORDS_TABLE) & hit string2(HTTP_RESPONSE_KEYWORDS) => not hit compile
int ret = maat_scan_string(maat_inst, phy_table_id, string1,
strlen(string1), results, ARRAY_SIZE,
&n_hit_result, state);
@@ -3943,17 +4002,20 @@ TEST_F(NOTLogic, NotPhysicalTable) {
results, ARRAY_SIZE, &n_hit_result, state);
EXPECT_EQ(ret, MAAT_SCAN_HALF_HIT);
- ret = maat_scan_not_logic(maat_inst, vtable_id, results, ARRAY_SIZE,
- &n_hit_result, state);
- EXPECT_EQ(ret, MAAT_SCAN_OK);
+ maat_state_reset(state);
+ //scan not hit string1(KEYWORDS_TABLE) & hit string2(HTTP_RESPONSE_KEYWORDS) => hit compile224
ret = maat_scan_string(maat_inst, phy_table_id, string3, strlen(string3),
results, ARRAY_SIZE, &n_hit_result, state);
EXPECT_EQ(ret, MAAT_SCAN_OK);
ret = maat_scan_not_logic(maat_inst, phy_table_id, results, ARRAY_SIZE,
&n_hit_result, state);
- EXPECT_EQ(ret, MAAT_SCAN_HIT);
+ EXPECT_EQ(ret, MAAT_SCAN_OK);
+
+ ret = maat_scan_string(maat_inst, vtable_id, string2, strlen(string2),
+ results, ARRAY_SIZE, &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_HIT);
EXPECT_EQ(n_hit_result, 1);
EXPECT_EQ(results[0], 224);
@@ -4191,53 +4253,459 @@ TEST_F(NOTLogic, NotClauseAndExcludeGroup2) {
state = NULL;
}
-TEST_F(NOTLogic, SameClauseHasMultiNotGroups) {
- const char *not_string1 = "This string ONLY contains not_logic_compile_222_1";
- const char *not_string2 = "This string ONLY contains not_logic_compile_222_2";
- const char *string3 = "This string contain logic_compile_222_3";
+TEST_F(NOTLogic, SingleNotClause) {
+ const char *string_nothing = "nothing string";
+ const char *string_should_hit = "string has not_logic_keywords_222";
+ const char *table_name = "HTTP_NOT_LOGIC_1";
+ long long results[ARRAY_SIZE] = {0};
+ size_t n_hit_result = 0;
+ int thread_id = 0;
+ struct maat *maat_inst = NOTLogic::_shared_maat_inst;
+ struct maat_state *state = maat_state_new(maat_inst, thread_id);
+
+ int table_id = maat_get_table_id(maat_inst, table_name);
+ ASSERT_GT(table_id, 0);
+
+ //string_should_hit(HTTP_NOT_LOGIC_1) => not hit compile
+ int ret = maat_scan_string(maat_inst, table_id, string_should_hit,
+ strlen(string_should_hit), results, ARRAY_SIZE,
+ &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_HALF_HIT);
+
+ ret = maat_scan_not_logic(maat_inst, table_id, results, ARRAY_SIZE,
+ &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_OK);
+
+ maat_state_reset(state);
+
+ //string nothing(HTTP_NOT_LOGIC_1) => hit compile222
+ ret = maat_scan_string(maat_inst, table_id, string_nothing, strlen(string_nothing),
+ results, ARRAY_SIZE, &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_OK);
+
+ ret = maat_scan_not_logic(maat_inst, table_id, results, ARRAY_SIZE,
+ &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_HIT);
+ EXPECT_EQ(n_hit_result, 1);
+ EXPECT_EQ(results[0], 222);
+
+ maat_state_free(state);
+ state = NULL;
+}
+
+TEST_F(NOTLogic, MultiNotClauses) {
+ const char *string_nothing = "nothing string";
+ const char *string1 = "string has not_logic_compile_223_1";
+ const char *string2 = "string has not_logic_compile_223_1";
+ const char *string3 = "string has not_logic_compile_223_1";
+ const char *table_name = "HTTP_NOT_LOGIC";
long long results[ARRAY_SIZE] = {0};
size_t n_hit_result = 0;
int thread_id = 0;
- const char *table_name = "HTTP_URL_FILTER";
struct maat *maat_inst = NOTLogic::_shared_maat_inst;
struct maat_state *state = maat_state_new(maat_inst, thread_id);
int table_id = maat_get_table_id(maat_inst, table_name);
ASSERT_GT(table_id, 0);
- int ret = maat_scan_string(maat_inst, table_id, not_string1, strlen(not_string1),
+ // compile223 = !string1 & !string2 & !string3
+ //Case1: scan string1 & !string2 & !string3
+ int ret = maat_scan_string(maat_inst, table_id, string1, strlen(string1),
results, ARRAY_SIZE, &n_hit_result, state);
EXPECT_EQ(ret, MAAT_SCAN_HALF_HIT);
+ ret = maat_scan_string(maat_inst, table_id, string_nothing, strlen(string_nothing),
+ results, ARRAY_SIZE, &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_OK);
+
+ ret = maat_scan_not_logic(maat_inst, table_id, results, ARRAY_SIZE,
+ &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_OK);
+
+ maat_state_reset(state);
+
+ //Case2: scan !string1 & string2 & !string3
+ ret = maat_scan_string(maat_inst, table_id, string_nothing, strlen(string_nothing),
+ results, ARRAY_SIZE, &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_OK);
+
+ ret = maat_scan_string(maat_inst, table_id, string2, strlen(string2),
+ results, ARRAY_SIZE, &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_HALF_HIT);
+
+ ret = maat_scan_not_logic(maat_inst, table_id, results, ARRAY_SIZE,
+ &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_OK);
+
+ maat_state_reset(state);
+
+ //Case3: scan !string1 & !string2 & string3
+ ret = maat_scan_string(maat_inst, table_id, string_nothing, strlen(string_nothing),
+ results, ARRAY_SIZE, &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_OK);
+
ret = maat_scan_string(maat_inst, table_id, string3, strlen(string3),
results, ARRAY_SIZE, &n_hit_result, state);
EXPECT_EQ(ret, MAAT_SCAN_HALF_HIT);
ret = maat_scan_not_logic(maat_inst, table_id, results, ARRAY_SIZE,
&n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_OK);
+
+ maat_state_reset(state);
+
+ //Case4: scan !string1 & !string2 & !string3
+ ret = maat_scan_string(maat_inst, table_id, string_nothing, strlen(string_nothing),
+ results, ARRAY_SIZE, &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_OK);
+
+ ret = maat_scan_not_logic(maat_inst, table_id, results, ARRAY_SIZE,
+ &n_hit_result, state);
EXPECT_EQ(ret, MAAT_SCAN_HIT);
EXPECT_EQ(n_hit_result, 1);
- EXPECT_EQ(results[0], 222);
+ EXPECT_EQ(results[0], 223);
+
+ maat_state_free(state);
+ state = NULL;
+}
+
+TEST_F(NOTLogic, MultiGroupsInOneNotClause) {
+ const char *src_asn1 = "AS1234";
+ const char *src_asn2 = "AS6789";
+ const char *src_asn3 = "AS9001";
+ const char *src_asn_nothing = "nothing string";
+ const char *dst_asn = "AS2345";
+ const char *src_asn_table_name = "ASN_NOT_LOGIC";
+ const char *dst_asn_table_name = "DESTINATION_IP_ASN";
+ long long results[ARRAY_SIZE] = {0};
+ size_t n_hit_result = 0;
+ int thread_id = 0;
+ struct maat *maat_inst = NOTLogic::_shared_maat_inst;
+ struct maat_state *state = maat_state_new(maat_inst, thread_id);
+
+ //--------------------------------------
+ // Source ASN1 & Dest ASN => not hit compile
+ //--------------------------------------
+ int src_table_id = maat_get_table_id(maat_inst, src_asn_table_name);
+ ASSERT_GT(src_table_id, 0);
+
+ int ret = maat_scan_string(maat_inst, src_table_id, src_asn1, strlen(src_asn1),
+ results, ARRAY_SIZE, &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_HALF_HIT);
+
+ ret = maat_scan_not_logic(maat_inst, src_table_id, results, ARRAY_SIZE,
+ &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_OK);
+
+ int dst_table_id = maat_get_table_id(maat_inst, dst_asn_table_name);
+ ASSERT_GT(dst_table_id, 0);
+
+ ret = maat_scan_string(maat_inst, dst_table_id, dst_asn, strlen(dst_asn),
+ results, ARRAY_SIZE, &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_HALF_HIT);
maat_state_reset(state);
- ret = maat_scan_string(maat_inst, table_id, not_string1, strlen(not_string1),
+ //--------------------------------------
+ // Source ASN2 & Dest ASN => not hit compile
+ //--------------------------------------
+ ret = maat_scan_string(maat_inst, src_table_id, src_asn2, strlen(src_asn2),
+ results, ARRAY_SIZE, &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_HALF_HIT);
+
+ ret = maat_scan_not_logic(maat_inst, src_table_id, results, ARRAY_SIZE,
+ &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_OK);
+
+ ret = maat_scan_string(maat_inst, dst_table_id, dst_asn, strlen(dst_asn),
results, ARRAY_SIZE, &n_hit_result, state);
EXPECT_EQ(ret, MAAT_SCAN_HALF_HIT);
- ret = maat_scan_string(maat_inst, table_id, not_string2, strlen(not_string2),
+ maat_state_reset(state);
+
+ //--------------------------------------
+ // Source ASN3 & Dest ASN => not hit compile
+ //--------------------------------------
+ ret = maat_scan_string(maat_inst, src_table_id, src_asn3, strlen(src_asn3),
results, ARRAY_SIZE, &n_hit_result, state);
EXPECT_EQ(ret, MAAT_SCAN_HALF_HIT);
- ret = maat_scan_string(maat_inst, table_id, string3, strlen(string3),
+ ret = maat_scan_not_logic(maat_inst, src_table_id, results, ARRAY_SIZE,
+ &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_OK);
+
+ ret = maat_scan_string(maat_inst, dst_table_id, dst_asn, strlen(dst_asn),
results, ARRAY_SIZE, &n_hit_result, state);
EXPECT_EQ(ret, MAAT_SCAN_HALF_HIT);
- ret = maat_scan_not_logic(maat_inst, table_id, results, ARRAY_SIZE,
+ maat_state_reset(state);
+
+ // Source nothing & Dest ASN => hit compile177
+ ret = maat_scan_string(maat_inst, src_table_id, src_asn_nothing,
+ strlen(src_asn_nothing),results, ARRAY_SIZE,
+ &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_OK);
+
+ ret = maat_scan_not_logic(maat_inst, src_table_id, results, ARRAY_SIZE,
&n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_OK);
+
+ ret = maat_scan_string(maat_inst, dst_table_id, dst_asn, strlen(dst_asn),
+ results, ARRAY_SIZE, &n_hit_result, state);
EXPECT_EQ(ret, MAAT_SCAN_HIT);
EXPECT_EQ(n_hit_result, 1);
- EXPECT_EQ(results[0], 222);
+ EXPECT_EQ(results[0], 177);
+
+ maat_state_free(state);
+ state = NULL;
+}
+
+TEST_F(NOTLogic, MultiLiteralsInOneNotClause) {
+ const char *src_asn1 = "AS1234";
+ const char *src_asn2 = "AS6789";
+ const char *src_nothing = "nothing";
+ const char *my_county = "Greece.Sparta";
+ const char *ip_table_name = "IP_PLUS_CONFIG";
+ const char *src_asn_table_name = "SOURCE_IP_ASN";
+ const char *ip_geo_table_name = "SOURCE_IP_GEO";
+ long long results[ARRAY_SIZE] = {0};
+ size_t n_hit_result = 0;
+ int thread_id = 0;
+ struct maat *maat_inst = NOTLogic::_shared_maat_inst;
+ struct maat_state *state = maat_state_new(maat_inst, thread_id);
+
+ int src_table_id = maat_get_table_id(maat_inst, src_asn_table_name);
+ ASSERT_GT(src_table_id, 0);
+
+ int ip_geo_table_id = maat_get_table_id(maat_inst, ip_geo_table_name);
+ ASSERT_GT(ip_geo_table_id, 0);
+
+ int ip_table_id = maat_get_table_id(maat_inst, ip_table_name);
+ ASSERT_GT(ip_table_id, 0);
+
+ //-------------------------------------------
+ // Source ASN1 & IP Geo
+ //-------------------------------------------
+ int ret = maat_scan_string(maat_inst, src_table_id, src_asn1, strlen(src_asn1),
+ results, ARRAY_SIZE, &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_HALF_HIT);
+
+ ret = maat_scan_string(maat_inst, ip_geo_table_id, my_county, strlen(my_county),
+ results, ARRAY_SIZE, &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_HALF_HIT);
+
+ ret = maat_scan_not_logic(maat_inst, src_table_id, results, ARRAY_SIZE,
+ &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_OK);
+
+ maat_state_reset(state);
+
+ //-------------------------------------------
+ // Source nothing & IP Geo
+ //-------------------------------------------
+ ret = maat_scan_string(maat_inst, src_table_id, src_nothing, strlen(src_nothing),
+ results, ARRAY_SIZE, &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_OK);
+
+ ret = maat_scan_string(maat_inst, ip_geo_table_id, my_county, strlen(my_county),
+ results, ARRAY_SIZE, &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_HALF_HIT);
+
+ ret = maat_scan_not_logic(maat_inst, src_table_id, results, ARRAY_SIZE,
+ &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_HIT);
+ EXPECT_EQ(n_hit_result, 1);
+ EXPECT_EQ(results[0], 181);
+
+ maat_state_reset(state);
+
+ //-------------------------------------------
+ // Source ASN2 & IP Geo
+ //-------------------------------------------
+ ret = maat_scan_string(maat_inst, src_table_id, src_asn2, strlen(src_asn2),
+ results, ARRAY_SIZE, &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_HALF_HIT);
+
+ ret = maat_scan_string(maat_inst, ip_geo_table_id, my_county, strlen(my_county),
+ results, ARRAY_SIZE, &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_HALF_HIT);
+
+ ret = maat_scan_not_logic(maat_inst, src_table_id, results, ARRAY_SIZE,
+ &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_OK);
+
+ maat_state_reset(state);
+
+ //--------------------------------------
+ // hit IP & IP Geo
+ //--------------------------------------
+ uint32_t ip_addr;
+ inet_pton(AF_INET, "192.168.40.88", &ip_addr);
+ uint16_t port = htons(8888);
+ ret = maat_scan_ipv4(maat_inst, ip_table_id, ip_addr, port, 6,
+ results, ARRAY_SIZE, &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_HALF_HIT);
+
+ ret = maat_scan_string(maat_inst, ip_geo_table_id, my_county, strlen(my_county),
+ results, ARRAY_SIZE, &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_HALF_HIT);
+
+ ret = maat_scan_not_logic(maat_inst, ip_table_id, results, ARRAY_SIZE,
+ &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_OK);
+
+ maat_state_reset(state);
+
+ //--------------------------------------
+ // not hit IP & IP Geo
+ //--------------------------------------
+ inet_pton(AF_INET, "192.168.40.89", &ip_addr);
+
+ ret = maat_scan_ipv4(maat_inst, ip_table_id, ip_addr, port, 6,
+ results, ARRAY_SIZE, &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_OK);
+
+ ret = maat_scan_string(maat_inst, ip_geo_table_id, my_county, strlen(my_county),
+ results, ARRAY_SIZE, &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_HALF_HIT);
+
+ ret = maat_scan_not_logic(maat_inst, ip_table_id, results, ARRAY_SIZE,
+ &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_HIT);
+ EXPECT_EQ(n_hit_result, 1);
+ EXPECT_EQ(results[0], 181);
+
+ maat_state_free(state);
+ state = NULL;
+}
+
+TEST_F(NOTLogic, SameVtableInMultiClause) {
+ const char *src_asn1 = "AS1234";
+ const char *src_asn2 = "AS9002";
+ const char *src_asn3 = "AS9003";
+ const char *my_county = "Greece.Sparta";
+ const char *ip_table_name = "IP_PLUS_CONFIG";
+ const char *dst_asn_table_name = "DESTINATION_IP_ASN";
+ const char *ip_geo_table_name = "SOURCE_IP_GEO";
+ long long results[ARRAY_SIZE] = {0};
+ size_t n_hit_result = 0;
+ int thread_id = 0;
+ struct maat *maat_inst = NOTLogic::_shared_maat_inst;
+ struct maat_state *state = maat_state_new(maat_inst, thread_id);
+
+ int dst_table_id = maat_get_table_id(maat_inst, dst_asn_table_name);
+ ASSERT_GT(dst_table_id, 0);
+
+ int ip_geo_table_id = maat_get_table_id(maat_inst, ip_geo_table_name);
+ ASSERT_GT(ip_geo_table_id, 0);
+
+ int ip_table_id = maat_get_table_id(maat_inst, ip_table_name);
+ ASSERT_GT(ip_table_id, 0);
+
+ uint32_t ip_addr;
+ inet_pton(AF_INET, "192.168.40.88", &ip_addr);
+ uint16_t port = htons(8888);
+ //-------------------------------------------
+ // Dest ASN1 & Dest ASN3 & IP Config
+ //-------------------------------------------
+ int ret = maat_scan_string(maat_inst, dst_table_id, src_asn1, strlen(src_asn1),
+ results, ARRAY_SIZE, &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_HALF_HIT);
+
+ ret = maat_scan_string(maat_inst, dst_table_id, src_asn3, strlen(src_asn3),
+ results, ARRAY_SIZE, &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_HALF_HIT);
+
+ ret = maat_scan_ipv4(maat_inst, ip_table_id, ip_addr, port, 6,
+ results, ARRAY_SIZE, &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_HALF_HIT);
+
+ ret = maat_scan_not_logic(maat_inst, dst_table_id, results, ARRAY_SIZE,
+ &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_OK);
+
+ maat_state_reset(state);
+
+ //-------------------------------------------
+ // Dest ASN2 & Dest ASN3 & IP Config
+ //-------------------------------------------
+ ret = maat_scan_string(maat_inst, dst_table_id, src_asn2, strlen(src_asn2),
+ results, ARRAY_SIZE, &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_HALF_HIT);
+
+ ret = maat_scan_string(maat_inst, dst_table_id, src_asn3, strlen(src_asn3),
+ results, ARRAY_SIZE, &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_HALF_HIT);
+
+ ret = maat_scan_not_logic(maat_inst, dst_table_id, results, ARRAY_SIZE,
+ &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_OK);
+
+ ret = maat_scan_ipv4(maat_inst, ip_table_id, ip_addr, port, 6,
+ results, ARRAY_SIZE, &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_HALF_HIT);
+
+ maat_state_reset(state);
+
+ //-------------------------------------------
+ // Dest IP Geo & Dest ASN3 & IP Config
+ //-------------------------------------------
+ ret = maat_scan_string(maat_inst, ip_geo_table_id, my_county, strlen(my_county),
+ results, ARRAY_SIZE, &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_HALF_HIT);
+
+ ret = maat_scan_not_logic(maat_inst, ip_geo_table_id, results, ARRAY_SIZE,
+ &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_OK);
+
+ ret = maat_scan_string(maat_inst, dst_table_id, src_asn3, strlen(src_asn3),
+ results, ARRAY_SIZE, &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_HALF_HIT);
+
+ ret = maat_scan_not_logic(maat_inst, dst_table_id, results, ARRAY_SIZE,
+ &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_OK);
+
+ ret = maat_scan_ipv4(maat_inst, ip_table_id, ip_addr, port, 6,
+ results, ARRAY_SIZE, &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_HALF_HIT);
+
+ maat_state_reset(state);
+
+ //-------------------------------------------
+ // Dest ASN3 & IP Geo
+ //-------------------------------------------
+ ret = maat_scan_string(maat_inst, dst_table_id, src_asn3, strlen(src_asn3),
+ results, ARRAY_SIZE, &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_HALF_HIT);
+
+ ret = maat_scan_not_logic(maat_inst, dst_table_id, results, ARRAY_SIZE,
+ &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_OK);
+
+ ret = maat_scan_ipv4(maat_inst, ip_table_id, ip_addr, port, 6,
+ results, ARRAY_SIZE, &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_HIT);
+ EXPECT_EQ(n_hit_result, 1);
+ EXPECT_EQ(results[0], 185);
+
+ maat_state_reset(state);
+
+ //--------------------------------------
+ // IP Config & IP Geo
+ //--------------------------------------
+ ret = maat_scan_string(maat_inst, dst_table_id, src_asn3, strlen(src_asn3),
+ results, ARRAY_SIZE, &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_HALF_HIT);
+
+ inet_pton(AF_INET, "192.168.40.89", &ip_addr);
+ ret = maat_scan_ipv4(maat_inst, ip_table_id, ip_addr, port, 6,
+ results, ARRAY_SIZE, &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_OK);
+
+ ret = maat_scan_not_logic(maat_inst, dst_table_id, results, ARRAY_SIZE,
+ &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_OK);
maat_state_free(state);
state = NULL;
@@ -6353,13 +6821,13 @@ TEST_F(HierarchyTest, OneGroupInTwoVirtual) {
state = NULL;
}
-TEST_F(HierarchyTest, TwoVirtualInOneClause) {
- const char *src_asn = "AS1234", *dst_asn = "AS2345";
- const char *my_county = "Greece.Sparta";
+TEST_F(HierarchyTest, MultiGroupsInOneClause) {
+ const char *src_asn1 = "AS1234";
+ const char *src_asn2 = "AS6789";
+ const char *src_asn3 = "AS9001";
+ const char *dst_asn = "AS2345";
const char *src_asn_table_name = "SOURCE_IP_ASN";
const char *dst_asn_table_name = "DESTINATION_IP_ASN";
- const char *ip_table_name = "IP_CONFIG";
- const char *src_ip_geo_table_name = "SOURCE_IP_GEO";
long long results[ARRAY_SIZE] = {0};
size_t n_hit_result = 0;
int thread_id = 0;
@@ -6367,91 +6835,75 @@ TEST_F(HierarchyTest, TwoVirtualInOneClause) {
struct maat_state *state = maat_state_new(maat_inst, thread_id);
//--------------------------------------
- // Source ASN & Dest ASN
+ // Source ASN1 & Dest ASN
//--------------------------------------
- int table_id = maat_get_table_id(maat_inst, src_asn_table_name);
- ASSERT_GT(table_id, 0);
+ int src_table_id = maat_get_table_id(maat_inst, src_asn_table_name);
+ ASSERT_GT(src_table_id, 0);
- int ret = maat_scan_string(maat_inst, table_id, src_asn, strlen(src_asn),
+ int ret = maat_scan_string(maat_inst, src_table_id, src_asn1, strlen(src_asn1),
results, ARRAY_SIZE, &n_hit_result, state);
EXPECT_EQ(ret, MAAT_SCAN_HALF_HIT);
- ret = maat_scan_not_logic(maat_inst, table_id, results, ARRAY_SIZE,
+ ret = maat_scan_not_logic(maat_inst, src_table_id, results, ARRAY_SIZE,
&n_hit_result, state);
EXPECT_EQ(ret, MAAT_SCAN_OK);
- table_id = maat_get_table_id(maat_inst, dst_asn_table_name);
- ASSERT_GT(table_id, 0);
+ int dst_table_id = maat_get_table_id(maat_inst, dst_asn_table_name);
+ ASSERT_GT(dst_table_id, 0);
- ret = maat_scan_string(maat_inst, table_id, dst_asn, strlen(dst_asn),
+ ret = maat_scan_string(maat_inst, dst_table_id, dst_asn, strlen(dst_asn),
results, ARRAY_SIZE, &n_hit_result, state);
EXPECT_EQ(ret, MAAT_SCAN_HIT);
EXPECT_EQ(n_hit_result, 1);
EXPECT_EQ(results[0], 178);
- ret = maat_scan_not_logic(maat_inst, table_id, results, ARRAY_SIZE,
+ ret = maat_scan_not_logic(maat_inst, dst_table_id, results, ARRAY_SIZE,
&n_hit_result, state);
EXPECT_EQ(ret, MAAT_SCAN_OK);
maat_state_reset(state);
//--------------------------------------
- // Source IP & Dest ASN
+ // Source ASN2 & Dest ASN
//--------------------------------------
- table_id = maat_get_table_id(maat_inst, ip_table_name);
- ASSERT_GT(table_id, 0);
-
- uint32_t ip_addr;
- inet_pton(AF_INET, "192.168.40.88", &ip_addr);
- uint16_t port = htons(8888);
-
- ret = maat_scan_ipv4(maat_inst, table_id, ip_addr, port, 6,
- results, ARRAY_SIZE, &n_hit_result, state);
+ ret = maat_scan_string(maat_inst, src_table_id, src_asn2, strlen(src_asn2),
+ results, ARRAY_SIZE, &n_hit_result, state);
EXPECT_EQ(ret, MAAT_SCAN_HALF_HIT);
- ret = maat_scan_not_logic(maat_inst, table_id, results, ARRAY_SIZE,
+ ret = maat_scan_not_logic(maat_inst, src_table_id, results, ARRAY_SIZE,
&n_hit_result, state);
EXPECT_EQ(ret, MAAT_SCAN_OK);
- table_id = maat_get_table_id(maat_inst, dst_asn_table_name);
- ASSERT_GT(table_id, 0);
-
- ret = maat_scan_string(maat_inst, table_id, dst_asn, strlen(dst_asn),
+ ret = maat_scan_string(maat_inst, dst_table_id, dst_asn, strlen(dst_asn),
results, ARRAY_SIZE, &n_hit_result, state);
EXPECT_EQ(ret, MAAT_SCAN_HIT);
EXPECT_EQ(n_hit_result, 1);
EXPECT_EQ(results[0], 178);
- ret = maat_scan_not_logic(maat_inst, table_id, results, ARRAY_SIZE,
+ ret = maat_scan_not_logic(maat_inst, dst_table_id, results, ARRAY_SIZE,
&n_hit_result, state);
EXPECT_EQ(ret, MAAT_SCAN_OK);
maat_state_reset(state);
//--------------------------------------
- // Source Geo & Dest ASN
+ // Source ASN3 & Dest ASN
//--------------------------------------
- table_id = maat_get_table_id(maat_inst, src_ip_geo_table_name);
- ASSERT_GT(table_id, 0);
-
- ret = maat_scan_string(maat_inst, table_id, my_county, strlen(my_county),
+ ret = maat_scan_string(maat_inst, src_table_id, src_asn3, strlen(src_asn3),
results, ARRAY_SIZE, &n_hit_result, state);
EXPECT_EQ(ret, MAAT_SCAN_HALF_HIT);
- ret = maat_scan_not_logic(maat_inst, table_id, results, ARRAY_SIZE,
+ ret = maat_scan_not_logic(maat_inst, src_table_id, results, ARRAY_SIZE,
&n_hit_result, state);
EXPECT_EQ(ret, MAAT_SCAN_OK);
- table_id = maat_get_table_id(maat_inst, dst_asn_table_name);
- ASSERT_GT(table_id, 0);
-
- ret = maat_scan_string(maat_inst, table_id, dst_asn, strlen(dst_asn),
+ ret = maat_scan_string(maat_inst, dst_table_id, dst_asn, strlen(dst_asn),
results, ARRAY_SIZE, &n_hit_result, state);
EXPECT_EQ(ret, MAAT_SCAN_HIT);
EXPECT_EQ(n_hit_result, 1);
EXPECT_EQ(results[0], 178);
- ret = maat_scan_not_logic(maat_inst, table_id, results, ARRAY_SIZE,
+ ret = maat_scan_not_logic(maat_inst, dst_table_id, results, ARRAY_SIZE,
&n_hit_result, state);
EXPECT_EQ(ret, MAAT_SCAN_OK);
@@ -6459,6 +6911,84 @@ TEST_F(HierarchyTest, TwoVirtualInOneClause) {
state = NULL;
}
+TEST_F(HierarchyTest, MultiLiteralsInOneClause) {
+ const char *src_asn1 = "AS1234";
+ const char *src_asn2 = "AS6789";
+ const char *my_county = "Greece.Sparta";
+ const char *ip_table_name = "IP_CONFIG";
+ const char *src_asn_table_name = "SOURCE_IP_ASN";
+ const char *ip_geo_table_name = "SOURCE_IP_GEO";
+ long long results[ARRAY_SIZE] = {0};
+ size_t n_hit_result = 0;
+ int thread_id = 0;
+ struct maat *maat_inst = HierarchyTest::_shared_maat_inst;
+ struct maat_state *state = maat_state_new(maat_inst, thread_id);
+
+ int src_table_id = maat_get_table_id(maat_inst, src_asn_table_name);
+ ASSERT_GT(src_table_id, 0);
+
+ int ip_geo_table_id = maat_get_table_id(maat_inst, ip_geo_table_name);
+ ASSERT_GT(ip_geo_table_id, 0);
+
+ int ip_table_id = maat_get_table_id(maat_inst, ip_table_name);
+ ASSERT_GT(ip_table_id, 0);
+
+ //--------------------------------------
+ // Source ASN1 & IP
+ //--------------------------------------
+
+ int ret = maat_scan_string(maat_inst, src_table_id, src_asn1, strlen(src_asn1),
+ results, ARRAY_SIZE, &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_HALF_HIT);
+
+ uint32_t ip_addr;
+ inet_pton(AF_INET, "192.168.40.88", &ip_addr);
+ uint16_t port = htons(8888);
+
+ ret = maat_scan_ipv4(maat_inst, ip_table_id, ip_addr, port, 6,
+ results, ARRAY_SIZE, &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_HIT);
+ EXPECT_EQ(n_hit_result, 1);
+ EXPECT_EQ(results[0], 180);
+
+ maat_state_reset(state);
+
+ //--------------------------------------
+ // IP Geo & IP
+ //--------------------------------------
+ ret = maat_scan_string(maat_inst, ip_geo_table_id, my_county, strlen(my_county),
+ results, ARRAY_SIZE, &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_HALF_HIT);
+
+ ret = maat_scan_ipv4(maat_inst, ip_table_id, ip_addr, port, 6,
+ results, ARRAY_SIZE, &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_HIT);
+ EXPECT_EQ(n_hit_result, 1);
+ EXPECT_EQ(results[0], 180);
+
+ maat_state_reset(state);
+
+ //--------------------------------------
+ // (Source ASN2 | IP Geo) & IP
+ //--------------------------------------
+ ret = maat_scan_string(maat_inst, src_table_id, src_asn2, strlen(src_asn2),
+ results, ARRAY_SIZE, &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_HALF_HIT);
+
+ ret = maat_scan_string(maat_inst, ip_geo_table_id, my_county, strlen(my_county),
+ results, ARRAY_SIZE, &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_HALF_HIT);
+
+ ret = maat_scan_ipv4(maat_inst, ip_table_id, ip_addr, port, 6,
+ results, ARRAY_SIZE, &n_hit_result, state);
+ EXPECT_EQ(ret, MAAT_SCAN_HIT);
+ EXPECT_EQ(n_hit_result, 1);
+ EXPECT_EQ(results[0], 180);
+
+ maat_state_free(state);
+ state = NULL;
+}
+
class MaatCmdTest : public testing::Test
{
protected:
diff --git a/test/maat_json.json b/test/maat_json.json
index ee64e62..b46c944 100644
--- a/test/maat_json.json
+++ b/test/maat_json.json
@@ -36,34 +36,30 @@
]
},
{
- "group_name": "financial-department-ip",
+ "group_name": "ASN6789",
"group_id": 3,
"regions": [
{
- "table_name": "IP_CONFIG",
- "table_type": "ip_plus",
+ "table_name": "AS_NUMBER",
+ "table_type": "expr",
"table_content": {
- "addr_type": "ipv4",
- "addr_format": "mask",
- "ip1": "192.168.40.88",
- "ip2": "255.255.255.255",
- "port_format": "range",
- "port1": "0",
- "port2": "65535",
- "protocol": 6
+ "keywords": "AS6789",
+ "expr_type": "none",
+ "match_method": "exact",
+ "format": "uncase plain"
}
}
]
},
{
- "group_name": "Country-Sparta-IP",
+ "group_name": "ASN9001",
"group_id": 4,
"regions": [
{
- "table_name": "GeoLocation",
+ "table_name": "AS_NUMBER",
"table_type": "expr",
"table_content": {
- "keywords": "Greece.Sparta",
+ "keywords": "AS9001",
"expr_type": "none",
"match_method": "exact",
"format": "uncase plain"
@@ -72,10 +68,42 @@
]
},
{
- "group_name": "IPv4-composition-source-only",
+ "group_name": "ASN9002",
"group_id": 5,
"regions": [
{
+ "table_name": "AS_NUMBER",
+ "table_type": "expr",
+ "table_content": {
+ "keywords": "AS9002",
+ "expr_type": "none",
+ "match_method": "exact",
+ "format": "uncase plain"
+ }
+ }
+ ]
+ },
+ {
+ "group_name": "ASN9003",
+ "group_id": 6,
+ "regions": [
+ {
+ "table_name": "AS_NUMBER",
+ "table_type": "expr",
+ "table_content": {
+ "keywords": "AS9003",
+ "expr_type": "none",
+ "match_method": "exact",
+ "format": "uncase plain"
+ }
+ }
+ ]
+ },
+ {
+ "group_name": "IPv4-composition-source-only",
+ "group_id": 7,
+ "regions": [
+ {
"table_type": "ip_plus",
"table_name": "IP_PLUS_CONFIG",
"table_content": {
@@ -93,7 +121,7 @@
},
{
"group_name": "FQDN_OBJ1",
- "group_id": 6,
+ "group_id": 8,
"regions": [
{
"table_name": "KEYWORDS_TABLE",
@@ -109,7 +137,7 @@
},
{
"group_name": "FQDN_CAT1",
- "group_id": 7,
+ "group_id": 9,
"regions": [
{
"table_name": "INTERGER_PLUS",
@@ -124,7 +152,7 @@
},
{
"group_name": "IPv4-composition-NOT-client-ip",
- "group_id": 8,
+ "group_id": 10,
"regions": [
{
"table_type": "ip_plus",
@@ -144,7 +172,7 @@
},
{
"group_name": "IPv4-composition-NOT-server-ip",
- "group_id": 9,
+ "group_id": 11,
"regions": [
{
"table_type": "ip_plus",
@@ -161,6 +189,82 @@
}
}
]
+ },
+ {
+ "group_name": "financial-department-ip",
+ "group_id": 12,
+ "regions": [
+ {
+ "table_name": "IP_CONFIG",
+ "table_type": "ip_plus",
+ "table_content": {
+ "addr_type": "ipv4",
+ "addr_format": "mask",
+ "ip1": "192.168.40.88",
+ "ip2": "255.255.255.255",
+ "port_format": "range",
+ "port1": "0",
+ "port2": "65535",
+ "protocol": 6
+ }
+ }
+ ]
+ },
+ {
+ "group_name": "security-department-ip",
+ "group_id": 13,
+ "regions": [
+ {
+ "table_name": "IP_PLUS_CONFIG",
+ "table_type": "ip_plus",
+ "table_content": {
+ "addr_type": "ipv4",
+ "addr_format": "mask",
+ "ip1": "192.168.40.88",
+ "ip2": "255.255.255.255",
+ "port_format": "range",
+ "port1": "0",
+ "port2": "65535",
+ "protocol": 6
+ }
+ }
+ ]
+ },
+ {
+ "group_name": "develop-department-ip",
+ "group_id": 14,
+ "regions": [
+ {
+ "table_name": "IP_PLUS_CONFIG",
+ "table_type": "ip_plus",
+ "table_content": {
+ "addr_type": "ipv4",
+ "addr_format": "mask",
+ "ip1": "192.168.40.88",
+ "ip2": "255.255.255.255",
+ "port_format": "range",
+ "port1": "0",
+ "port2": "65535",
+ "protocol": 6
+ }
+ }
+ ]
+ },
+ {
+ "group_name": "Country-Sparta-IP",
+ "group_id": 15,
+ "regions": [
+ {
+ "table_name": "GeoLocation",
+ "table_type": "expr",
+ "table_content": {
+ "keywords": "Greece.Sparta",
+ "expr_type": "none",
+ "match_method": "exact",
+ "format": "uncase plain"
+ }
+ }
+ ]
}
],
"rules": [
@@ -176,7 +280,7 @@
{
"virtual_table": "IP_CONFIG",
"group_name": "123_IP_group",
- "group_id": 10,
+ "group_id": 100,
"regions": [
{
"table_name": "IP_CONFIG",
@@ -211,7 +315,7 @@
{
"virtual_table": "HTTP_URL",
"group_name": "123_url_group",
- "group_id": 11,
+ "group_id": 101,
"regions": [
{
"table_name": "HTTP_URL",
@@ -243,7 +347,7 @@
{
"virtual_table": "CONTENT_SIZE",
"group_name": "124_interval_group",
- "group_id": 12,
+ "group_id": 102,
"regions": [
{
"table_name": "CONTENT_SIZE",
@@ -269,7 +373,7 @@
{
"virtual_table":"HTTP_URL",
"group_name": "125_url_group",
- "group_id": 13,
+ "group_id": 103,
"regions": [
{
"table_name": "HTTP_URL",
@@ -297,7 +401,7 @@
{
"virtual_table": "HTTP_URL",
"group_name": "126_url_group",
- "group_id": 14,
+ "group_id": 105,
"regions": [
{
"table_name": "HTTP_URL",
@@ -314,7 +418,7 @@
{
"virtual_table": "CONTENT_SIZE",
"group_name": "126_interval_group",
- "group_id": 15,
+ "group_id": 106,
"regions": [
{
"table_name": "CONTENT_SIZE",
@@ -340,7 +444,7 @@
{
"virtual_table": "HTTP_SIGNATURE",
"group_name": "128_expr_plus_group",
- "group_id": 16,
+ "group_id": 107,
"regions": [
{
"table_name": "HTTP_SIGNATURE",
@@ -369,7 +473,7 @@
{
"virtual_table": "HTTP_URL",
"group_name": "129_url_group",
- "group_id": 17,
+ "group_id": 108,
"regions": [
{
"table_name": "HTTP_URL",
@@ -397,7 +501,7 @@
{
"virtual_table": "KEYWORDS_TABLE",
"group_name": "130_keywords_group",
- "group_id": 18,
+ "group_id": 109,
"regions": [
{
"table_name": "KEYWORDS_TABLE",
@@ -425,7 +529,7 @@
{
"virtual_table": "KEYWORDS_TABLE",
"group_name": "131_keywords_group",
- "group_id": 19,
+ "group_id": 110,
"regions": [
{
"table_name": "KEYWORDS_TABLE",
@@ -453,7 +557,7 @@
{
"virtual_table": "KEYWORDS_TABLE",
"group_name": "TakeMeHome",
- "group_id": 20,
+ "group_id": 111,
"regions": [
{
"table_name": "KEYWORDS_TABLE",
@@ -481,7 +585,7 @@
{
"virtual_table": "HTTP_HOST",
"group_name": "133_host_group",
- "group_id": 21,
+ "group_id": 112,
"regions": [
{
"table_name": "HTTP_HOST",
@@ -509,7 +613,7 @@
{
"virtual_table": "HTTP_URL",
"group_name": "134_url_group",
- "group_id": 22,
+ "group_id": 113,
"regions": [
{
"table_name": "HTTP_URL",
@@ -537,7 +641,7 @@
{
"virtual_table": "IMAGE_FP",
"group_name": "136_expr_group",
- "group_id": 23,
+ "group_id": 114,
"regions": [
{
"table_name": "IMAGE_FP",
@@ -565,7 +669,7 @@
{
"virtual_table": "IMAGE_FP",
"group_name": "137_expr_group",
- "group_id": 24,
+ "group_id": 115,
"regions": [
{
"table_name": "IMAGE_FP",
@@ -595,7 +699,7 @@
{
"virtual_table": "HTTP_URL",
"group_name": "138_url_group",
- "group_id": 25,
+ "group_id": 116,
"regions": [
{
"table_name": "HTTP_URL",
@@ -625,7 +729,7 @@
{
"virtual_table": "HTTP_URL",
"group_name": "139_url_group",
- "group_id": 26,
+ "group_id": 117,
"regions": [
{
"table_name": "HTTP_URL",
@@ -653,7 +757,7 @@
{
"virtual_table": "KEYWORDS_TABLE",
"group_name": "140_keywords_group",
- "group_id": 27,
+ "group_id": 118,
"regions": [
{
"table_name": "KEYWORDS_TABLE",
@@ -683,7 +787,7 @@
"g2c_table_name": "GROUP2COMPILE_ALIAS",
"virtual_table": "HTTP_URL",
"group_name": "141_url_group",
- "group_id": 28,
+ "group_id": 119,
"regions": [
{
"table_name": "HTTP_URL",
@@ -711,7 +815,7 @@
{
"virtual_table": "HTTP_URL",
"group_name": "142_url_group",
- "group_id": 29,
+ "group_id": 120,
"regions": [
{
"table_name": "HTTP_URL",
@@ -739,7 +843,7 @@
{
"virtual_table": "HTTP_URL_FILTER",
"group_name": "143_url_group1",
- "group_id": 30,
+ "group_id": 121,
"not_flag": 0,
"regions": [
{
@@ -757,7 +861,7 @@
{
"virtual_table": "HTTP_URL_FILTER",
"group_name": "143_url_group2",
- "group_id": 31,
+ "group_id": 122,
"not_flag": 1,
"regions": [
{
@@ -786,7 +890,7 @@
{
"virtual_table": "HTTP_URL_FILTER",
"group_name": "144_url_group",
- "group_id": 32,
+ "group_id": 123,
"not_flag": 0,
"regions": [
{
@@ -804,7 +908,7 @@
{
"virtual_table": "HTTP_RESPONSE_KEYWORDS",
"group_name": "144_keywords_group",
- "group_id": 33,
+ "group_id": 124,
"not_flag": 1,
"regions": [
{
@@ -833,7 +937,7 @@
{
"virtual_table": "HTTP_URL",
"group_name": "145_url_group",
- "group_id": 34,
+ "group_id": 125,
"not_flag": 0,
"regions": [
{
@@ -867,7 +971,7 @@
{
"virtual_table": "HTTP_URL_FILTER",
"group_name": "146_url_group",
- "group_id": 35,
+ "group_id": 126,
"not_flag": 0,
"clause_index": 0,
"regions": [
@@ -886,7 +990,7 @@
{
"virtual_table": "HTTP_RESPONSE_KEYWORDS",
"group_name": "146_keywords_group",
- "group_id": 36,
+ "group_id": 127,
"not_flag": 1,
"clause_index": 1,
"regions": [
@@ -922,7 +1026,7 @@
{
"virtual_table": "HTTP_RESPONSE_KEYWORDS_1",
"group_name": "147_keywords_group1",
- "group_id": 37,
+ "group_id": 128,
"not_flag": 1,
"clause_index": 0,
"regions": [
@@ -941,7 +1045,7 @@
{
"virtual_table": "HTTP_RESPONSE_KEYWORDS_2",
"group_name": "147_keywords_group2",
- "group_id": 38,
+ "group_id": 129,
"not_flag": 1,
"clause_index": 1,
"regions": [
@@ -960,7 +1064,7 @@
{
"virtual_table": "HTTP_RESPONSE_KEYWORDS_3",
"group_name": "147_keywords_group3",
- "group_id": 39,
+ "group_id": 130,
"not_flag": 1,
"clause_index": 2,
"regions": [
@@ -979,7 +1083,7 @@
{
"virtual_table": "HTTP_RESPONSE_KEYWORDS_4",
"group_name": "147_keywords_group4",
- "group_id": 40,
+ "group_id": 131,
"not_flag": 1,
"clause_index": 3,
"regions": [
@@ -998,7 +1102,7 @@
{
"virtual_table": "HTTP_RESPONSE_KEYWORDS_5",
"group_name": "147_keywords_group5",
- "group_id": 41,
+ "group_id": 132,
"not_flag": 1,
"clause_index": 4,
"regions": [
@@ -1017,7 +1121,7 @@
{
"virtual_table": "HTTP_RESPONSE_KEYWORDS_6",
"group_name": "147_keywords_group6",
- "group_id": 42,
+ "group_id": 133,
"not_flag": 1,
"clause_index": 5,
"regions": [
@@ -1036,7 +1140,7 @@
{
"virtual_table": "HTTP_RESPONSE_KEYWORDS_7",
"group_name": "147_keywords_group7",
- "group_id": 43,
+ "group_id": 134,
"not_flag": 1,
"clause_index": 6,
"regions": [
@@ -1055,7 +1159,7 @@
{
"virtual_table": "HTTP_RESPONSE_KEYWORDS_8",
"group_name": "147_keywords_group8",
- "group_id": 44,
+ "group_id": 135,
"not_flag": 1,
"clause_index": 7,
"regions": [
@@ -1085,7 +1189,7 @@
{
"virtual_table": "HTTP_URL",
"group_name": "148_url_group",
- "group_id": 45,
+ "group_id": 136,
"regions": [
{
"table_name": "HTTP_URL",
@@ -1113,7 +1217,7 @@
{
"virtual_table": "APP_PAYLOAD",
"group_name": "149_app_group",
- "group_id": 46,
+ "group_id": 137,
"regions": [
{
"table_name": "APP_PAYLOAD",
@@ -1142,7 +1246,7 @@
{
"virtual_table": "TROJAN_PAYLOAD",
"group_name": "billgates_regist1",
- "group_id": 47,
+ "group_id": 138,
"regions": [
{
"table_type": "expr",
@@ -1159,7 +1263,7 @@
{
"virtual_table": "TROJAN_PAYLOAD",
"group_name": "billgates_regist2",
- "group_id": 48,
+ "group_id": 139,
"regions": [
{
"table_type": "expr",
@@ -1187,7 +1291,7 @@
{
"virtual_table": "MAIL_ADDR",
"group_name": "151_expr_group",
- "group_id": 49,
+ "group_id": 140,
"regions": [
{
"table_type": "expr",
@@ -1215,7 +1319,7 @@
{
"virtual_table": "MAIL_ADDR",
"group_name": "152_mail_addr",
- "group_id": 50,
+ "group_id": 141,
"regions": [
{
"table_type": "expr",
@@ -1242,7 +1346,7 @@
{
"virtual_table": "CONTENT_SIZE",
"group_name": "interval_group_refered",
- "group_id": 51,
+ "group_id": 142,
"sub_groups": [
{
"group_name": "126_interval_group"
@@ -1263,7 +1367,7 @@
{
"virtual_table": "MAIL_ADDR",
"group_name": "153_expr_group",
- "group_id": 52,
+ "group_id": 143,
"not_flag": 0,
"regions": [
{
@@ -1287,7 +1391,7 @@
{
"virtual_table": "IP_CONFIG",
"group_name": "IP_group_refered",
- "group_id": 53,
+ "group_id": 144,
"sub_groups": [
{
"group_name": "123_IP_group"
@@ -1308,7 +1412,7 @@
{
"virtual_table": "IP_PLUS_CONFIG",
"group_name": "154_IP_group",
- "group_id": 54,
+ "group_id": 145,
"not_flag": 0,
"regions": [
{
@@ -1341,7 +1445,8 @@
{
"virtual_table": "IP_PLUS_CONFIG",
"group_name": "155_IP_group",
- "group_id": 55,
+ "group_id": 146,
+ "not_flag": 0,
"regions": [
{
"table_type": "ip_plus",
@@ -1357,8 +1462,7 @@
"protocol": 6
}
}
- ],
- "not_flag": 0
+ ]
}
]
},
@@ -1374,7 +1478,7 @@
{
"virtual_table": "HTTP_SIGNATURE",
"group_name": "156_expr_group",
- "group_id": 56,
+ "group_id": 147,
"regions": [
{
"table_name": "HTTP_SIGNATURE",
@@ -1403,7 +1507,7 @@
{
"virtual_table": "TROJAN_PAYLOAD",
"group_name": "157_expr_group",
- "group_id": 57,
+ "group_id": 148,
"regions": [
{
"table_type": "expr",
@@ -1431,7 +1535,7 @@
{
"virtual_table": "IP_PLUS_CONFIG",
"group_name": "158_IP_group",
- "group_id": 58,
+ "group_id": 149,
"regions": [
{
"table_type": "ip_plus",
@@ -1463,7 +1567,7 @@
{
"virtual_table": "IP_PLUS_CONFIG",
"group_name": "159_IP_group",
- "group_id": 59,
+ "group_id": 150,
"regions": [
{
"table_type": "ip_plus",
@@ -1500,7 +1604,7 @@
{
"virtual_table": "HTTP_URL",
"group_name": "160_url_group",
- "group_id": 60,
+ "group_id": 151,
"not_flag": 0,
"regions": [
{
@@ -1529,7 +1633,7 @@
{
"virtual_table": "HTTP_SIGNATURE",
"group_name": "vt_grp_http_sig1",
- "group_id": 61,
+ "group_id": 152,
"not_flag": 0,
"regions": [
{
@@ -1548,7 +1652,7 @@
{
"virtual_table": "HTTP_SIGNATURE",
"group_name": "vt_grp_http_sig2",
- "group_id": 62,
+ "group_id": 153,
"not_flag": 0,
"regions": [
{
@@ -1631,7 +1735,7 @@
{
"virtual_table": "KEYWORDS_TABLE",
"group_name": "164_keywords_group",
- "group_id": 63,
+ "group_id": 154,
"regions": [
{
"table_name": "KEYWORDS_TABLE",
@@ -1660,7 +1764,7 @@
{
"virtual_table": "HTTP_URL",
"group_name": "165_url_group",
- "group_id": 64,
+ "group_id": 155,
"regions": [
{
"table_name": "HTTP_URL",
@@ -1677,7 +1781,7 @@
{
"virtual_table": "IP_PLUS_CONFIG",
"group_name": "165_IP_group",
- "group_id": 65,
+ "group_id": 156,
"not_flag": 0,
"regions": [
{
@@ -1711,7 +1815,7 @@
{
"virtual_table": "HTTP_URL",
"group_name": "166_url_group",
- "group_id": 66,
+ "group_id": 157,
"regions": [
{
"table_name": "HTTP_URL",
@@ -1740,7 +1844,7 @@
{
"virtual_table": "HTTP_URL",
"group_name": "167_url_group",
- "group_id": 67,
+ "group_id": 158,
"regions": [
{
"table_name": "HTTP_URL",
@@ -1769,7 +1873,7 @@
{
"virtual_table": "HTTP_URL",
"group_name": "168_url_group",
- "group_id": 68,
+ "group_id": 159,
"regions": [
{
"table_name": "HTTP_URL",
@@ -1797,7 +1901,7 @@
{
"virtual_table": "IP_PLUS_CONFIG",
"group_name": "169_IP_group",
- "group_id": 69,
+ "group_id": 160,
"not_flag" : 0,
"regions": [
{
@@ -1830,7 +1934,7 @@
{
"virtual_table": "IP_PLUS_CONFIG",
"group_name": "ipv4_virtual.source",
- "group_id": 70,
+ "group_id": 161,
"not_flag": 0,
"regions": [
{
@@ -1863,7 +1967,7 @@
{
"virtual_table": "IP_PLUS_CONFIG",
"group_name": "ipv4_virtual.destination",
- "group_id": 71,
+ "group_id": 162,
"not_flag": 0,
"regions": [
{
@@ -1917,7 +2021,7 @@
{
"virtual_table": "IP_PLUS_CONFIG",
"group_name": "ipv4_composition.source",
- "group_id": 72,
+ "group_id": 163,
"not_flag": 0,
"regions": [
{
@@ -1950,7 +2054,7 @@
{
"virtual_table": "IP_PLUS_CONFIG",
"group_name": "ipv4_composition.destination",
- "group_id": 73,
+ "group_id": 164,
"not_flag": 0,
"regions": [
{
@@ -1983,7 +2087,7 @@
{
"virtual_table": "IP_PLUS_CONFIG",
"group_name": "ipv4_composition.session",
- "group_id": 74,
+ "group_id": 165,
"not_flag": 0,
"regions": [
{
@@ -2005,29 +2109,40 @@
]
},
{
- "compile_id": 178,
+ "compile_id": 177,
"service": 1,
"action": 1,
"do_blacklist": 1,
"do_log": 1,
- "user_region": "Hierarchy.TwoVirtualInOneClause",
+ "user_region": "NOTLogic.MultiGroupsInOneNotClause",
"is_valid": "yes",
"groups": [
{
- "virtual_table": "SOURCE_IP_ASN",
- "group_name": "ASN1234",
- "not_flag": 0,
+ "virtual_table": "ASN_NOT_LOGIC",
+ "group_name": ["ASN1234", "ASN6789", "ASN9001"],
+ "not_flag": 1,
"clause_index": 0
},
{
- "virtual_table": "IP_CONFIG",
- "group_name": "financial-department-ip",
+ "virtual_table": "DESTINATION_IP_ASN",
+ "group_name": "ASN2345",
"not_flag": 0,
- "clause_index": 0
- },
+ "clause_index": 1
+ }
+ ]
+ },
+ {
+ "compile_id": 178,
+ "service": 1,
+ "action": 1,
+ "do_blacklist": 1,
+ "do_log": 1,
+ "user_region": "Hierarchy.MultiGroupInOneClause",
+ "is_valid": "yes",
+ "groups": [
{
- "virtual_table": "SOURCE_IP_GEO",
- "group_name": "Country-Sparta-IP",
+ "virtual_table": "SOURCE_IP_ASN",
+ "group_name": ["ASN1234", "ASN6789", "ASN9001"],
"not_flag": 0,
"clause_index": 0
},
@@ -2051,7 +2166,7 @@
{
"virtual_table": "INTERGER_PLUS",
"group_name": "179_interval_group",
- "group_id": 75,
+ "group_id": 166,
"regions": [
{
"table_name": "INTERGER_PLUS",
@@ -2067,6 +2182,64 @@
]
},
{
+ "compile_id": 180,
+ "service": 1,
+ "action": 1,
+ "do_blacklist": 1,
+ "do_log": 1,
+ "user_region": "Hierarchy.MultiGroupInOneClause",
+ "is_valid": "yes",
+ "groups": [
+ {
+ "virtual_table": "SOURCE_IP_ASN",
+ "group_name": ["ASN1234", "ASN6789", "ASN9001"],
+ "not_flag": 0,
+ "clause_index": 0
+ },
+ {
+ "virtual_table": "SOURCE_IP_GEO",
+ "group_name": "Country-Sparta-IP",
+ "not_flag": 0,
+ "clause_index": 0
+ },
+ {
+ "virtual_table": "IP_CONFIG",
+ "group_name": "financial-department-ip",
+ "not_flag": 0,
+ "clause_index": 1
+ }
+ ]
+ },
+ {
+ "compile_id": 181,
+ "service": 1,
+ "action": 1,
+ "do_blacklist": 1,
+ "do_log": 1,
+ "user_region": "NOTLogic.MultiLiteralsInOneNotClause",
+ "is_valid": "yes",
+ "groups": [
+ {
+ "virtual_table": "SOURCE_IP_ASN",
+ "group_name": ["ASN1234", "ASN6789", "ASN9001"],
+ "not_flag": 1,
+ "clause_index": 0
+ },
+ {
+ "virtual_table": "IP_PLUS_CONFIG",
+ "group_name": "develop-department-ip",
+ "not_flag": 1,
+ "clause_index": 0
+ },
+ {
+ "virtual_table": "SOURCE_IP_GEO",
+ "group_name": "Country-Sparta-IP",
+ "not_flag": 0,
+ "clause_index": 1
+ }
+ ]
+ },
+ {
"compile_id": 182,
"service": 1,
"action": 1,
@@ -2078,7 +2251,7 @@
{
"virtual_table": "KEYWORDS_TABLE",
"group_name": "182_keywords_group",
- "group_id": 76,
+ "group_id": 167,
"regions": [
{
"table_name": "KEYWORDS_TABLE",
@@ -2106,7 +2279,7 @@
{
"virtual_table": "CORNER_CASE_TABLE",
"group_name": "183_expr_group",
- "group_id": 77,
+ "group_id": 168,
"regions": [
{
"table_name": "CORNER_CASE_TABLE",
@@ -2135,7 +2308,7 @@
{
"virtual_table": "IP_CONFIG",
"group_name": "184_IP_group",
- "group_id": 78,
+ "group_id": 169,
"regions": [
{
"table_name": "IP_CONFIG",
@@ -2156,6 +2329,47 @@
]
},
{
+ "compile_id": 185,
+ "service": 1,
+ "action": 1,
+ "do_blacklist": 1,
+ "do_log": 1,
+ "user_region": "NOTLogic.SameVtableInMultiClause",
+ "is_valid": "yes",
+ "groups": [
+ {
+ "virtual_table": "DESTINATION_IP_ASN",
+ "group_name": ["ASN1234", "ASN6789", "ASN9001"],
+ "not_flag": 1,
+ "clause_index": 0
+ },
+ {
+ "virtual_table": "SOURCE_IP_GEO",
+ "group_name": "Country-Sparta-IP",
+ "not_flag": 1,
+ "clause_index": 0
+ },
+ {
+ "virtual_table": "DESTINATION_IP_ASN",
+ "group_name": "ASN9002",
+ "not_flag": 1,
+ "clause_index": 1
+ },
+ {
+ "virtual_table": "DESTINATION_IP_ASN",
+ "group_name": "ASN9003",
+ "not_flag": 0,
+ "clause_index": 2
+ },
+ {
+ "virtual_table": "IP_PLUS_CONFIG",
+ "group_name": "security-department-ip",
+ "not_flag": 0,
+ "clause_index": 3
+ }
+ ]
+ },
+ {
"compile_id": 186,
"service": 1,
"action": 1,
@@ -2167,7 +2381,7 @@
{
"virtual_table": "HTTP_URL_FILTER",
"group_name": "186_expr_group",
- "group_id": 79,
+ "group_id": 170,
"not_flag": 1,
"regions": [
{
@@ -2185,7 +2399,7 @@
{
"virtual_table": "IP_PLUS_CONFIG",
"group_name": "186_IP_group",
- "group_id": 80,
+ "group_id": 171,
"not_flag": 0,
"regions": [
{
@@ -2218,7 +2432,7 @@
{
"virtual_table": "HTTP_URL_FILTER",
"group_name": "187_url_group",
- "group_id": 81,
+ "group_id": 172,
"not_flag": 1,
"regions": [
{
@@ -2236,7 +2450,7 @@
{
"virtual_table": "IP_PLUS_CONFIG",
"group_name": "187_IP_group",
- "group_id": 82,
+ "group_id": 173,
"not_flag": 0,
"regions": [
{
@@ -2269,7 +2483,7 @@
{
"virtual_table": "HTTP_URL_FILTER",
"group_name": "188_url_group",
- "group_id": 83,
+ "group_id": 174,
"not_flag": 1,
"regions": [
{
@@ -2287,7 +2501,7 @@
{
"virtual_table": "IP_PLUS_CONFIG",
"group_name": "188_IP_group",
- "group_id": 84,
+ "group_id": 175,
"not_flag": 0,
"regions": [
{
@@ -2320,18 +2534,18 @@
{
"virtual_table": "APP_PAYLOAD",
"group_name": "189_app_group",
- "group_id": 85,
+ "group_id": 176,
"regions": [
{
"table_name": "APP_PAYLOAD",
+ "table_type": "expr_plus",
"table_content": {
"format": "hexbin",
"match_method": "sub",
"district": "tcp.payload.c2s_first_data",
"keywords": "ab00",
"expr_type": "none"
- },
- "table_type": "expr_plus"
+ }
}
]
}
@@ -2349,7 +2563,7 @@
{
"virtual_table": "HTTP_SIGNATURE",
"group_name": "190_expr_group",
- "group_id": 86,
+ "group_id": 177,
"regions": [
{
"table_name": "HTTP_SIGNATURE",
@@ -2378,7 +2592,7 @@
{
"virtual_table": "KEYWORDS_TABLE",
"group_name": "191_keywords_group",
- "group_id": 87,
+ "group_id": 178,
"regions": [
{
"table_type": "expr",
@@ -2406,7 +2620,7 @@
{
"virtual_table": "FLAG_CONFIG",
"group_name": "192_flag_group",
- "group_id": 88,
+ "group_id": 179,
"regions": [
{
"table_type": "flag",
@@ -2432,7 +2646,7 @@
{
"virtual_table": "FLAG_CONFIG",
"group_name": "193_flag_group",
- "group_id": 89,
+ "group_id": 180,
"regions": [
{
"table_type": "flag",
@@ -2447,7 +2661,7 @@
{
"virtual_table": "HTTP_URL",
"group_name": "193_url_group",
- "group_id": 90,
+ "group_id": 181,
"regions": [
{
"table_name": "HTTP_URL",
@@ -2475,7 +2689,7 @@
{
"virtual_table": "FLAG_CONFIG",
"group_name": "194_flag_group",
- "group_id": 91,
+ "group_id": 182,
"regions": [
{
"table_type": "flag",
@@ -2501,7 +2715,7 @@
{
"virtual_table": "HTTP_SIGNATURE",
"group_name": "195_signature_group",
- "group_id": 92,
+ "group_id": 183,
"regions": [
{
"table_name": "HTTP_SIGNATURE",
@@ -2519,7 +2733,7 @@
{
"virtual_table": "HTTP_URL",
"group_name": "195_url_group",
- "group_id": 93,
+ "group_id": 184,
"regions": [
{
"table_name": "HTTP_URL",
@@ -2547,7 +2761,7 @@
{
"virtual_table": "FLAG_PLUS_CONFIG",
"group_name": "196_flag_group",
- "group_id": 94,
+ "group_id": 185,
"regions": [
{
"table_type": "flag_plus",
@@ -2574,7 +2788,7 @@
{
"virtual_table": "HTTP_URL",
"group_name": "197_url_group",
- "group_id": 95,
+ "group_id": 186,
"regions": [
{
"table_name": "HTTP_URL",
@@ -2604,7 +2818,7 @@
"g2c_table_name": "GROUP2COMPILE_FIREWALL",
"virtual_table": "HTTP_URL",
"group_name": "198_url_group",
- "group_id": 96,
+ "group_id": 187,
"regions": [
{
"table_name": "HTTP_URL",
@@ -2632,11 +2846,11 @@
{
"virtual_table": "HTTP_URL",
"group_name": "ExcludeLogicGroup199",
- "group_id": 97,
+ "group_id": 188,
"sub_groups":[
{
"group_name": "ExcludeLogicGroup199_1",
- "group_id": 98,
+ "group_id": 189,
"is_exclude": 0,
"clause_index": 0,
"regions": [
@@ -2654,7 +2868,7 @@
},
{
"group_name": "ExcludeLogicGroup199_2",
- "group_id": 99,
+ "group_id": 190,
"is_exclude": 1,
"clause_index": 0,
"regions": [
@@ -2686,12 +2900,12 @@
{
"virtual_table": "HTTP_URL",
"group_name": "ExcludeLogicGroup200",
- "group_id": 100,
+ "group_id": 191,
"sub_groups":[
{
"virtual_table": "HTTP_URL",
"group_name": "ExcludeLogicGroup200_1",
- "group_id": 101,
+ "group_id": 192,
"is_exclude": 0,
"clause_index": 0,
"regions": [
@@ -2710,7 +2924,7 @@
{
"virtual_table": "HTTP_URL",
"group_name": "ExcludeLogicGroup200_2",
- "group_id": 102,
+ "group_id": 193,
"is_exclude": 1,
"clause_index": 0,
"regions": [
@@ -2742,12 +2956,12 @@
{
"virtual_table": "VIRTUAL_IP_PLUS_TABLE",
"group_name": "ExcludeLogicGroup202",
- "group_id": 103,
+ "group_id": 194,
"clause_index": 0,
"sub_groups":[
{
"group_name": "ExcludeLogicGroup202_1",
- "group_id": 104,
+ "group_id": 195,
"is_exclude": 0,
"regions": [
{
@@ -2768,7 +2982,7 @@
},
{
"group_name": "ExcludeLogicGroup202_2",
- "group_id": 105,
+ "group_id": 196,
"is_exclude": 1,
"regions": [
{
@@ -2789,7 +3003,7 @@
},
{
"group_name": "ExcludeLogicGroup202_3",
- "group_id": 106,
+ "group_id": 197,
"is_exclude": 1,
"regions": [
{
@@ -2824,7 +3038,7 @@
{
"virtual_table": "VIRTUAL_IP_PLUS_SOURCE",
"group_name": "ExcludeLogicGroup203_1",
- "group_id": 107,
+ "group_id": 198,
"clause_index": 0,
"regions": [
{
@@ -2848,7 +3062,7 @@
{
"virtual_table": "VIRTUAL_IP_PLUS_DESTINATION",
"group_name": "ExcludeLogicGroup203_2",
- "group_id": 108,
+ "group_id": 199,
"clause_index": 1,
"regions": [
{
@@ -2871,12 +3085,12 @@
{
"virtual_table": "HTTP_RESPONSE_KEYWORDS",
"group_name": "ExcludeLogicGroup203_3",
- "group_id": 109,
+ "group_id": 200,
"clause_index": 2,
"sub_groups": [
{
"group_name": "ExcludeLogicGroup203_3_1",
- "group_id": 110,
+ "group_id": 201,
"is_exclude": 0,
"regions": [
{
@@ -2893,7 +3107,7 @@
},
{
"group_name": "ExcludeLogicGroup203_3_2",
- "group_id": 111,
+ "group_id": 202,
"is_exclude": 1,
"regions": [
{
@@ -2924,7 +3138,7 @@
{
"virtual_table": "VIRTUAL_IP_PLUS_SOURCE",
"group_name": "ExcludeLogicGroup204_1",
- "group_id": 112,
+ "group_id": 203,
"clause_index": 0,
"regions": [
{
@@ -2948,7 +3162,7 @@
{
"virtual_table": "VIRTUAL_IP_PLUS_DESTINATION",
"group_name": "ExcludeLogicGroup204_2",
- "group_id": 113,
+ "group_id":204,
"clause_index": 1,
"regions": [
{
@@ -2971,17 +3185,17 @@
{
"virtual_table": "HTTP_RESPONSE_KEYWORDS",
"group_name": "ExcludeLogicGroup204_3",
- "group_id": 114,
+ "group_id": 205,
"clause_index": 2,
"sub_groups": [
{
"group_name": "ExcludeLogicGroup204_3_1",
- "group_id": 115,
+ "group_id": 206,
"is_exclude": 0,
"sub_groups" : [
{
"group_name": "ExcludeLogicGroup204_3_1_1",
- "group_id": 116,
+ "group_id": 207,
"is_exclude": 0,
"regions": [
{
@@ -2998,7 +3212,7 @@
},
{
"group_name": "ExcludeLogicGroup204_3_1_2",
- "group_id": 117,
+ "group_id": 208,
"is_exclude": 1,
"regions": [
{
@@ -3017,7 +3231,7 @@
},
{
"group_name": "ExcludeLogicGroup204_3_2",
- "group_id": 118,
+ "group_id": 209,
"is_exclude": 1,
"regions": [
{
@@ -3048,7 +3262,7 @@
{
"virtual_table": "KEYWORDS_TABLE",
"group_name": "205_keywords_group",
- "group_id": 119,
+ "group_id": 210,
"regions": [
{
"table_type": "expr",
@@ -3076,7 +3290,7 @@
{
"virtual_table": "KEYWORDS_TABLE",
"group_name": "206_keywords_group",
- "group_id": 120,
+ "group_id": 211,
"regions": [
{
"table_type": "expr",
@@ -3104,7 +3318,7 @@
{
"virtual_table": "FLAG_CONFIG",
"group_name": "207_flag_group",
- "group_id": 121,
+ "group_id": 212,
"regions": [
{
"table_type": "flag",
@@ -3130,7 +3344,7 @@
{
"virtual_table": "IP_PLUS_CONFIG",
"group_name": "208_IP_group",
- "group_id": 122,
+ "group_id": 213,
"not_flag": 0,
"regions": [
{
@@ -3163,7 +3377,7 @@
{
"virtual_table": "INTERGER_PLUS",
"group_name": "209_interval_group",
- "group_id": 123,
+ "group_id": 214,
"regions": [
{
"table_name": "INTERGER_PLUS",
@@ -3190,7 +3404,7 @@
{
"virtual_table": "IP_PLUS_CONFIG",
"group_name": "210_IP_group",
- "group_id": 124,
+ "group_id": 215,
"regions": [
{
"table_type": "ip_plus",
@@ -3222,7 +3436,7 @@
{
"virtual_table": "IP_PERF_CONFIG",
"group_name": "211_IP_group",
- "group_id": 125,
+ "group_id": 216,
"not_flag": 0,
"regions": [
{
@@ -3255,7 +3469,7 @@
{
"virtual_table": "INTEGER_PERF_CONFIG",
"group_name": "212_interval_group",
- "group_id": 126,
+ "group_id": 217,
"regions": [
{
"table_name": "INTEGER_PERF_CONFIG",
@@ -3281,7 +3495,7 @@
{
"virtual_table": "EXPR_LITERAL_PERF_CONFIG",
"group_name": "213_expr_group",
- "group_id": 127,
+ "group_id": 218,
"regions": [
{
"table_name": "EXPR_LITERAL_PERF_CONFIG",
@@ -3309,7 +3523,7 @@
{
"virtual_table": "FLAG_PERF_CONFIG",
"group_name": "214_flag_group",
- "group_id": 128,
+ "group_id": 219,
"regions": [
{
"table_type": "flag",
@@ -3335,7 +3549,7 @@
{
"virtual_table": "EXPR_REGEX_PERF_CONFIG",
"group_name": "215_expr_group",
- "group_id": 129,
+ "group_id": 220,
"regions": [
{
"table_name": "EXPR_REGEX_PERF_CONFIG",
@@ -3369,7 +3583,7 @@
{
"virtual_table": "HTTP_RESPONSE_KEYWORDS",
"group_name": "NOTClauseAndExcludeGroup216",
- "group_id": 130,
+ "group_id": 221,
"not_flag": 1,
"clause_index": 1,
"regions": [
@@ -3399,13 +3613,13 @@
{
"virtual_table": "HTTP_URL_FILTER",
"group_name": "NOTClauseAndExcludeGroup217_1",
- "group_id": 131,
+ "group_id": 222,
"not_flag": 1,
"clause_index": 0,
"sub_groups": [
{
"group_name": "ExcludeLogicGroup217_1_1",
- "group_id": 132,
+ "group_id": 223,
"is_exclude": 0,
"regions": [
{
@@ -3422,7 +3636,7 @@
},
{
"group_name": "ExcludeLogicGroup217_1_2",
- "group_id": 133,
+ "group_id": 224,
"is_exclude": 1,
"regions": [
{
@@ -3442,7 +3656,7 @@
{
"virtual_table": "HTTP_RESPONSE_KEYWORDS",
"group_name": "NOTClauseAndExcludeGroup217_2",
- "group_id": 134,
+ "group_id": 225,
"not_flag": 0,
"clause_index": 1,
"regions": [
@@ -3472,7 +3686,7 @@
{
"virtual_table": "CONTENT_SIZE",
"group_name": "218_interval_group",
- "group_id": 135,
+ "group_id": 226,
"regions": [
{
"table_name": "CONTENT_SIZE",
@@ -3498,7 +3712,7 @@
{
"virtual_table": "HTTP_DUMMY",
"group_name": "NOTClauseAndExcludeGroup219_1",
- "group_id": 136,
+ "group_id": 227,
"not_flag": 0,
"clause_index": 0,
"regions": [
@@ -3517,7 +3731,7 @@
{
"virtual_table": "HTTP_DUMMY",
"group_name": "NOTClauseAndExcludeGroup219_2",
- "group_id": 137,
+ "group_id": 228,
"not_flag": 1,
"clause_index": 1,
"regions": [
@@ -3536,7 +3750,7 @@
{
"virtual_table": "HTTP_DUMMY",
"group_name": "NOTClauseAndExcludeGroup219_3",
- "group_id": 138,
+ "group_id": 229,
"not_flag": 1,
"clause_index": 2,
"regions": [
@@ -3555,7 +3769,7 @@
{
"virtual_table": "HTTP_DUMMY",
"group_name": "NOTClauseAndExcludeGroup219_4",
- "group_id": 139,
+ "group_id": 230,
"not_flag": 1,
"clause_index": 3,
"regions": [
@@ -3574,7 +3788,7 @@
{
"virtual_table": "HTTP_DUMMY",
"group_name": "NOTClauseAndExcludeGroup219_5",
- "group_id": 140,
+ "group_id": 231,
"not_flag": 1,
"clause_index": 4,
"regions": [
@@ -3593,7 +3807,7 @@
{
"virtual_table": "HTTP_DUMMY",
"group_name": "NOTClauseAndExcludeGroup219_6",
- "group_id": 141,
+ "group_id": 232,
"not_flag": 1,
"clause_index": 5,
"regions": [
@@ -3612,7 +3826,7 @@
{
"virtual_table": "HTTP_DUMMY",
"group_name": "NOTClauseAndExcludeGroup219_7",
- "group_id": 142,
+ "group_id": 233,
"not_flag": 1,
"clause_index": 6,
"regions": [
@@ -3631,7 +3845,7 @@
{
"virtual_table": "HTTP_DUMMY",
"group_name": "NOTClauseAndExcludeGroup219_8",
- "group_id": 143,
+ "group_id": 234,
"not_flag": 1,
"clause_index": 7,
"regions": [
@@ -3661,7 +3875,7 @@
{
"virtual_table": "HTTP_DUMMY",
"group_name": "NOTClauseAndExcludeGroup220_1",
- "group_id": 144,
+ "group_id": 235,
"not_flag": 0,
"clause_index": 0,
"regions": [
@@ -3680,7 +3894,7 @@
{
"virtual_table": "HTTP_DUMMY",
"group_name": "NOTClauseAndExcludeGroup220_2",
- "group_id": 145,
+ "group_id": 236,
"not_flag": 1,
"clause_index": 1,
"regions": [
@@ -3699,7 +3913,7 @@
{
"virtual_table": "HTTP_DUMMY",
"group_name": "NOTClauseAndExcludeGroup220_3",
- "group_id": 146,
+ "group_id": 237,
"not_flag": 1,
"clause_index": 2,
"regions": [
@@ -3729,7 +3943,7 @@
{
"virtual_table": "HTTP_REQUEST_HEADER",
"group_name": "NOTLogicGroup_221_1",
- "group_id": 147,
+ "group_id": 238,
"not_flag": 1,
"regions": [
{
@@ -3748,7 +3962,7 @@
{
"virtual_table": "HTTP_URL",
"group_name": "NOTLogicGroup_221_2",
- "group_id": 148,
+ "group_id": 239,
"not_flag": 0,
"regions": [
{
@@ -3771,59 +3985,21 @@
"action": 0,
"do_blacklist": 0,
"do_log": 0,
- "user_region": "NOTLogic.SameClauseHasMultiNotGroups",
+ "user_region": "NOTLogic.SingleNotClause",
"is_valid": "yes",
"groups": [
{
- "virtual_table": "HTTP_URL_FILTER",
- "group_name": "NOTLogicGroup_222_1",
- "group_id": 149,
- "clause_index": 0,
+ "virtual_table": "HTTP_NOT_LOGIC_1",
+ "group_name": "NOTLogicGroup_222",
+ "group_id": 240,
"not_flag": 1,
- "regions": [
- {
- "table_name": "HTTP_URL",
- "table_type": "expr",
- "table_content": {
- "keywords": "not_logic_compile_222_1",
- "expr_type": "none",
- "match_method": "sub",
- "format": "uncase plain"
- }
- }
- ]
- },
- {
- "virtual_table": "HTTP_URL_FILTER",
- "group_name": "NOTLogicGroup_222_2",
- "group_id": 150,
"clause_index": 0,
- "not_flag": 1,
- "regions": [
- {
- "table_name": "HTTP_URL",
- "table_type": "expr",
- "table_content": {
- "keywords": "not_logic_compile_222_2",
- "expr_type": "none",
- "match_method": "sub",
- "format": "uncase plain"
- }
- }
- ]
- },
- {
- "virtual_table": "HTTP_URL_FILTER",
- "group_name": "NOTLogicGroup_222_3",
- "group_id": 151,
- "clause_index": 1,
- "not_flag": 0,
"regions": [
{
- "table_name": "HTTP_URL",
+ "table_name": "KEYWORDS_TABLE",
"table_type": "expr",
"table_content": {
- "keywords": "logic_compile_222_3",
+ "keywords": "not_logic_keywords_222",
"expr_type": "none",
"match_method": "sub",
"format": "uncase plain"
@@ -3845,7 +4021,7 @@
{
"virtual_table": "HTTP_NOT_LOGIC",
"group_name": "NOTLogicGroup_223_1",
- "group_id": 152,
+ "group_id": 241,
"not_flag": 1,
"clause_index": 0,
"regions": [
@@ -3864,7 +4040,7 @@
{
"virtual_table": "HTTP_NOT_LOGIC",
"group_name": "NOTLogicGroup_223_2",
- "group_id": 153,
+ "group_id": 242,
"not_flag": 1,
"clause_index": 1,
"regions": [
@@ -3883,7 +4059,7 @@
{
"virtual_table": "HTTP_NOT_LOGIC",
"group_name": "NOTLogicGroup_223_1",
- "group_id": 154,
+ "group_id": 243,
"not_flag": 1,
"clause_index": 2,
"regions": [
@@ -3913,7 +4089,7 @@
{
"virtual_table": "KEYWORDS_TABLE",
"group_name": "NOTLogicGroup_224_1",
- "group_id": 155,
+ "group_id": 244,
"not_flag": 1,
"clause_index": 0,
"regions": [
@@ -3932,7 +4108,7 @@
{
"virtual_table": "HTTP_RESPONSE_KEYWORDS",
"group_name": "NOTLogicGroup_224_2",
- "group_id": 156,
+ "group_id": 245,
"not_flag": 0,
"clause_index": 1,
"regions": [
@@ -3962,7 +4138,7 @@
{
"virtual_table": "KEYWORDS_TABLE",
"group_name": "EscapeGroup_225_1",
- "group_id": 157,
+ "group_id": 246,
"not_flag": 0,
"clause_index": 0,
"regions": [
@@ -3992,7 +4168,7 @@
{
"virtual_table": "KEYWORDS_TABLE",
"group_name": "226_url_group",
- "group_id": 158
+ "group_id":247
}
]
},
@@ -4009,7 +4185,7 @@
{
"virtual_table": "KEYWORDS_TABLE",
"group_name": "227_url_group",
- "group_id": 159,
+ "group_id": 248,
"g2c_table_name": "GROUP2COMPILE_FIREWALL"
}
]
diff --git a/test/table_info.conf b/test/table_info.conf
index 07d655d..dfd9deb 100644
--- a/test/table_info.conf
+++ b/test/table_info.conf
@@ -712,5 +712,17 @@
"table_name":"HTTP_NOT_LOGIC",
"table_type":"virtual",
"physical_table": "KEYWORDS_TABLE"
+ },
+ {
+ "table_id":64,
+ "table_name":"HTTP_NOT_LOGIC_1",
+ "table_type":"virtual",
+ "physical_table": "KEYWORDS_TABLE"
+ },
+ {
+ "table_id":65,
+ "table_name":"ASN_NOT_LOGIC",
+ "table_type":"virtual",
+ "physical_table":"AS_NUMBER"
}
] \ No newline at end of file