]> source.dussan.org Git - rspamd.git/commitdiff
[Feature] Rbl: Make config checks much more strict
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 30 Sep 2019 15:07:45 +0000 (16:07 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 30 Sep 2019 15:07:45 +0000 (16:07 +0100)
lualib/lua_cfg_transform.lua
src/plugins/lua/rbl.lua

index 17e77645dfce14b44775b38df7e9caeb934886c1..ae7d8997cc10a67d865bdd76d4787414236ea11c 100644 (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
index 59ac8f7e1a6ef08e3a540aa329bdebf965cb2d34..a3a9ffb63b0bc48025ba9253b7be8b2f3e03af5f 100644 (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