From: Vsevolod Stakhov Date: Mon, 20 Jul 2015 22:27:12 +0000 (+0100) Subject: Start reworking of ip_score. X-Git-Tag: 1.0.0~325 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=52e716a00e86f77812ec10968c68789ec3a8bdee;p=thirdparty%2Frspamd.git Start reworking of ip_score. --- diff --git a/src/lua/lua_mempool.c b/src/lua/lua_mempool.c index 9451782a02..b48deac320 100644 --- a/src/lua/lua_mempool.c +++ b/src/lua/lua_mempool.c @@ -184,7 +184,7 @@ lua_mempool_set_variable (lua_State *L) gchar *vp; union { gdouble d; - gchar *s; + const gchar *s; gboolean b; } val; gsize slen; @@ -232,8 +232,7 @@ lua_mempool_set_variable (lua_State *L) vp += sizeof (gboolean); } else if (type == LUA_TSTRING) { - val.s = rspamd_mempool_strdup (mempool, - lua_tolstring (L, i, &slen)); + val.s = lua_tolstring (L, i, &slen); memcpy (vp, val.s, slen + 1); vp += slen + 1; } diff --git a/src/plugins/lua/ip_score.lua b/src/plugins/lua/ip_score.lua index 69aa7cd720..b978963b84 100644 --- a/src/plugins/lua/ip_score.lua +++ b/src/plugins/lua/ip_score.lua @@ -33,28 +33,25 @@ local _ = require "fun" -- Default settings local default_port = 6379 -local asn_provider = 'origin.asn.cymru.com' local upstreams = nil -local metric = 'default' -local scores = { - ['reject'] = 3, - ['add header'] = 1, - ['rewrite subject'] = 1, - ['no action'] = -2 +local whitelist = nil + +local options = { + asn_provider = 'origin.asn.cymru.com', + scores = { + ['reject'] = 1.0, + ['add header'] = 0.25, + ['rewrite subject'] = 0.25, + ['no action'] = -1.0 + }, + symbol = 'IP_SCORE', + hash = 'ip_score', + asn_prefix = 'a:', + country_prefix = 'c:', + ipnet_prefix = 'n:', + servers = '', } -local reject_score = 3 -local add_header_score = 1 -local no_action_score = -2 -local symbol = 'IP_SCORE' -local score_hash = 'ip_score' -local asn_prefix = 'a:' -local country_prefix = 'c:' -local ipnet_prefix = 'n:' --- This score is used for normalization of scores from keystorage -local normalize_score = 100 -local whitelist = nil -local expire = 240 local asn_re = rspamd_regexp.create_cached("[\\|\\s]") local function asn_check(task) @@ -253,59 +250,21 @@ end local configure_ip_score_module = function() local opts = rspamd_config:get_all_opt('ip_score') if opts then - if opts['metric'] then - metric = opts['metric'] - end - if opts['reject_score'] then - reject_score = opts['reject_score'] - end - if opts['add_header_score'] then - add_header_score = opts['add_header_score'] - end - if opts['no_action_score'] then - no_action_score = opts['no_action_score'] - end - if opts['symbol'] then - symbol = opts['symbol'] - end - if opts['normalize_score'] then - normalize_score = opts['normalize_score'] + for k,v in pairs(opts) do + options[k] = v end - if opts['threshold'] then - normalize_score = opts['normalize_score'] - end - if opts['whitelist'] then - whitelist = rspamd_config:add_radix_map(opts['whitelist']) - end - if opts['expire'] then - expire = opts['expire'] - end - if opts['prefix'] then - prefix = opts['prefix'] - end - if opts['asn_provider'] then - asn_provider = opts['asn_provider'] - end - if opts['servers'] then + if options['servers'] then upstreams = upstream_list.create(opts['servers'], default_port) if not upstreams then rspamd_logger.err('no servers are specified') end end + if options['whitelist'] then + whitelist = rspamd_config:add_radix_map(opts['whitelist']) + end end end --- Registration -rspamd_config:register_module_option('ip_score', 'keystorage_host', 'string') -rspamd_config:register_module_option('ip_score', 'keystorage_port', 'uint') -rspamd_config:register_module_option('ip_score', 'metric', 'string') -rspamd_config:register_module_option('ip_score', 'reject_score', 'int') -rspamd_config:register_module_option('ip_score', 'add_header_score', 'int') -rspamd_config:register_module_option('ip_score', 'no_action_score', 'int') -rspamd_config:register_module_option('ip_score', 'symbol', 'string') -rspamd_config:register_module_option('ip_score', 'normalize_score', 'uint') -rspamd_config:register_module_option('ip_score', 'whitelist', 'map') -rspamd_config:register_module_option('ip_score', 'expire', 'uint') configure_ip_score_module() if upstreams and normalize_score > 0 then