Browse Source

[Minor] Selectors: Add extractor & transform for metatokens

pull/3548/head
Andrew Lewis 5 years ago
parent
commit
54e19913f1
  1. 16
      lualib/lua_selectors/extractors.lua
  2. 17
      lualib/lua_selectors/transforms.lua

16
lualib/lua_selectors/extractors.lua

@ -15,6 +15,7 @@ limitations under the License.
]]--
local fun = require 'fun'
local meta_functions = require "lua_meta"
local lua_util = require "lua_util"
local common = require "lua_selectors/common"
local ts = require("tableshape").types
@ -438,6 +439,21 @@ The first argument must be header name.]],
'Returns the result table. See task:get_metric_result()',
['args_schema'] = {ts.string:is_optional()}
},
-- Get list of metatokens as strings
['metatokens'] = {
['get_value'] = function(task)
local tokens = meta_functions.gen_metatokens(task)
if not tokens[1] then
return nil
end
local res = {}
for _, t in ipairs(tokens) do
table.insert(res, tostring(t))
end
return res, 'string_list'
end,
['description'] = 'Get metatokens for a message as strings',
},
}
return extractors

17
lualib/lua_selectors/transforms.lua

@ -441,6 +441,23 @@ Empty string comes the first argument or 'true', non-empty string comes nil]],
['description'] = 'Extracts tld from a hostname represented as a string',
['args_schema'] = {}
},
-- Converts list of strings to numbers and returns a packed string
['pack_numbers'] = {
['types'] = {
['string_list'] = true
},
['map_type'] = 'string',
['process'] = function(inp, _, args)
local fmt = args[1] or 'f'
local res = {}
for _, s in ipairs(inp) do
table.insert(res, tonumber(s))
end
return rspamd_util.pack(string.rep(fmt, #res), lua_util.unpack(res)), 'string'
end,
['description'] = 'Converts a list of strings to numbers & returns a packed string',
['args_schema'] = {ts.string:is_optional()}
},
}
transform_function.match = transform_function.regexp

Loading…
Cancel
Save