aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2017-10-30 20:36:03 +0000
committerGitHub <noreply@github.com>2017-10-30 20:36:03 +0000
commit55a7e98fc0033d07d120c98c79ddaacdedca60d4 (patch)
tree36af57191f0b0e878e3c90dfd870eb17057cdd57 /src
parent2021ab74acee55b6103bd7b7f94975982f7497a3 (diff)
parentb66b4693c26c1177e055c3a7d27f12e45e71e666 (diff)
downloadrspamd-55a7e98fc0033d07d120c98c79ddaacdedca60d4.tar.gz
rspamd-55a7e98fc0033d07d120c98c79ddaacdedca60d4.zip
Merge pull request #1895 from fatalbanana/mmrf
[Minor] Multimap: support matching Received header flags
Diffstat (limited to 'src')
-rw-r--r--src/plugins/lua/multimap.lua25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/plugins/lua/multimap.lua b/src/plugins/lua/multimap.lua
index edfe4c7f6..6b27f5ff8 100644
--- a/src/plugins/lua/multimap.lua
+++ b/src/plugins/lua/multimap.lua
@@ -612,6 +612,21 @@ local function multimap_callback(task, rule)
end
end
end
+ local match_flags = r['flags']
+ local nmatch_flags = r['nflags']
+ if match_flags or nmatch_flags then
+ local got_flags = h['flags']
+ if match_flags then
+ for _, flag in ipairs(match_flags) do
+ if not got_flags[flag] then return end
+ end
+ end
+ if nmatch_flags then
+ for _, flag in ipairs(nmatch_flags) do
+ if got_flags[flag] then return end
+ end
+ end
+ end
if filter == 'real_ip' or filter == 'from_ip' then
if type(v) == 'string' then
v = rspamd_ip.from_string(v)
@@ -883,6 +898,16 @@ local function add_multimap_rule(key, newrule)
newrule['map'])
end
elseif newrule['type'] == 'received' then
+ if type(newrule['flags']) == 'table' and newrule['flags'][1] then
+ newrule['flags'] = newrule['flags']
+ elseif type(newrule['flags']) == 'string' then
+ newrule['flags'] = {newrule['flags']}
+ end
+ if type(newrule['nflags']) == 'table' and newrule['nflags'][1] then
+ newrule['nflags'] = newrule['nflags']
+ elseif type(newrule['nflags']) == 'string' then
+ newrule['nflags'] = {newrule['nflags']}
+ end
local filter = newrule['filter'] or 'real_ip'
if filter == 'real_ip' or filter == 'from_ip' then
newrule['radix'] = rspamd_config:add_map ({