Browse Source

[Minor] Move config stuff out

tags/3.7.1
Vsevolod Stakhov 10 months ago
parent
commit
1e84018e2a
No account linked to committer's email address

+ 67
- 0
lualib/lua_cfg_utils.lua View File

@@ -0,0 +1,67 @@
--[[
Copyright (c) 2023, Vsevolod Stakhov <vsevolod@rspamd.com>

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]--

--[[[
-- @module lua_cfg_utils
-- This module contains utility functions for configuration of Rspamd modules
--]]

local exports = {}

--[[[
-- @function lua_util.disable_module(modname, how[, reason])
-- Disables a plugin
-- @param {string} modname name of plugin to disable
-- @param {string} how 'redis' to disable redis, 'config' to disable startup
-- @param {string} reason optional reason for failure
--]]
exports.disable_module = function(modname, how, reason)
if rspamd_plugins_state.enabled[modname] then
rspamd_plugins_state.enabled[modname] = nil
end

if how == 'redis' then
rspamd_plugins_state.disabled_redis[modname] = {}
elseif how == 'config' then
rspamd_plugins_state.disabled_unconfigured[modname] = {}
elseif how == 'experimental' then
rspamd_plugins_state.disabled_experimental[modname] = {}
elseif how == 'failed' then
rspamd_plugins_state.disabled_failed[modname] = { reason = reason }
else
rspamd_plugins_state.disabled_unknown[modname] = {}
end
end

--[[[
-- @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
--]]
exports.push_config_error = function(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

return exports

+ 4
- 37
lualib/lua_util.lua View File

@@ -380,52 +380,10 @@ end

exports.spairs = spairs

--[[[
--]]
local function disable_module(modname, how, reason)
if rspamd_plugins_state.enabled[modname] then
rspamd_plugins_state.enabled[modname] = nil
end

if how == 'redis' then
rspamd_plugins_state.disabled_redis[modname] = {}
elseif how == 'config' then
rspamd_plugins_state.disabled_unconfigured[modname] = {}
elseif how == 'experimental' then
rspamd_plugins_state.disabled_experimental[modname] = {}
elseif how == 'failed' then
rspamd_plugins_state.disabled_failed[modname] = { reason = reason }
else
rspamd_plugins_state.disabled_unknown[modname] = {}
end
end

exports.disable_module = disable_module

--[[[
--]]
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
local lua_cfg_utils = require "lua_cfg_utils"

exports.push_config_error = push_config_error
exports.config_utils = lua_cfg_utils
exports.disable_module = lua_cfg_utils.disable_module

--[[[
-- @function lua_util.disable_module(modname)
@@ -437,7 +395,7 @@ local function check_experimental(modname)
if rspamd_config:experimental_enabled() then
return true
else
disable_module(modname, 'experimental')
lua_cfg_utils.disable_module(modname, 'experimental')
end

return false

+ 1
- 1
src/plugins/lua/antivirus.lua View File

@@ -204,7 +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 .. '"')
lua_util.config_utils.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 = {

+ 1
- 1
src/plugins/lua/bimi.lua View File

@@ -354,7 +354,7 @@ local res, err = settings_schema:transform(settings)
if not res then
rspamd_logger.warnx(rspamd_config, 'plugin is misconfigured: %s', err)
local err_msg = string.format("schema error: %s", res)
lua_util.push_config_error(N, err_msg)
lua_util.config_utils.push_config_error(N, err_msg)
lua_util.disable_module(N, "failed", err_msg)
return
end

+ 2
- 2
src/plugins/lua/reputation.lua View File

@@ -1377,10 +1377,10 @@ 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)
lua_util.config_utils.push_config_error(N, "no selector defined for rule: " .. k)
else
if not parse_rule(k, v) then
lua_util.push_config_error(N, "reputation rule is misconfigured: " .. k)
lua_util.config_utils.push_config_error(N, "reputation rule is misconfigured: " .. k)
end
end
end

Loading…
Cancel
Save