diff options
Diffstat (limited to 'lualib/maps.lua')
-rw-r--r-- | lualib/maps.lua | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/lualib/maps.lua b/lualib/maps.lua index 3cd01dcfe..917c6ca8e 100644 --- a/lualib/maps.lua +++ b/lualib/maps.lua @@ -131,4 +131,35 @@ end exports.rspamd_map_add = rspamd_map_add +-- Check `what` for being lua_map name, otherwise just compares key with what +local function rspamd_maybe_check_map(key, what) + local fun = require "fun" + + local function starts(where,st) + return string.sub(where,1,string.len(st))==st + end + + if type(what) == "table" then + return fun.any(function(elt) return rspamd_maybe_check_map(key, elt) end, what) + end + if type(rspamd_maps) == "table" then + local mn + if starts(what, "map:") then + mn = string.sub(what, 4) + elseif starts(what, "map://") then + mn = string.sub(what, 6) + end + + if mn and rspamd_maps[mn] then + return rspamd_maps[mn]:get_key(key) + end + else + return what:lower() == key + end + + return false +end + +exports.rspamd_maybe_check_map = rspamd_maybe_check_map + return exports |