summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAndrew Lewis <nerf@judo.za.org>2017-03-13 12:14:25 +0200
committerAndrew Lewis <nerf@judo.za.org>2017-03-13 12:14:25 +0200
commitd94f142388d31f562bfcb15ce4870034f3d30fac (patch)
treeb774f84bb7f533eda5a08b0bbcae8dbc7b69d05d /src
parentdfc2fe8153d1dc6a4271373059f215029ca4a2e1 (diff)
downloadrspamd-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.lua29
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',