From: Andrew Lewis Date: Tue, 1 Nov 2016 08:34:24 +0000 (+0200) Subject: [Minor] Get rid of some global variables X-Git-Tag: 1.4.0~149^2 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=36d11e2e6fe28672904bf91f6e5eaeca87103705;p=rspamd.git [Minor] Get rid of some global variables - Also fix some bugs along the way --- diff --git a/src/plugins/lua/asn.lua b/src/plugins/lua/asn.lua index 75d495d79..c31cc46c5 100644 --- a/src/plugins/lua/asn.lua +++ b/src/plugins/lua/asn.lua @@ -86,7 +86,7 @@ local function asn_check(task) redis_key, tostring(options['expire']) }) else - rspamd_logger.infox(task, 'got error while connecting to redis: %1', addr) + rspamd_logger.infox(task, 'got error while connecting to redis: %1', upstream:get_addr()) upstream:fail() end end diff --git a/src/plugins/lua/dmarc.lua b/src/plugins/lua/dmarc.lua index 3b380c38b..42f8d5ae3 100644 --- a/src/plugins/lua/dmarc.lua +++ b/src/plugins/lua/dmarc.lua @@ -96,7 +96,7 @@ local function dmarc_callback(task) local dmarc_domain local ip_addr = task:get_ip() - if ((not check_user and task:get_user()) or + if ((not check_authed and task:get_user()) or (not check_local and ip_addr and ip_addr:is_local())) then rspamd_logger.infox(task, "skip DMARC checks for local networks and authorized users"); return @@ -145,6 +145,7 @@ local function dmarc_callback(task) return maybe_force_action('na') end + local pct local reason = {} local strict_spf = false local strict_dkim = false @@ -221,7 +222,7 @@ local function dmarc_callback(task) end end - local pct = elts['pct'] + pct = elts['pct'] if pct then pct = tonumber(pct) end diff --git a/src/plugins/lua/greylist.lua b/src/plugins/lua/greylist.lua index 5e0ce9ff1..4117b9db2 100644 --- a/src/plugins/lua/greylist.lua +++ b/src/plugins/lua/greylist.lua @@ -226,7 +226,7 @@ local function greylist_check(task) end end - local ret + local ret, _ ret,_,upstream = rspamd_redis_make_request(task, redis_params, -- connect params hash_key, -- hash key @@ -312,7 +312,7 @@ local function greylist_set(task) meta_key, tostring(settings['expire']) }) else - rspamd_logger.infox(task, 'got error while connecting to redis: %1', addr) + rspamd_logger.infox(task, 'got error while connecting to redis: %1', upstream:get_addr()) upstream:fail() end elseif do_greylisting or do_greylisting_required then diff --git a/src/plugins/lua/metric_exporter.lua b/src/plugins/lua/metric_exporter.lua index c4a0cdc0e..39a02665b 100644 --- a/src/plugins/lua/metric_exporter.lua +++ b/src/plugins/lua/metric_exporter.lua @@ -66,7 +66,7 @@ local function graphite_config(opts) return false end for _, v in ipairs(settings['metrics']) do - isvalid = false + local isvalid = false for _, vm in ipairs(valid_metrics) do if vm == v then isvalid = true @@ -95,6 +95,7 @@ local function graphite_push(kwargs) end local metrics_str = '' for _, v in ipairs(settings['metrics']) do + local mvalue local mname = string.format('%s.%s', settings['metric_prefix'], v:gsub(' ', '_')) local split = rspamd_str_split(v, '.') if #split == 1 then @@ -171,7 +172,7 @@ rspamd_config:add_on_load(function (cfg, ev_base, worker) end end) -- Push metrics to backend - function push_metrics(worker, time) + local function push_metrics(worker, time) logger.infox('Pushing metrics to %s backend', settings['backend']) local args = { ev_base = ev_base, @@ -182,21 +183,21 @@ rspamd_config:add_on_load(function (cfg, ev_base, worker) end backends[settings['backend']]['push'](args) end + -- Push metrics at regular intervals + local function schedule_regular_push() + rspamd_config:add_periodic(ev_base, settings['interval'], function (cfg, ev_base) + push_metrics(worker) + return true + end) + end -- Push metrics to backend and reschedule check - function schedule_intermediate_push(when) + local function schedule_intermediate_push(when) rspamd_config:add_periodic(ev_base, when, function (cfg, ev_base) push_metrics(worker) schedule_regular_push() return false end) end - -- Push metrics at regular intervals - function schedule_regular_push() - rspamd_config:add_periodic(ev_base, settings['interval'], function (cfg, ev_base) - push_metrics(worker) - return true - end) - end -- Try read statefile on startup local stamp local f, err = io.open(settings['statefile'], 'r') diff --git a/src/plugins/lua/multimap.lua b/src/plugins/lua/multimap.lua index 99295b138..f01c1cdd5 100644 --- a/src/plugins/lua/multimap.lua +++ b/src/plugins/lua/multimap.lua @@ -255,9 +255,9 @@ local function apply_regexp_filter(task, filter, fn, r) if not r['re_filter'] then rspamd_logger.errx(task, 'bad search filter: %s', filter) else - local results = r['re_filter']:search(fn) + local results = r['re_filter']:search(fn, false, true) if results then - return results[1] + return results[1][2] else return nil end @@ -305,7 +305,7 @@ local multimap_filters = { header = apply_addr_filter, url = apply_url_filter, filename = apply_filename_filter, - mempool = apply_regex_filter, + mempool = apply_regexp_filter, --content = apply_content_filter, -- Content filters are special :( } diff --git a/src/plugins/lua/phishing.lua b/src/plugins/lua/phishing.lua index adddce255..657ff6ba7 100644 --- a/src/plugins/lua/phishing.lua +++ b/src/plugins/lua/phishing.lua @@ -49,6 +49,7 @@ local function phishing_cb(task) local found_path = false local found_query = false local data = nil + local d if elt then local path = url:get_path() @@ -168,7 +169,7 @@ local function phishing_cb(task) end end -local function phishing_map(mapname, phishmap) +local function phishing_map(mapname, phishmap, id) if opts[mapname] then local xd = {} if type(opts[mapname]) == 'table' then @@ -331,10 +332,11 @@ local function phishtank_json_cb(string) end if opts then + local id if opts['symbol'] then symbol = opts['symbol'] -- Register symbol's callback - local id = rspamd_config:register_symbol({ + id = rspamd_config:register_symbol({ name = symbol, callback = phishing_cb }) @@ -396,13 +398,13 @@ if opts then name = phishtank_symbol, }) end - if opts['domains'] and type(opt['domains']) == 'string' then + if opts['domains'] and type(opts['domains']) == 'string' then domains = rspamd_config:add_map({ url = opts['domains'], type = 'set', description = 'Phishing domains' }) end - phishing_map('strict_domains', strict_domains) - phishing_map('redirector_domains', redirector_domains) + phishing_map('strict_domains', strict_domains, id) + phishing_map('redirector_domains', redirector_domains, id) end diff --git a/src/plugins/lua/rbl.lua b/src/plugins/lua/rbl.lua index c831af41a..eb774e5b4 100644 --- a/src/plugins/lua/rbl.lua +++ b/src/plugins/lua/rbl.lua @@ -72,7 +72,7 @@ local function rbl_cb (task) end for _,result in pairs(results) do local ipstr = result:to_string() - local foundrc + local foundrc, s for s,i in pairs(rbl['returncodes']) do if type(i) == 'string' then if string.find(ipstr, '^' .. i .. '$') then @@ -392,7 +392,7 @@ end -- Plugin defaults should not be changed - override these in config -- New defaults should not alter behaviour -default_defaults = { +local default_defaults = { ['default_ipv4'] = {[1] = true, [2] = 'ipv4'}, ['default_ipv6'] = {[1] = false, [2] = 'ipv6'}, ['default_received'] = {[1] = true, [2] = 'received'}, @@ -433,6 +433,7 @@ local id = rspamd_config:register_symbol({ for key,rbl in pairs(opts['rbls']) do (function() if rbl['disabled'] then return end + local s for default, default_v in pairs(default_defaults) do if(rbl[default_v[2]] == nil) then rbl[default_v[2]] = opts[default] @@ -526,7 +527,7 @@ for key,rbl in pairs(opts['rbls']) do end for _, w in pairs(white_symbols) do for _, b in pairs(black_symbols) do - csymbol = 'RBL_COMPOSITE_' .. w .. '_' .. b + local csymbol = 'RBL_COMPOSITE_' .. w .. '_' .. b rspamd_config:set_metric_symbol(csymbol, 0, 'Autogenerated composite') rspamd_config:add_composite(csymbol, w .. ' & ' .. b) end diff --git a/test/functional/configs/multimap.conf b/test/functional/configs/multimap.conf index fc20fa14c..7c3d21fd4 100644 --- a/test/functional/configs/multimap.conf +++ b/test/functional/configs/multimap.conf @@ -110,6 +110,6 @@ multimap { type = "mempool"; variable = "asn"; map = "redis://asn"; - filter = "regexp:/^(\d).*/"; + filter = "regexp:/^([0-9]).*/"; } }