Browse Source

[Feature] Rbl: Make config checks much more strict

tags/2.0
Vsevolod Stakhov 4 years ago
parent
commit
9a7f377edf
2 changed files with 11 additions and 5 deletions
  1. 1
    0
      lualib/lua_cfg_transform.lua
  2. 10
    5
      src/plugins/lua/rbl.lua

+ 1
- 0
lualib/lua_cfg_transform.lua View File

@@ -257,6 +257,7 @@ local function surbl_section_convert(cfg, section)
if k == 'suffix' then k = 'rbl' end
if k == 'ips' then k = 'returncodes' end
if k == 'bits' then k = 'returnbits' end
if k == 'noip' then k = 'no_ip' end
-- Crappy legacy
if k == 'options' then
if v == 'noip' or v == 'no_ip' then

+ 10
- 5
src/plugins/lua/rbl.lua View File

@@ -1017,6 +1017,7 @@ local default_options = {
['default_no_ip'] = false,
['default_images'] = false,
['default_replyto'] = false,
['default_dkim_match_from'] = false,
}

opts = lua_util.override_defaults(default_options, opts)
@@ -1048,7 +1049,7 @@ local return_bits_schema = ts.map_of(
)
)

local rule_schema = ts.shape({
local rule_schema_tbl = {
enabled = ts.boolean:is_optional(),
disabled = ts.boolean:is_optional(),
rbl = ts.string,
@@ -1070,11 +1071,15 @@ local rule_schema = ts.shape({
requests_limit = (ts.integer + ts.string / tonumber):is_optional(),
process_script = ts.string:is_optional(),
emails_delimiter = ts.string:is_optional(),
ignore_defaults = ts.boolean:is_optional(),
symbols_prefixes = ts.map_of(ts.string, ts.string):is_optional(),
}, {
-- Covers boolean defaults
extra_fields = ts.map_of(ts.string, ts.boolean)
})
}
-- Add default boolean flags to the schema
for def_k,_ in pairs(default_options) do
rule_schema_tbl[def_k:sub(#('default_') + 1)] = ts.boolean:is_optional()
end

local rule_schema = ts.shape(rule_schema_tbl)

for key,rbl in pairs(opts.rbls or opts.rules) do
if type(rbl) ~= 'table' or rbl.disabled == true or rbl.enabled == false then

Loading…
Cancel
Save