diff options
author | Vsevolod Stakhov <vsevolod@rambler-co.ru> | 2009-07-20 19:33:48 +0400 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@rambler-co.ru> | 2009-07-20 19:33:48 +0400 |
commit | f86068d197719b8758fc0a2aeb8556526b2331f8 (patch) | |
tree | 99f59e943f7437dc9987bb9b9d6a23d1e12df6a1 /src/plugins | |
parent | acc1e657ead019fd3e0835cadddf4d39a7b9f181 (diff) | |
download | rspamd-f86068d197719b8758fc0a2aeb8556526b2331f8.tar.gz rspamd-f86068d197719b8758fc0a2aeb8556526b2331f8.zip |
* Introduce new common system of map files, that can be used for different types of maps.
This includes new logic of callbacks and callbacks calling, files are monitored with
evtimers with jittering. HTTP support would be included soon as well.
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/emails.c | 9 | ||||
-rw-r--r-- | src/plugins/surbl.c | 25 |
2 files changed, 11 insertions, 23 deletions
diff --git a/src/plugins/emails.c b/src/plugins/emails.c index ef886ecf5..e08d3ff8f 100644 --- a/src/plugins/emails.c +++ b/src/plugins/emails.c @@ -34,6 +34,7 @@ #include "../expressions.h" #include "../util.h" #include "../view.h" +#include "../map.h" #define DEFAULT_SYMBOL "R_BAD_EMAIL" @@ -100,10 +101,8 @@ emails_module_config (struct config_file *cfg) email_module_ctx->symbol = DEFAULT_SYMBOL; } if ((value = get_module_opt (cfg, "emails", "blacklist")) != NULL) { - if (g_ascii_strncasecmp (value, "file://", sizeof ("file://") - 1) == 0) { - if (parse_host_list (email_module_ctx->email_pool, email_module_ctx->blacklist, value + sizeof ("file://") - 1)) { - email_module_ctx->blacklist_file = memory_pool_strdup (email_module_ctx->email_pool, value + sizeof ("file://") - 1); - } + if (add_map (value, read_host_list, fin_host_list, (void **)&email_module_ctx->blacklist)) { + email_module_ctx->blacklist_file = memory_pool_strdup (email_module_ctx->email_pool, value + sizeof ("file://") - 1); } } @@ -216,9 +215,9 @@ emails_symbol_callback (struct worker_task *task, void *unused) { GList *emails, *cur; - emails = extract_emails (task); if (check_view (task->cfg->views, email_module_ctx->symbol, task)) { + emails = extract_emails (task); if (email_module_ctx->blacklist && emails) { cur = g_list_first (emails); diff --git a/src/plugins/surbl.c b/src/plugins/surbl.c index 15bdc149b..452f8749a 100644 --- a/src/plugins/surbl.c +++ b/src/plugins/surbl.c @@ -30,6 +30,7 @@ #include "../util.h" #include "../message.h" #include "../view.h" +#include "../map.h" #include <evdns.h> #include "surbl.h" @@ -65,11 +66,11 @@ surbl_module_init (struct config_file *cfg, struct module_ctx **ctx) surbl_module_ctx->tld2_file = NULL; surbl_module_ctx->whitelist_file = NULL; - surbl_module_ctx->tld2 = g_hash_table_new (g_str_hash, g_str_equal); + surbl_module_ctx->tld2 = g_hash_table_new (rspamd_strcase_hash, rspamd_strcase_equal); /* Register destructors */ memory_pool_add_destructor (surbl_module_ctx->surbl_pool, (pool_destruct_func)g_hash_table_remove_all, surbl_module_ctx->tld2); - surbl_module_ctx->whitelist = g_hash_table_new (g_str_hash, g_str_equal); + surbl_module_ctx->whitelist = g_hash_table_new (rspamd_strcase_hash, rspamd_strcase_equal); /* Register destructors */ memory_pool_add_destructor (surbl_module_ctx->surbl_pool, (pool_destruct_func)g_hash_table_remove_all, surbl_module_ctx->whitelist); @@ -158,17 +159,13 @@ surbl_module_config (struct config_file *cfg) surbl_module_ctx->metric = DEFAULT_METRIC; } if ((value = get_module_opt (cfg, "surbl", "2tld")) != NULL) { - if (g_ascii_strncasecmp (value, "file://", sizeof ("file://") - 1) == 0) { - if (parse_host_list (surbl_module_ctx->surbl_pool, surbl_module_ctx->tld2, value + sizeof ("file://") - 1)) { - surbl_module_ctx->tld2_file = memory_pool_strdup (surbl_module_ctx->surbl_pool, value + sizeof ("file://") - 1); - } + if (add_map (value, read_host_list, fin_host_list, (void **)&surbl_module_ctx->tld2)) { + surbl_module_ctx->tld2_file = memory_pool_strdup (surbl_module_ctx->surbl_pool, value + sizeof ("file://") - 1); } } if ((value = get_module_opt (cfg, "surbl", "whitelist")) != NULL) { - if (g_ascii_strncasecmp (value, "file://", sizeof ("file://") - 1) == 0) { - if (parse_host_list (surbl_module_ctx->surbl_pool, surbl_module_ctx->whitelist, value + sizeof ("file://") - 1)) { - surbl_module_ctx->whitelist_file = memory_pool_strdup (surbl_module_ctx->surbl_pool, value + sizeof ("file://") - 1); - } + if (add_map (value, read_host_list, fin_host_list, (void **)&surbl_module_ctx->whitelist)) { + surbl_module_ctx->whitelist_file = memory_pool_strdup (surbl_module_ctx->surbl_pool, value + sizeof ("file://") - 1); } } @@ -766,14 +763,6 @@ surbl_test_url (struct worker_task *task, void *user_data) struct redirector_param param; struct suffix_item *suffix = user_data; - /* Try to check lists */ - if (surbl_module_ctx->tld2_file) { - maybe_parse_host_list (surbl_module_ctx->surbl_pool, surbl_module_ctx->tld2, surbl_module_ctx->tld2_file); - } - if (surbl_module_ctx->whitelist_file) { - maybe_parse_host_list (surbl_module_ctx->surbl_pool, surbl_module_ctx->whitelist, surbl_module_ctx->whitelist_file); - } - url_tree = g_tree_new ((GCompareFunc)g_ascii_strcasecmp); param.tree = url_tree; |