commit c116e4e: [Feature] Milter_headers: Allow to activate routines via users settings
Vsevolod Stakhov
vsevolod at highsecure.ru
Fri Sep 11 10:21:06 UTC 2020
Author: Vsevolod Stakhov
Date: 2020-09-11 11:20:24 +0100
URL: https://github.com/rspamd/rspamd/commit/c116e4e35c7caf9b9cd454d85ea088a2c960f62f (HEAD -> master)
[Feature] Milter_headers: Allow to activate routines via users settings
---
src/plugins/lua/milter_headers.lua | 31 ++++++++++++++++++++++++++-----
1 file changed, 26 insertions(+), 5 deletions(-)
diff --git a/src/plugins/lua/milter_headers.lua b/src/plugins/lua/milter_headers.lua
index d6b06c9a9..1512417ca 100644
--- a/src/plugins/lua/milter_headers.lua
+++ b/src/plugins/lua/milter_headers.lua
@@ -120,8 +120,12 @@ local custom_routines = {}
local function milter_headers(task)
- local function skip_wanted(hdr)
+ -- Used to override wanted stuff by means of settings
+ local settings_override = false
+ local function skip_wanted(hdr)
+ if settings_override then return true end
+ -- Normal checks
local function match_extended_headers_rcpt()
local rcpts = task:get_recipients('smtp')
if not rcpts then return false end
@@ -160,6 +164,11 @@ local function milter_headers(task)
end
+ -- XXX: fix this crap one day
+ -- routines - are closures that encloses all environment including task
+ -- common - a common environment shared between routines
+ -- add - add headers table (filled by routines)
+ -- remove - remove headers table (filled by routines)
local routines, common, add, remove = {}, {}, {}, {}
local function add_header(name, value, stop_chars, order)
@@ -476,7 +485,20 @@ local function milter_headers(task)
end
end
- for _, n in ipairs(active_routines) do
+ local routines_enabled = active_routines
+ local user_settings = task:cache_get('settings')
+ if user_settings and user_settings.plugins then
+ user_settings = user_settings.plugins.milter_headers or E
+ end
+
+ if user_settings and type(user_settings.routines) == 'table' then
+ lua_util.debugm(N, task, 'override routines to %s from user settings',
+ user_settings.routines)
+ routines_enabled = user_settings.routines
+ settings_override = true
+ end
+
+ for _, n in ipairs(routines_enabled) do
local ok, err
if custom_routines[n] then
local to_add, to_remove, common_in
@@ -557,9 +579,8 @@ local function activate_routine(s)
have_routine[s] = true
table.insert(active_routines, s)
if (opts.routines and opts.routines[s]) then
- for k, v in pairs(opts.routines[s]) do
- settings.routines[s][k] = v
- end
+ settings.routines[s] = lua_util.override_defaults(settings.routines[s],
+ opts.routines[s])
end
end
else
More information about the Commits
mailing list