local rspamd_redis = require 'rspamd_redis'
local redis_params
-local settings = {
- [1] = {},
- [2] = {},
- [3] = {}
-}
+local settings = {}
local settings_ids = {}
local settings_initialized = false
local max_pri = 0
for pri = max_pri,1,-1 do
if not applied and settings[pri] then
- for name, r in pairs(settings[pri]) do
- local rule = check_specific_setting(name, r, ip, client_ip, from, rcpt, user, uname)
+ for _,s in ipairs(settings[pri]) do
+ local rule = check_specific_setting(s.name, s.rule, ip, client_ip, from, rcpt, user, uname)
if rule then
rspamd_logger.infox(task, "<%1> apply settings according to rule %2",
task:get_message_id(), name)
end
local s = process_setting_elt(k, v)
if s then
- settings[pri][k] = s
+ table.insert(settings[pri], {name = k, rule = s})
nrules = nrules + 1
end
end, ft)
+ -- sort settings with equal priopities in alphabetical order
+ for pri,_ in pairs(settings) do
+ table.sort(settings[pri], function(a,b) return a.name < b.name end)
+ end
settings_initialized = true
rspamd_logger.infox(rspamd_config, 'loaded %1 elements of settings', nrules)