diff options
author | cebka@mailsupport.rambler.ru <cebka@mailsupport.rambler.ru> | 2008-09-23 18:12:36 +0400 |
---|---|---|
committer | cebka@mailsupport.rambler.ru <cebka@mailsupport.rambler.ru> | 2008-09-23 18:12:36 +0400 |
commit | ffe2b54bd024bb45fe7ee182d452ad61283df8ca (patch) | |
tree | d63a7589dfea70ac173dc44bd2b1c88303afa024 /plugins/surbl.c | |
parent | 193acf73e51b24ccca8048ebb6aaec2971594268 (diff) | |
download | rspamd-ffe2b54bd024bb45fe7ee182d452ad61283df8ca.tar.gz rspamd-ffe2b54bd024bb45fe7ee182d452ad61283df8ca.zip |
* Rework logic of filters
* Add some documentation to rspamd (about new filters logic and about protocol)
Diffstat (limited to 'plugins/surbl.c')
-rw-r--r-- | plugins/surbl.c | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/plugins/surbl.c b/plugins/surbl.c index c8a545ed1..d35ab6069 100644 --- a/plugins/surbl.c +++ b/plugins/surbl.c @@ -29,6 +29,7 @@ #define DEFAULT_REDIRECTOR_READ_TIMEOUT 5000 #define DEFAULT_SURBL_MAX_URLS 1000 #define DEFAULT_SURBL_URL_EXPIRE 86400 +#define DEFAULT_SURBL_SYMBOL "SURBL_DNS" #define DEFAULT_SURBL_SUFFIX "multi.surbl.org" struct surbl_ctx { @@ -44,6 +45,8 @@ struct surbl_ctx { unsigned int max_urls; unsigned int url_expire; char *suffix; + char *symbol; + char *metric; GHashTable *hosters; GHashTable *whitelist; unsigned use_redirector:1; @@ -144,6 +147,18 @@ surbl_module_init (struct config_file *cfg, struct module_ctx **ctx) else { surbl_module_ctx->suffix = DEFAULT_SURBL_SUFFIX; } + if ((value = get_module_opt (cfg, "surbl", "symbol")) != NULL) { + surbl_module_ctx->symbol = value; + } + else { + surbl_module_ctx->symbol = DEFAULT_SURBL_SYMBOL; + } + if ((value = get_module_opt (cfg, "surbl", "metric")) != NULL) { + surbl_module_ctx->metric = value; + } + else { + surbl_module_ctx->metric = DEFAULT_METRIC; + } surbl_module_ctx->hosters = g_hash_table_new (g_str_hash, g_str_equal); surbl_module_ctx->whitelist = g_hash_table_new (g_str_hash, g_str_equal); @@ -265,13 +280,14 @@ static void dns_callback (int result, char type, int count, int ttl, void *addresses, void *data) { struct memcached_param *param = (struct memcached_param *)data; - struct filter_result *res; /* If we have result from DNS server, this url exists in SURBL, so increase score */ if (result != DNS_ERR_NONE || type != DNS_IPv4_A) { msg_info ("surbl_check: url %s is in surbl %s", param->url->host, surbl_module_ctx->suffix); - res = TAILQ_LAST (¶m->task->results, resultsq); - res->mark += surbl_module_ctx->weight; + insert_result (param->task, surbl_module_ctx->metric, surbl_module_ctx->symbol, 1); + } + else { + insert_result (param->task, surbl_module_ctx->metric, surbl_module_ctx->symbol, 0); } param->task->save.saved --; @@ -292,7 +308,6 @@ memcached_callback (memcached_ctx_t *ctx, memc_error_t error, void *data) { struct memcached_param *param = (struct memcached_param *)data; int *url_count; - struct filter_result *res; char *surbl_req; switch (ctx->op) { @@ -335,8 +350,7 @@ memcached_callback (memcached_ctx_t *ctx, memc_error_t error, void *data) /* Do not check DNS for urls that have count more than max_urls */ if (*url_count > surbl_module_ctx->max_urls) { msg_info ("memcached_callback: url '%s' has count %d, max: %d", struri (param->url), *url_count, surbl_module_ctx->max_urls); - res = TAILQ_LAST (¶m->task->results, resultsq); - res->mark += surbl_module_ctx->weight; + insert_result (param->task, surbl_module_ctx->metric, surbl_module_ctx->symbol, 1); } (*url_count) ++; memc_set (param->ctx, param->ctx->param, surbl_module_ctx->url_expire); |