commit f2fce8e: [Project] Lua_mime: Add lua_mime.modify_headers routine
Vsevolod Stakhov
vsevolod at highsecure.ru
Fri Feb 26 15:35:06 UTC 2021
Author: Vsevolod Stakhov
Date: 2021-02-26 15:02:37 +0000
URL: https://github.com/rspamd/rspamd/commit/f2fce8e6ea1fd2112aa731b02e4697cf341c36ae
[Project] Lua_mime: Add lua_mime.modify_headers routine
---
lualib/lua_mime.lua | 44 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 44 insertions(+)
diff --git a/lualib/lua_mime.lua b/lualib/lua_mime.lua
index 847a00a69..5b1c857e9 100644
--- a/lualib/lua_mime.lua
+++ b/lualib/lua_mime.lua
@@ -510,5 +510,49 @@ exports.multipattern_text_replace = function(task, mp, replacements)
return state
end
+--[[[
+-- @function lua_mime.modify_headers(task, {add = {hname = {value = 'value', order = 1}}, remove = {hname = {1,2}}})
+-- Adds/removes headers both internal and in the milter reply
+--]]
+exports.modify_headers = function(task, hdr_alterations)
+ local add = hdr_alterations.add or {}
+ local remove = hdr_alterations.remove or {}
+
+ local hdr_flattened = {} -- For C API
+ for hname,hdr in pairs(add) do
+ if not hdr_flattened[hname] then
+ hdr_flattened[hname] = {add = {}}
+ end
+ local add_tbl = hdr_flattened[hname].add
+ if hdr.value then
+ table.insert(add_tbl, {hdr.order or -1, hdr.value})
+ else
+ table.insert(add_tbl, {-1, hdr})
+ end
+ end
+
+ for hname,hdr in pairs(remove) do
+ if not hdr_flattened[hname] then
+ hdr_flattened[hname] = {remove = {}}
+ end
+ local remove_tbl = hdr_flattened[hname].remove
+ if type(hdr) == 'number' then
+ table.insert(remove_tbl, hdr)
+ else
+ for _,num in ipairs(hdr) do
+ table.insert(remove_tbl, num)
+ end
+ end
+ end
+
+ task:set_milter_reply({
+ add_headers = add,
+ remove_headers = remove
+ })
+
+ for hname,flat_rules in pairs(hdr_flattened) do
+ task:modify_header(hname, flat_rules)
+ end
+end
return exports
More information about the Commits
mailing list