summaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@rambler-co.ru>2009-07-20 19:33:48 +0400
committerVsevolod Stakhov <vsevolod@rambler-co.ru>2009-07-20 19:33:48 +0400
commitf86068d197719b8758fc0a2aeb8556526b2331f8 (patch)
tree99f59e943f7437dc9987bb9b9d6a23d1e12df6a1 /src/plugins
parentacc1e657ead019fd3e0835cadddf4d39a7b9f181 (diff)
downloadrspamd-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.c9
-rw-r--r--src/plugins/surbl.c25
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;