ipmatcher rule_id -> long long & scanner engine centralization

This commit is contained in:
liuwentan
2023-03-01 09:32:36 +08:00
parent a6fb2b6fdd
commit 1566a30002
63 changed files with 4695 additions and 115 deletions

View File

@@ -2,6 +2,8 @@ include_directories(${PROJECT_SOURCE_DIR}/include)
include_directories(${PROJECT_SOURCE_DIR}/src/inc_internal)
include_directories(${PROJECT_SOURCE_DIR}/deps)
include_directories(${PROJECT_SOURCE_DIR}/scanner)
include_directories(${PROJECT_SOURCE_DIR}/scanner/adapter_hs)
include_directories(${PROJECT_SOURCE_DIR}/scanner/ip_matcher)
add_executable(maat_api_gtest maat_api_gtest.cpp)
target_link_libraries(maat_api_gtest maat_frame_shared gtest_static)

View File

@@ -4,7 +4,7 @@
#include "maat_rule.h"
#include "maat_utils.h"
#include "maat_command.h"
#include "IPMatcher.h"
#include "ip_matcher.h"
#include "json2iris.h"
#include "log/log.h"
#include "maat_config_monitor.h"
@@ -125,6 +125,11 @@ TEST_F(MaatFlagScan, hitMultiCompile) {
EXPECT_EQ(results[0], 194);
EXPECT_EQ(results[1], 192);
// memset(results, 0, sizeof(results));
// ret = maat_scan_flag(g_maat_instance, flag_table_id, 0, flag_scan_data, results,
// ARRAY_SIZE, &n_hit_result, &state);
// EXPECT_EQ(ret, MAAT_SCAN_OK);
struct maat_hit_path hit_path[HIT_PATH_SIZE] = {0};
int n_read = 0;
n_read = maat_state_get_hit_paths(g_maat_instance, &state, hit_path, HIT_PATH_SIZE);
@@ -1352,25 +1357,60 @@ TEST_F(Policy, CompileEXData) {
ASSERT_GT(table_id, 0);
int ex_data_counter = 0;
int ret = maat_compile_table_ex_schema_register(g_maat_instance, "COMPILE",
compile_ex_param_new,
compile_ex_param_free,
compile_ex_param_dup,
0, &ex_data_counter);
ASSERT_TRUE(ret >= 0);
int compile_table_id = maat_table_get_id(g_maat_instance, "COMPILE");
int ret = maat_compile_table_ex_schema_register(g_maat_instance, compile_table_id,
compile_ex_param_new,
compile_ex_param_free,
compile_ex_param_dup,
0, &ex_data_counter);
EXPECT_EQ(ret, 0);
EXPECT_EQ(ex_data_counter, 1);
ret = maat_scan_string(g_maat_instance, table_id, 0, url, strlen(url),
results, ARRAY_SIZE, &n_hit_result, &state);
EXPECT_EQ(ret, MAAT_SCAN_HIT);
EXPECT_EQ(results[0], 141);
void *ex_data=Maat_rule_get_ex_data(g_feather, result, ex_param_idx);
ASSERT_TRUE(ex_data!=NULL);
struct rule_ex_param* param=(struct rule_ex_param*)ex_data;
void *ex_data = maat_compile_table_get_ex_data(g_maat_instance, compile_table_id, results[0]);
ASSERT_TRUE(ex_data != NULL);
struct rule_ex_param *param = (struct rule_ex_param *)ex_data;
EXPECT_EQ(param->id, 7799);
str_unescape(param->name);
EXPECT_EQ(strcmp(param->name, expect_name),0);
compile_ex_param_free(0, NULL, NULL, &ex_data, 0, NULL);
Maat_clean_status(&mid);
compile_ex_param_free(compile_table_id, &ex_data, 0, NULL);
maat_state_free(&state);
}
#endif
#if 0
TEST_F(Policy, SubGroup) {
long long results[ARRAY_SIZE] = {0};
size_t n_hit_result = 0;
struct maat_state *state = NULL;
const char *scan_data = "ceshi6@mailhost.cn";
uint32_t sip;
inet_pton(AF_INET,"10.0.6.205", &sip);
int table_id = maat_table_get_id(g_maat_instance, "MAIL_ADDR");
ASSERT_GT(table_id, 0);
int ret = maat_scan_string(g_maat_instance, table_id, 0, scan_data, strlen(scan_data),
results, ARRAY_SIZE, &n_hit_result, &state);
EXPECT_EQ(ret, MAAT_SCAN_HALF_HIT);
table_id = maat_table_get_id(g_maat_instance, "IP_CONFIG");
ASSERT_GT(table_id, 0);
ret = maat_scan_ipv4(g_maat_instance, table_id, 0, sip, results, ARRAY_SIZE,
&n_hit_result, &state);
EXPECT_EQ(ret, MAAT_SCAN_HIT);
EXPECT_EQ(results[0], 153);
maat_state_free(&state);
}
#endif
class MaatCmdTest : public testing::Test

View File

@@ -41,14 +41,18 @@
"table_type": "ip_plus",
"table_content": {
"addr_type": "ipv4",
"src_ip": "192.168.40.88",
"mask_src_ip": "255.255.255.255",
"src_port": "0",
"mask_src_port": "65535",
"dst_ip": "0.0.0.0",
"mask_dst_ip": "255.255.255.255",
"dst_port": "0",
"mask_dst_port": "65535",
"saddr_format": "mask",
"src_ip1": "192.168.40.88",
"src_ip2": "255.255.255.255",
"sport_format": "range",
"src_port1": "0",
"src_port2": "65535",
"daddr_format": "mask",
"dst_ip1": "0.0.0.0",
"dst_ip2": "255.255.255.255",
"dport_format": "range",
"dst_port1": "0",
"dst_port2": "65535",
"protocol": 6,
"direction": "double"
}
@@ -196,14 +200,18 @@
"table_type": "ip_plus",
"table_content": {
"addr_type": "ipv4",
"src_ip": "10.0.6.201",
"mask_src_ip": "255.255.0.0",
"src_port": "0",
"mask_src_port": "65535",
"dst_ip": "0.0.0.0",
"mask_dst_ip": "255.255.255.255",
"dst_port": "0",
"mask_dst_port": "65535",
"saddr_format": "mask",
"src_ip1": "10.0.6.201",
"src_ip2": "255.255.0.0",
"sport_format": "range",
"src_port1": "0",
"src_port2": "65535",
"daddr_format": "mask",
"dst_ip1": "0.0.0.0",
"dst_ip2": "255.255.255.255",
"dport_format": "range",
"dst_port1": "0",
"dst_port2": "65535",
"protocol": 6,
"direction": "double"
}
@@ -213,14 +221,18 @@
"table_type": "ip_plus",
"table_content": {
"addr_type": "ipv6",
"src_ip": "2001:da8:205:1::101",
"mask_src_ip": "ffff:ffff:ffff:ffff:ffff:ffff:ffff:0000",
"src_port": "0",
"mask_src_port": "65535",
"dst_ip": "0::0",
"mask_dst_ip": "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff",
"dst_port": "0",
"mask_dst_port": "65535",
"saddr_format": "mask",
"src_ip1": "2001:da8:205:1::101",
"src_ip2": "ffff:ffff:ffff:ffff:ffff:ffff:ffff:0000",
"sport_format": "range",
"src_port1": "0",
"src_port2": "65535",
"daddr_format": "mask",
"dst_ip1": "0::0",
"dst_ip2": "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff",
"dport_format": "range",
"dst_port1": "0",
"dst_port2": "65535",
"protocol": 6,
"direction": "double"
}
@@ -2044,15 +2056,19 @@
"table_content": {
"protocol": 0,
"addr_type": "ipv6",
"direction": "double",
"src_ip": "::",
"dst_ip": "2620:100:3000::",
"src_port": "0",
"dst_port": "0",
"mask_src_port": "65535",
"mask_src_ip": "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff",
"mask_dst_port": "65535",
"mask_dst_ip": "ffff:ffff:ff00:0000:0000:0000:0000:0000"
"saddr_format": "mask",
"src_ip1": "::",
"src_ip2": "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff",
"sport_format": "range",
"src_port1": "0",
"src_port2": "0",
"daddr_format": "mask",
"dst_ip1": "2620:100:3000::",
"dst_ip2": "ffff:ffff:ff00:0000:0000:0000:0000:0000",
"dport_format": "range",
"dst_port1": "0",
"dst_port2": "65535",
"direction": "double"
}
}
]