diff options
author | Andrew Lewis <nerf@judo.za.org> | 2017-03-13 12:14:25 +0200 |
---|---|---|
committer | Andrew Lewis <nerf@judo.za.org> | 2017-03-13 12:14:25 +0200 |
commit | d94f142388d31f562bfcb15ce4870034f3d30fac (patch) | |
tree | b774f84bb7f533eda5a08b0bbcae8dbc7b69d05d /src | |
parent | dfc2fe8153d1dc6a4271373059f215029ca4a2e1 (diff) | |
download | rspamd-d94f142388d31f562bfcb15ce4870034f3d30fac.tar.gz rspamd-d94f142388d31f562bfcb15ce4870034f3d30fac.zip |
[Fix] Deal with lists of maps in whitelist module
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/lua/whitelist.lua | 29 |
1 files changed, 25 insertions, 4 deletions
diff --git a/src/plugins/lua/whitelist.lua b/src/plugins/lua/whitelist.lua index 710b22eff..f8c5b1b9b 100644 --- a/src/plugins/lua/whitelist.lua +++ b/src/plugins/lua/whitelist.lua @@ -45,6 +45,17 @@ local function whitelist_cb(symbol, rule, task) table.insert(domains, dom) return true,mult end + elseif rule['maps'] then + for map, mult in pairs(rule['maps']) do + local val = map:get_key(dom) + if val then + if #val > 0 then + mult = tonumber(val) + end + table.insert(domains, dom) + return true,mult + end + end else mult = rule['domains'][dom] if mult then @@ -190,16 +201,26 @@ local configure_whitelist_module = function() elseif type(rule['domains']) == 'table' then -- Transform ['domain1', 'domain2' ...] to indexes: -- {'domain1' = 1, 'domain2' = 1 ...] - rule['domains'] = fun.tomap(fun.map(function(d) - local name = d + rule['maps'] = fun.tomap(fun.map(function(d) + local name local value = 1 if type(d) == 'table' then - name = d[1] + name = rspamd_config:add_map({ + url = d[1], + type = 'map', + }) value = tonumber(d[2]) + else + name = rspamd_config:add_map({ + url = d, + type = 'map', + }) end - return name,value + if name and value then + return name,value + end end, rule['domains'])) else rspamd_logger.errx(rspamd_config, 'whitelist %s has bad "domains" value', |