]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Allow to log configuration errors from plugins
authorVsevolod Stakhov <vsevolod@rspamd.com>
Mon, 7 Aug 2023 11:19:03 +0000 (12:19 +0100)
committerVsevolod Stakhov <vsevolod@rspamd.com>
Mon, 7 Aug 2023 11:19:03 +0000 (12:19 +0100)
lualib/lua_util.lua
src/plugins/lua/antivirus.lua
src/plugins/lua/bimi.lua
src/plugins/lua/reputation.lua

index 16d0096193200748c3f924f5187a834641e6d725..800d9fcb72b429622f98f8d4709c352840d9be57 100644 (file)
@@ -407,6 +407,26 @@ end
 
 exports.disable_module = disable_module
 
+--[[[
+-- @function lua_util.push_config_error(module, err)
+-- Pushes a configuration error to the state
+-- @param {string} module name of module
+-- @param {string} err error string
+--]]
+local function push_config_error(module, err)
+  if not rspamd_plugins_state.config_errors then
+    rspamd_plugins_state.config_errors = {}
+  end
+
+  if not rspamd_plugins_state.config_errors[module] then
+    rspamd_plugins_state.config_errors[module] = {}
+  end
+
+  table.insert(rspamd_plugins_state.config_errors[module], err)
+end
+
+exports.push_config_error = push_config_error
+
 --[[[
 -- @function lua_util.disable_module(modname)
 -- Checks experimental plugins state and disable if needed
index 26b8509b87f5ef96a1945e2159cdcbb9d82f4068..44fe10e981ba76cb17190ad5a799e554291653e3 100644 (file)
@@ -204,6 +204,7 @@ if opts and type(opts) == 'table' then
 
       if not cb then
         rspamd_logger.errx(rspamd_config, 'cannot add rule: "' .. k .. '"')
+        lua_util.push_config_error(N, 'cannot add AV rule: "' .. k .. '"')
       else
         rspamd_logger.infox(rspamd_config, 'added antivirus engine %s -> %s', k, m.symbol)
         local t = {
index e3f555e48129ba84873b704c867b30c20f0a2532..5959f59e7ab43ce9718519978054e44fb5c349ef 100644 (file)
@@ -353,7 +353,9 @@ local res, err = settings_schema:transform(settings)
 
 if not res then
   rspamd_logger.warnx(rspamd_config, 'plugin is misconfigured: %s', err)
-  lua_util.disable_module(N, "config")
+  local err_msg = string.format("schema error: %s", res)
+  lua_util.push_config_error(N, err_msg)
+  lua_util.disable_module(N, "failed", err_msg)
   return
 end
 
index 2fc1c3ad54c3e4a8c6480e39852d5e4dc13127bf..d569e90703d34331de7a87e0823dcdc5d8a61072 100644 (file)
@@ -1377,8 +1377,11 @@ if opts['rules'] then
   for k, v in pairs(opts['rules']) do
     if not ((v or E).selector) then
       rspamd_logger.errx(rspamd_config, "no selector defined for rule %s", k)
+      lua_util.push_config_error(N, "no selector defined for rule: " .. k)
     else
-      parse_rule(k, v)
+      if not parse_rule(k, v) then
+        lua_util.push_config_error(N, "reputation rule is misconfigured: " .. k)
+      end
     end
   end
 else