aboutsummaryrefslogtreecommitdiffstats
path: root/lualib/lua_selectors
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2020-05-14 13:16:06 +0100
committerVsevolod Stakhov <vsevolod@highsecure.ru>2020-05-14 13:16:06 +0100
commitd43b852a028b6c77f1641361bff3d96f0d0ef4a8 (patch)
treed445fd1b4328689b08b8a098cf83fb8c4abc08b6 /lualib/lua_selectors
parentf5095168e1f44c8f02c462a9f34bf34169646492 (diff)
downloadrspamd-d43b852a028b6c77f1641361bff3d96f0d0ef4a8.tar.gz
rspamd-d43b852a028b6c77f1641361bff3d96f0d0ef4a8.zip
[Fix] Fix regexp selector and add flattening
Diffstat (limited to 'lualib/lua_selectors')
-rw-r--r--lualib/lua_selectors/transforms.lua18
1 files changed, 13 insertions, 5 deletions
diff --git a/lualib/lua_selectors/transforms.lua b/lualib/lua_selectors/transforms.lua
index bbf5f510a..6f5ed7027 100644
--- a/lualib/lua_selectors/transforms.lua
+++ b/lualib/lua_selectors/transforms.lua
@@ -202,16 +202,24 @@ the second argument is optional hash type (`blake2`, `sha256`, `sha1`, `sha512`,
local res = re:search(inp, false, true)
if res then
- if #res == 1 then
- return res[1],'string'
+ -- Map all results in a single list
+ local flattened_table = {}
+ local function flatten_table(tbl)
+ for _, v in ipairs(tbl) do
+ if type(v) == 'table' then
+ flatten_table(v)
+ else
+ table.insert(flattened_table, v)
+ end
+ end
end
-
- return res,'string_list'
+ flatten_table(res)
+ return flattened_table,'string_list'
end
return nil
end,
- ['description'] = 'Regexp matching',
+ ['description'] = 'Regexp matching, returns all matches flattened in a single list',
['args_schema'] = {ts.string}
},
-- Returns a value if it exists in some map (or acts like a `filter` function)