]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Minor] Lua_util: Add callback_from_string routine
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 31 May 2019 15:16:16 +0000 (16:16 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 31 May 2019 15:16:16 +0000 (16:16 +0100)
lualib/lua_util.lua

index 3e443bce3508f97827581303a6bd988ae0af1316..3d1a2e732983d7bebce1011befa79cf50713e0e3 100644 (file)
@@ -968,4 +968,24 @@ exports.maybe_obfuscate_string = function(subject, settings, prefix)
   return subject
 end
 
+---[[[
+-- @function lua_util.callback_from_string(str)
+-- Converts a string like `return function(...) end` to lua function or emits error using
+-- `rspamd_config` superglobal
+-- @return function object or nil
+--]]]
+exports.callback_from_string = function(str)
+  local loadstring = loadstring or load
+  local ret, res_or_err = pcall(loadstring(str))
+
+  if not ret or type(res_or_err) ~= 'function' then
+    rspamd_logger.errx(rspamd_config, 'invalid callback (%s) - must be a function',
+        res_or_err)
+
+    return nil
+  end
+
+  return res_or_err
+end
+
 return exports