diff --git a/include/maat.h b/include/maat.h index f8cdf38..6b6556c 100644 --- a/include/maat.h +++ b/include/maat.h @@ -99,6 +99,7 @@ int maat_options_set_gc_timeout_ms(struct maat_options *opts, int interval_ms); int maat_options_set_instance_name(struct maat_options *opts, const char *instance_name); int maat_options_set_deferred_load_on(struct maat_options *opts); int maat_options_set_foreign_cont_dir(struct maat_options *opts, const char *dir); +int maat_options_set_logger_path(struct maat_options *opts, const char *log_path); int maat_options_set_iris(struct maat_options *opts, const char *full_directory, const char *increment_directory); @@ -106,8 +107,6 @@ int maat_options_set_json_file(struct maat_options *opts, const char *json_filen int maat_options_set_redis(struct maat_options *opts, const char *redis_ip, uint16_t redis_port, int redis_db); -int maat_options_set_logger(struct maat_options *opts, void *logger); - /* maat_instance API */ struct maat *maat_new(struct maat_options *opts, const char *table_info_path); void maat_free(struct maat *instance); diff --git a/scanner/adapter_hs/adapter_hs.cpp b/scanner/adapter_hs/adapter_hs.cpp index 6920159..1c1f98b 100644 --- a/scanner/adapter_hs/adapter_hs.cpp +++ b/scanner/adapter_hs/adapter_hs.cpp @@ -323,7 +323,10 @@ struct adapter_hs *adapter_hs_initialize(enum hs_scan_mode scan_mode, } compile_data->ids[pattern_index] = pattern_index; - compile_data->flags[pattern_index] = HS_FLAG_SOM_LEFTMOST; + if (pattern_type == HS_PATTERN_TYPE_STR) { + compile_data->flags[pattern_index] = HS_FLAG_SOM_LEFTMOST; + } + if (exprs[i].patterns[j].case_sensitive == HS_CASE_INSESITIVE) { compile_data->flags[pattern_index] |= HS_FLAG_CASELESS; } diff --git a/src/inc_internal/maat_common.h b/src/inc_internal/maat_common.h index e7dfd30..9128ed7 100644 --- a/src/inc_internal/maat_common.h +++ b/src/inc_internal/maat_common.h @@ -17,6 +17,7 @@ extern "C" #endif #include +#include #include "log/log.h" #include "maat_rule.h" @@ -24,6 +25,7 @@ extern "C" struct maat_options { char instance_name[NAME_MAX]; char foreign_cont_dir[NAME_MAX]; + char log_path[PATH_MAX]; size_t nr_worker_threads; char *accept_tags; int rule_effect_interval_ms; @@ -31,7 +33,6 @@ struct maat_options { int gc_timeout_ms; int deferred_load_on; int log_level; - struct log_handle *logger; enum data_source input_mode; union { struct source_iris_ctx iris_ctx; diff --git a/src/maat_api.c b/src/maat_api.c index 9063671..e152ad0 100644 --- a/src/maat_api.c +++ b/src/maat_api.c @@ -241,9 +241,13 @@ int maat_options_set_redis(struct maat_options *opts, const char *redis_ip, return 0; } -int maat_options_set_logger(struct maat_options *opts, void *logger) +int maat_options_set_logger_path(struct maat_options *opts, const char *log_path) { - opts->logger = (struct log_handle *)logger; + if (NULL == opts || NULL == log_path || strlen(log_path) >= PATH_MAX) { + return -1; + } + + memcpy(opts->log_path, log_path, strlen(log_path)); return 0; } @@ -330,8 +334,8 @@ struct maat *maat_new(struct maat_options *opts, const char *table_info_path) int garbage_gc_timeout_s = 0; struct maat *maat_instance = ALLOC(struct maat, 1); - if (opts->logger != NULL) { - maat_instance->logger = opts->logger; + if (strlen(opts->log_path) != 0) { + maat_instance->logger = log_handle_create(opts->log_path, opts->log_level); } else { char log_path[1024] = {0}; if (strlen(maat_instance->instance_name) > 0) { diff --git a/src/maat_ex_data.c b/src/maat_ex_data.c index 1314080..09e5086 100644 --- a/src/maat_ex_data.c +++ b/src/maat_ex_data.c @@ -205,6 +205,8 @@ void ex_container_free(void *schema, void *data) if (NULL == data) { return; } + + struct ex_container *ex_container = (struct ex_container *)data; //TODO: if (NULL == schema) { @@ -214,7 +216,7 @@ void ex_container_free(void *schema, void *data) long argl = container_schema->ex_schema->argl; void *argp = container_schema->ex_schema->argp; - struct ex_container *ex_container = (struct ex_container *)data; + if (ex_container->ex_data != NULL && container_schema->ex_schema->free_func != NULL) { container_schema->ex_schema->free_func(container_schema->table_id, diff --git a/test/maat_framework_gtest.cpp b/test/maat_framework_gtest.cpp index e379c6b..3db6424 100644 --- a/test/maat_framework_gtest.cpp +++ b/test/maat_framework_gtest.cpp @@ -19,7 +19,6 @@ const char *table_info_path = "./table_info.conf"; const char *json_path="./maat_json.json"; const char *json_filename = "maat_json.json"; -struct log_handle *g_logger = NULL; size_t g_thread_num = 4; extern int system_cmd_rmdir(const char *dir); @@ -276,24 +275,22 @@ protected: int redis_port = 6379; int redis_db = 0; - g_logger = log_handle_create("./maat_framework_gtest.log", 0); - assert(g_logger != NULL); - - int ret = write_config_to_redis(redis_ip, redis_port, redis_db, g_logger); + logger = log_handle_create("./maat_framework_gtest.log", 0); + int ret = write_config_to_redis(redis_ip, redis_port, redis_db, logger); if (ret < 0) { - log_error(g_logger, MODULE_FRAMEWORK_GTEST, + log_error(logger, MODULE_FRAMEWORK_GTEST, "[%s:%d] write config to redis failed.", __FUNCTION__, __LINE__); } struct maat_options *opts = maat_options_new(); maat_options_set_redis(opts, redis_ip, redis_port, redis_db); - maat_options_set_logger(opts, g_logger); + maat_options_set_logger_path(opts, "./maat_framework_gtest.log"); maat_options_set_accept_tags(opts, accept_tags); _shared_maat_instance = maat_new(opts, table_info_path); maat_options_free(opts); if (NULL == _shared_maat_instance) { - log_error(g_logger, MODULE_FRAMEWORK_GTEST, + log_error(logger, MODULE_FRAMEWORK_GTEST, "[%s:%d] create maat instance in MaatFlagScan failed.", __FUNCTION__, __LINE__); } @@ -301,13 +298,15 @@ protected: static void TearDownTestCase() { maat_free(_shared_maat_instance); - g_logger = NULL; + log_handle_destroy(logger); } + static struct log_handle *logger; static struct maat *_shared_maat_instance; }; struct maat *MaatFlagScan::_shared_maat_instance; +struct log_handle *MaatFlagScan::logger; TEST_F(MaatFlagScan, basic) { const char *flag_table_name = "FLAG_CONFIG"; @@ -507,24 +506,22 @@ protected: int redis_port = 6379; int redis_db = 0; - g_logger = log_handle_create("./maat_framework_gtest.log", 0); - assert(g_logger != NULL); - - int ret = write_config_to_redis(redis_ip, redis_port, redis_db, g_logger); + logger = log_handle_create("./maat_framework_gtest.log", 0); + int ret = write_config_to_redis(redis_ip, redis_port, redis_db, logger); if (ret < 0) { - log_error(g_logger, MODULE_FRAMEWORK_GTEST, + log_error(logger, MODULE_FRAMEWORK_GTEST, "[%s:%d] write config to redis failed.", __FUNCTION__, __LINE__); } struct maat_options *opts = maat_options_new(); maat_options_set_redis(opts, redis_ip, redis_port, redis_db); - maat_options_set_logger(opts, g_logger); + maat_options_set_logger_path(opts, "./maat_framework_gtest.log"); maat_options_set_accept_tags(opts, accept_tags); _shared_maat_instance = maat_new(opts, table_info_path); maat_options_free(opts); if (NULL == _shared_maat_instance) { - log_error(g_logger, MODULE_FRAMEWORK_GTEST, + log_error(logger, MODULE_FRAMEWORK_GTEST, "[%s:%d] create maat instance in MaatFlagScan failed.", __FUNCTION__, __LINE__); } @@ -532,13 +529,15 @@ protected: static void TearDownTestCase() { maat_free(_shared_maat_instance); - g_logger = NULL; + log_handle_destroy(logger); } + static struct log_handle *logger; static struct maat *_shared_maat_instance; }; struct maat *MaatStringScan::_shared_maat_instance; +struct log_handle *MaatStringScan::logger; TEST_F(MaatStringScan, Expr8) { const char *table_name = "KEYWORDS_TABLE"; @@ -638,11 +637,11 @@ TEST_F(MaatStringScan, ExprAndExprPlus) { long long results[ARRAY_SIZE] = {0}; size_t n_hit_result = 0; struct maat_state *state = NULL; + struct maat *maat_instance = MaatStringScan::_shared_maat_instance; const char *expr_table_name = "HTTP_URL_LITERAL"; const char *expr_plus_table_name = "HTTP_SIGNATURE"; const char *region_name = "I love China"; const char *scan_data = "today is Monday and yesterday is Tuesday"; - struct maat *maat_instance = MaatStringScan::_shared_maat_instance; int expr_table_id = maat_get_table_id(maat_instance, expr_table_name); int expr_plus_table_id = maat_get_table_id(maat_instance, expr_plus_table_name); @@ -668,13 +667,14 @@ TEST_F(MaatStringScan, StreamInput) { long long results[ARRAY_SIZE] = {0}; size_t n_hit_result = 0; struct maat_state *state = NULL; + struct maat *maat_instance = MaatStringScan::_shared_maat_instance; const char *scan_data = "http://www.cyberessays.com/search_results.php?action=search&query=yulingjing,abckkk,1234567"; - const char *table_name = "HTTP_URL_STREAM"; + const char *table_name = "HTTP_URL_REGEX"; - int table_id = maat_get_table_id(g_maat_instance, table_name); + int table_id = maat_get_table_id(maat_instance, table_name); ASSERT_GT(table_id, 0); - struct maat_stream *sp = maat_scan_stream_open(g_maat_instance, table_id, 0); + struct maat_stream *sp = maat_scan_stream_open(maat_instance, table_id, 0); ASSERT_FALSE(sp==NULL); int ret = maat_scan_stream(&sp, "www.cyberessays.com", strlen("www.cyberessays.com"), @@ -889,24 +889,22 @@ protected: int redis_port = 6379; int redis_db = 0; - g_logger = log_handle_create("./maat_framework_gtest.log", 0); - assert(g_logger != NULL); - - int ret = write_config_to_redis(redis_ip, redis_port, redis_db, g_logger); + logger = log_handle_create("./maat_framework_gtest.log", 0); + int ret = write_config_to_redis(redis_ip, redis_port, redis_db, logger); if (ret < 0) { - log_error(g_logger, MODULE_FRAMEWORK_GTEST, + log_error(logger, MODULE_FRAMEWORK_GTEST, "[%s:%d] write config to redis failed.", __FUNCTION__, __LINE__); } struct maat_options *opts = maat_options_new(); maat_options_set_redis(opts, redis_ip, redis_port, redis_db); - maat_options_set_logger(opts, g_logger); + maat_options_set_logger_path(opts, "./maat_framework_gtest.log"); maat_options_set_accept_tags(opts, accept_tags); _shared_maat_instance = maat_new(opts, table_info_path); maat_options_free(opts); if (NULL == _shared_maat_instance) { - log_error(g_logger, MODULE_FRAMEWORK_GTEST, + log_error(logger, MODULE_FRAMEWORK_GTEST, "[%s:%d] create maat instance in MaatFlagScan failed.", __FUNCTION__, __LINE__); } @@ -914,13 +912,15 @@ protected: static void TearDownTestCase() { maat_free(_shared_maat_instance); - g_logger = NULL; + log_handle_destroy(logger); } + static struct log_handle *logger; static struct maat *_shared_maat_instance; }; struct maat *MaatIPScan::_shared_maat_instance; +struct log_handle *MaatIPScan::logger; TEST_F(MaatIPScan, IPv4) { const char *table_name = "IP_PLUS_CONFIG"; @@ -1046,24 +1046,22 @@ protected: int redis_port = 6379; int redis_db = 0; - g_logger = log_handle_create("./maat_framework_gtest.log", 0); - assert(g_logger != NULL); - - int ret = write_config_to_redis(redis_ip, redis_port, redis_db, g_logger); + logger = log_handle_create("./maat_framework_gtest.log", 0); + int ret = write_config_to_redis(redis_ip, redis_port, redis_db, logger); if (ret < 0) { - log_error(g_logger, MODULE_FRAMEWORK_GTEST, + log_error(logger, MODULE_FRAMEWORK_GTEST, "[%s:%d] write config to redis failed.", __FUNCTION__, __LINE__); } struct maat_options *opts = maat_options_new(); maat_options_set_redis(opts, redis_ip, redis_port, redis_db); - maat_options_set_logger(opts, g_logger); + maat_options_set_logger_path(opts, "./maat_framework_gtest.log"); maat_options_set_accept_tags(opts, accept_tags); _shared_maat_instance = maat_new(opts, table_info_path); maat_options_free(opts); if (NULL == _shared_maat_instance) { - log_error(g_logger, MODULE_FRAMEWORK_GTEST, + log_error(logger, MODULE_FRAMEWORK_GTEST, "[%s:%d] create maat instance in MaatFlagScan failed.", __FUNCTION__, __LINE__); } @@ -1071,13 +1069,15 @@ protected: static void TearDownTestCase() { maat_free(_shared_maat_instance); - g_logger = NULL; + log_handle_destroy(logger); } + static struct log_handle *logger; static struct maat *_shared_maat_instance; }; struct maat *MaatIntervalScan::_shared_maat_instance; +struct log_handle *MaatIntervalScan::logger; TEST_F(MaatIntervalScan, Pure) { long long results[ARRAY_SIZE] = {0}; @@ -1133,24 +1133,22 @@ protected: int redis_port = 6379; int redis_db = 0; - g_logger = log_handle_create("./maat_framework_gtest.log", 0); - assert(g_logger != NULL); - - int ret = write_config_to_redis(redis_ip, redis_port, redis_db, g_logger); + logger = log_handle_create("./maat_framework_gtest.log", 0); + int ret = write_config_to_redis(redis_ip, redis_port, redis_db, logger); if (ret < 0) { - log_error(g_logger, MODULE_FRAMEWORK_GTEST, + log_error(logger, MODULE_FRAMEWORK_GTEST, "[%s:%d] write config to redis failed.", __FUNCTION__, __LINE__); } struct maat_options *opts = maat_options_new(); maat_options_set_redis(opts, redis_ip, redis_port, redis_db); - maat_options_set_logger(opts, g_logger); + maat_options_set_logger_path(opts, "./maat_framework_gtest.log"); maat_options_set_accept_tags(opts, accept_tags); _shared_maat_instance = maat_new(opts, table_info_path); maat_options_free(opts); if (NULL == _shared_maat_instance) { - log_error(g_logger, MODULE_FRAMEWORK_GTEST, + log_error(logger, MODULE_FRAMEWORK_GTEST, "[%s:%d] create maat instance in MaatFlagScan failed.", __FUNCTION__, __LINE__); } @@ -1158,13 +1156,15 @@ protected: static void TearDownTestCase() { maat_free(_shared_maat_instance); - g_logger = NULL; + log_handle_destroy(logger); } + static struct log_handle *logger; static struct maat *_shared_maat_instance; }; struct maat *NOTLogic::_shared_maat_instance; +struct log_handle *NOTLogic::logger; TEST_F(NOTLogic, OneRegion) { const char *string_should_hit = "This string ONLY contains must-contained-string-of-rule-143."; @@ -1403,25 +1403,23 @@ protected: int redis_port = 6379; int redis_db = 0; - g_logger = log_handle_create("./maat_framework_gtest.log", 0); - assert(g_logger != NULL); - - int ret = write_config_to_redis(redis_ip, redis_port, redis_db, g_logger); + logger = log_handle_create("./maat_framework_gtest.log", 0); + int ret = write_config_to_redis(redis_ip, redis_port, redis_db, logger); if (ret < 0) { - log_error(g_logger, MODULE_FRAMEWORK_GTEST, + log_error(logger, MODULE_FRAMEWORK_GTEST, "[%s:%d] write config to redis failed.", __FUNCTION__, __LINE__); } struct maat_options *opts = maat_options_new(); maat_options_set_redis(opts, redis_ip, redis_port, redis_db); maat_options_set_deferred_load_on(opts); - maat_options_set_logger(opts, g_logger); + maat_options_set_logger_path(opts, "./maat_framework_gtest.log"); maat_options_set_accept_tags(opts, accept_tags); _shared_maat_instance = maat_new(opts, table_info_path); maat_options_free(opts); if (NULL == _shared_maat_instance) { - log_error(g_logger, MODULE_FRAMEWORK_GTEST, + log_error(logger, MODULE_FRAMEWORK_GTEST, "[%s:%d] create maat instance in MaatFlagScan failed.", __FUNCTION__, __LINE__); } @@ -1429,13 +1427,15 @@ protected: static void TearDownTestCase() { maat_free(_shared_maat_instance); - g_logger = NULL; + log_handle_destroy(logger); } + static struct log_handle *logger; static struct maat *_shared_maat_instance; }; struct maat *PluginTable::_shared_maat_instance; +struct log_handle *PluginTable::logger; TEST_F(PluginTable, Callback) { const char *table_name = "QD_ENTRY_INFO"; @@ -1560,24 +1560,22 @@ protected: int redis_port = 6379; int redis_db = 0; - g_logger = log_handle_create("./maat_framework_gtest.log", 0); - assert(g_logger != NULL); - - int ret = write_config_to_redis(redis_ip, redis_port, redis_db, g_logger); + logger = log_handle_create("./maat_framework_gtest.log", 0); + int ret = write_config_to_redis(redis_ip, redis_port, redis_db, logger); if (ret < 0) { - log_error(g_logger, MODULE_FRAMEWORK_GTEST, + log_error(logger, MODULE_FRAMEWORK_GTEST, "[%s:%d] write config to redis failed.", __FUNCTION__, __LINE__); } struct maat_options *opts = maat_options_new(); maat_options_set_redis(opts, redis_ip, redis_port, redis_db); - maat_options_set_logger(opts, g_logger); + maat_options_set_logger_path(opts, "./maat_framework_gtest.log"); maat_options_set_accept_tags(opts, accept_tags); _shared_maat_instance = maat_new(opts, table_info_path); maat_options_free(opts); if (NULL == _shared_maat_instance) { - log_error(g_logger, MODULE_FRAMEWORK_GTEST, + log_error(logger, MODULE_FRAMEWORK_GTEST, "[%s:%d] create maat instance in MaatFlagScan failed.", __FUNCTION__, __LINE__); } @@ -1585,13 +1583,15 @@ protected: static void TearDownTestCase() { maat_free(_shared_maat_instance); - g_logger = NULL; + log_handle_destroy(logger); } + static struct log_handle *logger; static struct maat *_shared_maat_instance; }; struct maat *IPPluginTable::_shared_maat_instance; +struct log_handle *IPPluginTable::logger; struct ip_plugin_ud { long long rule_id; @@ -1701,24 +1701,22 @@ protected: int redis_port = 6379; int redis_db = 0; - g_logger = log_handle_create("./maat_framework_gtest.log", 0); - assert(g_logger != NULL); - - int ret = write_config_to_redis(redis_ip, redis_port, redis_db, g_logger); + logger = log_handle_create("./maat_framework_gtest.log", 0); + int ret = write_config_to_redis(redis_ip, redis_port, redis_db, logger); if (ret < 0) { - log_error(g_logger, MODULE_FRAMEWORK_GTEST, + log_error(logger, MODULE_FRAMEWORK_GTEST, "[%s:%d] write config to redis failed.", __FUNCTION__, __LINE__); } struct maat_options *opts = maat_options_new(); maat_options_set_redis(opts, redis_ip, redis_port, redis_db); - maat_options_set_logger(opts, g_logger); + maat_options_set_logger_path(opts, "./maat_framework_gtest.log"); maat_options_set_accept_tags(opts, accept_tags); _shared_maat_instance = maat_new(opts, table_info_path); maat_options_free(opts); if (NULL == _shared_maat_instance) { - log_error(g_logger, MODULE_FRAMEWORK_GTEST, + log_error(logger, MODULE_FRAMEWORK_GTEST, "[%s:%d] create maat instance in MaatFlagScan failed.", __FUNCTION__, __LINE__); } @@ -1726,13 +1724,15 @@ protected: static void TearDownTestCase() { maat_free(_shared_maat_instance); - g_logger = NULL; + log_handle_destroy(logger); } + static struct log_handle *logger; static struct maat *_shared_maat_instance; }; struct maat *FQDNPluginTable::_shared_maat_instance; +struct log_handle *FQDNPluginTable::logger; #define FQDN_PLUGIN_EX_DATA struct fqdn_plugin_ud @@ -1867,24 +1867,22 @@ protected: int redis_port = 6379; int redis_db = 0; - g_logger = log_handle_create("./maat_framework_gtest.log", 0); - assert(g_logger != NULL); - - int ret = write_config_to_redis(redis_ip, redis_port, redis_db, g_logger); + logger = log_handle_create("./maat_framework_gtest.log", 0); + int ret = write_config_to_redis(redis_ip, redis_port, redis_db, logger); if (ret < 0) { - log_error(g_logger, MODULE_FRAMEWORK_GTEST, + log_error(logger, MODULE_FRAMEWORK_GTEST, "[%s:%d] write config to redis failed.", __FUNCTION__, __LINE__); } struct maat_options *opts = maat_options_new(); maat_options_set_redis(opts, redis_ip, redis_port, redis_db); - maat_options_set_logger(opts, g_logger); + maat_options_set_logger_path(opts, "./maat_framework_gtest.log"); maat_options_set_accept_tags(opts, accept_tags); _shared_maat_instance = maat_new(opts, table_info_path); maat_options_free(opts); if (NULL == _shared_maat_instance) { - log_error(g_logger, MODULE_FRAMEWORK_GTEST, + log_error(logger, MODULE_FRAMEWORK_GTEST, "[%s:%d] create maat instance in MaatFlagScan failed.", __FUNCTION__, __LINE__); } @@ -1892,13 +1890,15 @@ protected: static void TearDownTestCase() { maat_free(_shared_maat_instance); - g_logger = NULL; + log_handle_destroy(logger); } + static struct log_handle *logger; static struct maat *_shared_maat_instance; }; struct maat *BoolPluginTable::_shared_maat_instance; +struct log_handle *BoolPluginTable::logger; TEST_F(BoolPluginTable, EX_DATA) { int ex_data_counter = 0, i = 0; @@ -1957,24 +1957,22 @@ protected: int redis_port = 6379; int redis_db = 0; - g_logger = log_handle_create("./maat_framework_gtest.log", 0); - assert(g_logger != NULL); - - int ret = write_config_to_redis(redis_ip, redis_port, redis_db, g_logger); + logger = log_handle_create("./maat_framework_gtest.log", 0); + int ret = write_config_to_redis(redis_ip, redis_port, redis_db, logger); if (ret < 0) { - log_error(g_logger, MODULE_FRAMEWORK_GTEST, + log_error(logger, MODULE_FRAMEWORK_GTEST, "[%s:%d] write config to redis failed.", __FUNCTION__, __LINE__); } struct maat_options *opts = maat_options_new(); maat_options_set_redis(opts, redis_ip, redis_port, redis_db); - maat_options_set_logger(opts, g_logger); + maat_options_set_logger_path(opts, "./maat_framework_gtest.log"); maat_options_set_accept_tags(opts, accept_tags); _shared_maat_instance = maat_new(opts, table_info_path); maat_options_free(opts); if (NULL == _shared_maat_instance) { - log_error(g_logger, MODULE_FRAMEWORK_GTEST, + log_error(logger, MODULE_FRAMEWORK_GTEST, "[%s:%d] create maat instance in MaatFlagScan failed.", __FUNCTION__, __LINE__); } @@ -1982,13 +1980,15 @@ protected: static void TearDownTestCase() { maat_free(_shared_maat_instance); - g_logger = NULL; + log_handle_destroy(logger); } + static struct log_handle *logger; static struct maat *_shared_maat_instance; }; struct maat *VirtualTable::_shared_maat_instance; +struct log_handle *VirtualTable::logger; TEST_F(VirtualTable, basic) { long long results[ARRAY_SIZE] = {0}; @@ -2016,24 +2016,22 @@ protected: int redis_port = 6379; int redis_db = 0; - g_logger = log_handle_create("./maat_framework_gtest.log", 0); - assert(g_logger != NULL); - - int ret = write_config_to_redis(redis_ip, redis_port, redis_db, g_logger); + logger = log_handle_create("./maat_framework_gtest.log", 0); + int ret = write_config_to_redis(redis_ip, redis_port, redis_db, logger); if (ret < 0) { - log_error(g_logger, MODULE_FRAMEWORK_GTEST, + log_error(logger, MODULE_FRAMEWORK_GTEST, "[%s:%d] write config to redis failed.", __FUNCTION__, __LINE__); } struct maat_options *opts = maat_options_new(); maat_options_set_redis(opts, redis_ip, redis_port, redis_db); - maat_options_set_logger(opts, g_logger); + maat_options_set_logger_path(opts, "./maat_framework_gtest.log"); maat_options_set_accept_tags(opts, accept_tags); _shared_maat_instance = maat_new(opts, table_info_path); maat_options_free(opts); if (NULL == _shared_maat_instance) { - log_error(g_logger, MODULE_FRAMEWORK_GTEST, + log_error(logger, MODULE_FRAMEWORK_GTEST, "[%s:%d] create maat instance in MaatFlagScan failed.", __FUNCTION__, __LINE__); } @@ -2041,13 +2039,15 @@ protected: static void TearDownTestCase() { maat_free(_shared_maat_instance); - g_logger = NULL; + log_handle_destroy(logger); } + static struct log_handle *logger; static struct maat *_shared_maat_instance; }; struct maat *CompileTable::_shared_maat_instance; +struct log_handle *CompileTable::logger; struct rule_ex_param { int ref_cnt; @@ -2192,24 +2192,22 @@ protected: int redis_port = 6379; int redis_db = 0; - g_logger = log_handle_create("./maat_framework_gtest.log", 0); - assert(g_logger != NULL); - - int ret = write_config_to_redis(redis_ip, redis_port, redis_db, g_logger); + logger = log_handle_create("./maat_framework_gtest.log", 0); + int ret = write_config_to_redis(redis_ip, redis_port, redis_db, logger); if (ret < 0) { - log_error(g_logger, MODULE_FRAMEWORK_GTEST, + log_error(logger, MODULE_FRAMEWORK_GTEST, "[%s:%d] write config to redis failed.", __FUNCTION__, __LINE__); } struct maat_options *opts = maat_options_new(); maat_options_set_redis(opts, redis_ip, redis_port, redis_db); - maat_options_set_logger(opts, g_logger); + maat_options_set_logger_path(opts, "./maat_framework_gtest.log"); maat_options_set_accept_tags(opts, accept_tags); _shared_maat_instance = maat_new(opts, table_info_path); maat_options_free(opts); if (NULL == _shared_maat_instance) { - log_error(g_logger, MODULE_FRAMEWORK_GTEST, + log_error(logger, MODULE_FRAMEWORK_GTEST, "[%s:%d] create maat instance in MaatFlagScan failed.", __FUNCTION__, __LINE__); } @@ -2217,13 +2215,15 @@ protected: static void TearDownTestCase() { maat_free(_shared_maat_instance); - g_logger = NULL; + log_handle_destroy(logger); } + static struct log_handle *logger; static struct maat *_shared_maat_instance; }; struct maat *Policy::_shared_maat_instance; +struct log_handle *Policy::logger; void accept_tags_entry_cb(int table_id, const char *table_line, void *u_para) { @@ -2399,24 +2399,22 @@ protected: int redis_port = 6379; int redis_db = 0; - g_logger = log_handle_create("./maat_framework_gtest.log", 0); - assert(g_logger != NULL); - - int ret = write_config_to_redis(redis_ip, redis_port, redis_db, g_logger); + logger = log_handle_create("./maat_framework_gtest.log", 0); + int ret = write_config_to_redis(redis_ip, redis_port, redis_db, logger); if (ret < 0) { - log_error(g_logger, MODULE_FRAMEWORK_GTEST, + log_error(logger, MODULE_FRAMEWORK_GTEST, "[%s:%d] write config to redis failed.", __FUNCTION__, __LINE__); } struct maat_options *opts = maat_options_new(); maat_options_set_redis(opts, redis_ip, redis_port, redis_db); - maat_options_set_logger(opts, g_logger); + maat_options_set_logger_path(opts, "./maat_framework_gtest.log"); maat_options_set_accept_tags(opts, accept_tags); _shared_maat_instance = maat_new(opts, table_info_path); maat_options_free(opts); if (NULL == _shared_maat_instance) { - log_error(g_logger, MODULE_FRAMEWORK_GTEST, + log_error(logger, MODULE_FRAMEWORK_GTEST, "[%s:%d] create maat instance in MaatFlagScan failed.", __FUNCTION__, __LINE__); } @@ -2424,13 +2422,15 @@ protected: static void TearDownTestCase() { maat_free(_shared_maat_instance); - g_logger = NULL; + log_handle_destroy(logger); } + static struct log_handle *logger; static struct maat *_shared_maat_instance; }; struct maat *TableInfo::_shared_maat_instance; +struct log_handle *TableInfo::logger; TEST_F(TableInfo, Conjunction) { long long results[ARRAY_SIZE] = {0}; @@ -2464,33 +2464,23 @@ protected: int redis_port = 6379; int redis_db = 0; - g_logger = log_handle_create("./maat_framework_gtest.log", 0); - assert(g_logger != NULL); - struct maat_options *opts = maat_options_new(); maat_options_set_redis(opts, redis_ip, redis_port, redis_db); - maat_options_set_logger(opts, g_logger); + maat_options_set_logger_path(opts, "./maat_framework_gtest.log"); _shared_maat_instance = maat_new(opts, table_info_path); - if (NULL == _shared_maat_instance) { - log_error(g_logger, MODULE_FRAMEWORK_GTEST, - "[%s:%d] create maat instance in MaatFlagScan failed.", - __FUNCTION__, __LINE__); - } + assert(_shared_maat_instance != NULL); + maat_cmd_flushDB(_shared_maat_instance); maat_free(_shared_maat_instance); - g_logger = log_handle_create("./maat_framework_gtest.log", 0); - assert(g_logger != NULL); maat_options_set_deferred_load_on(opts); - maat_options_set_logger(opts, g_logger); _shared_maat_instance = maat_new(opts, table_info_path); maat_options_free(opts); } static void TearDownTestCase() { maat_free(_shared_maat_instance); - g_logger = NULL; } static struct maat *_shared_maat_instance; diff --git a/test/maat_input_mode_gtest.cpp b/test/maat_input_mode_gtest.cpp index 82eb96f..025c30a 100644 --- a/test/maat_input_mode_gtest.cpp +++ b/test/maat_input_mode_gtest.cpp @@ -33,6 +33,7 @@ TEST(json_mode, maat_scan_string) { char json_path[PATH_MAX] = {0}; snprintf(json_path, sizeof(json_path), "./%s", json_filename); maat_options_set_json_file(opts, json_path); + maat_options_set_logger_path(opts, "./maat_input_mode_gtest.log"); struct maat *maat_instance = maat_new(opts, table_info_path); EXPECT_TRUE(maat_instance != NULL); @@ -60,7 +61,7 @@ TEST(json_mode, maat_scan_string) { maat_state_free(&state); maat_free(maat_instance); } -#if 0 + TEST(iris_mode, maat_scan_string) { char tmp_iris_path[512] = {0}; char json_iris_path[512] = {0}; @@ -86,6 +87,7 @@ TEST(iris_mode, maat_scan_string) { struct maat_options *opts = maat_options_new(); maat_options_set_iris(opts, tmp_iris_full_idx_path, tmp_iris_inc_idx_path); + maat_options_set_logger_path(opts, "./maat_input_mode_gtest.log"); struct maat *maat_instance = maat_new(opts, table_info_path); EXPECT_TRUE(maat_instance != NULL); @@ -211,7 +213,7 @@ TEST(redis_mode, maat_scan_string) { struct maat_options *opts = maat_options_new(); maat_options_set_redis(opts, redis_ip, redis_port, redis_db); - maat_options_set_logger(opts, g_logger); + maat_options_set_logger_path(opts, "./maat_input_mode_gtest.log"); struct maat *maat_instance = maat_new(opts, table_info_path); const char *table_name = "KEYWORDS_TABLE"; @@ -230,7 +232,7 @@ TEST(redis_mode, maat_scan_string) { maat_state_free(&state); maat_free(maat_instance); } -#endif + int main(int argc, char ** argv) { int ret=0; diff --git a/test/maat_json.json b/test/maat_json.json index 4b8af6e..e824553 100644 --- a/test/maat_json.json +++ b/test/maat_json.json @@ -283,6 +283,31 @@ } ] }, + { + "compile_id": 125, + "service": 1, + "action": 1, + "do_blacklist": 1, + "do_log": 1, + "user_region": "anything", + "is_valid": "yes", + "groups": [ + { + "regions": [ + { + "table_name": "HTTP_URL_REGEX", + "table_type": "expr", + "table_content": { + "keywords": "action=search\\&query=(.*)", + "expr_type": "regex", + "match_method": "sub", + "format": "uncase plain" + } + } + ] + } + ] + }, { "compile_id": 126, "service": 1,