]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Unify check_auth/check_local options
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 2 Oct 2018 11:55:55 +0000 (12:55 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 2 Oct 2018 11:55:55 +0000 (12:55 +0100)
src/plugins/dkim_check.c
src/plugins/lua/dmarc.lua
src/plugins/lua/hfilter.lua
src/plugins/lua/ip_score.lua
src/plugins/lua/once_received.lua
src/plugins/lua/spamtrap.lua
src/plugins/spf.c

index 67aa8eb8e566309ab3497063dcbdb5780bdd72b0..f728fb5ec4e1165162b084e0770d89d44650125a 100644 (file)
@@ -320,15 +320,26 @@ dkim_module_config (struct rspamd_config *cfg)
        lua_pop (cfg->lua_state, 1); /* Remove global function */
        dkim_module_ctx->whitelist_ip = NULL;
 
-       if ((value =
-                       rspamd_config_get_module_opt (cfg, "dkim", "check_local")) != NULL) {
+       value = rspamd_config_get_module_opt (cfg, "dkim", "check_local");
+
+       if (value == NULL) {
+               rspamd_config_get_module_opt (cfg, "options", "check_local");
+       }
+
+       if (value != NULL) {
                dkim_module_ctx->check_local = ucl_object_toboolean (value);
        }
        else {
                dkim_module_ctx->check_local = FALSE;
        }
-       if ((value =
-               rspamd_config_get_module_opt (cfg, "dkim", "check_authed")) != NULL) {
+
+       value = rspamd_config_get_module_opt (cfg, "dkim", "check_authed");
+
+       if (value == NULL) {
+               rspamd_config_get_module_opt (cfg, "options", "check_authed");
+       }
+
+       if (value != NULL) {
                dkim_module_ctx->check_authed = ucl_object_toboolean (value);
        }
        else {
index 38f54f1f8616c322b6cfaac260d1494194f0f0a6..69e210e4717bf1978841dffba93cce45b1642209 100644 (file)
@@ -561,17 +561,26 @@ local function dmarc_callback(task)
     forced = true})
 end
 
-local opts = rspamd_config:get_all_opt('options')
-if type(opts) == 'table' then
-  if type(opts['check_local']) == 'boolean' then
-    check_local = opts['check_local']
-  end
-  if type(opts['check_authed']) == 'boolean' then
-    check_authed = opts['check_authed']
+local function try_opts(where)
+  local ret = false
+  local opts = rspamd_config:get_all_opt(where)
+  if type(opts) == 'table' then
+    if type(opts['check_local']) == 'boolean' then
+      check_local = opts['check_local']
+      ret = true
+    end
+    if type(opts['check_authed']) == 'boolean' then
+      check_authed = opts['check_authed']
+      ret = true
+    end
   end
+
+  return ret
 end
 
-opts = rspamd_config:get_all_opt('dmarc')
+if not try_opts(N) then try_opts('options') end
+
+local opts = rspamd_config:get_all_opt('dmarc')
 if not opts or type(opts) ~= 'table' then
   return
 end
index b63483f41fb58c7ee20abff89ce8af9f3fd9b185..334378ba42d56d34c8c78d65ed27dd16aa70b323 100644 (file)
@@ -569,17 +569,26 @@ local symbols_from = {
   "HFILTER_FROM_BOUNCE"
 }
 
-local opts = rspamd_config:get_all_opt('options')
-if type(opts) == 'table' then
-  if type(opts['check_local']) == 'boolean' then
-    check_local = opts['check_local']
-  end
-  if type(opts['check_authed']) == 'boolean' then
-    check_authed = opts['check_authed']
+local function try_opts(where)
+  local ret = false
+  local opts = rspamd_config:get_all_opt(where)
+  if type(opts) == 'table' then
+    if type(opts['check_local']) == 'boolean' then
+      check_local = opts['check_local']
+      ret = true
+    end
+    if type(opts['check_authed']) == 'boolean' then
+      check_authed = opts['check_authed']
+      ret = true
+    end
   end
+
+  return ret
 end
 
-opts = rspamd_config:get_all_opt('hfilter')
+if not try_opts(N) then try_opts('options') end
+
+local opts = rspamd_config:get_all_opt('hfilter')
 if opts then
   for k,v in pairs(opts) do
     config[k] = v
index 47b000b8b8f4339e00fb0546e65819b74566861a..d3aec22643dc31b2ee4a4cb135f3b8480e6d0309 100644 (file)
@@ -356,18 +356,29 @@ local ip_score_check = function(task)
   end
 end
 
-
--- Configuration options
-local configure_ip_score_module = function()
-  local opts = rspamd_config:get_all_opt(N)
+local function try_opts(where)
+  local ret = false
+  local opts = rspamd_config:get_all_opt(where)
   if type(opts) == 'table' then
-    if type(opts['check_authed']) == 'boolean' then
-      check_authed = opts['check_authed']
-    end
     if type(opts['check_local']) == 'boolean' then
       check_local = opts['check_local']
+      ret = true
+    end
+    if type(opts['check_authed']) == 'boolean' then
+      check_authed = opts['check_authed']
+      ret = true
     end
   end
+
+  return ret
+end
+
+if not try_opts(N) then try_opts('options') end
+
+-- Configuration options
+local configure_ip_score_module = function()
+  local opts = rspamd_config:get_all_opt(N)
+
   if not opts then return end
   for k,v in pairs(opts) do
     options[k] = v
index b09a87dbebfef8f4d8325ea983eb8709628bef05..c8c47ddb119fc22e55a493f54fa940e7735a9c66 100644 (file)
@@ -32,6 +32,7 @@ local whitelist = nil
 
 local rspamd_logger = require "rspamd_logger"
 local fun = require "fun"
+local N = 'once_received'
 
 local check_local = false
 local check_authed = false
@@ -152,17 +153,27 @@ local function check_quantity_received (task)
   end
 end
 
-local opts = rspamd_config:get_all_opt('options')
-if type(opts) == 'table' then
-  if type(opts['check_local']) == 'boolean' then
-    check_local = opts['check_local']
-  end
-  if type(opts['check_authed']) == 'boolean' then
-    check_authed = opts['check_authed']
+local function try_opts(where)
+  local ret = false
+  local opts = rspamd_config:get_all_opt(where)
+  if type(opts) == 'table' then
+    if type(opts['check_local']) == 'boolean' then
+      check_local = opts['check_local']
+      ret = true
+    end
+    if type(opts['check_authed']) == 'boolean' then
+      check_authed = opts['check_authed']
+      ret = true
+    end
   end
+
+  return ret
 end
+
+if not try_opts(N) then try_opts('options') end
+
 -- Configuration
-opts = rspamd_config:get_all_opt('once_received')
+local opts = rspamd_config:get_all_opt(N)
 if opts then
   if opts['symbol'] then
     symbol = opts['symbol']
index cf0b89957c21bc424d1a1ae6f583eb6c3eaa8f44..f1582f8ce0a23ecc242d9e46e7587593d473d33e 100644 (file)
@@ -31,10 +31,11 @@ local settings = {
   fuzzy_flag = 1,
   fuzzy_weight = 10.0,
   key_prefix = 'sptr_',
-  check_authed = true,
-  check_local = true,
 }
 
+local check_authed = true
+local check_local = true
+
 local function spamtrap_cb(task)
   local rcpts = task:get_recipients('smtp')
   local authed_user = task:get_user()
@@ -42,8 +43,8 @@ local function spamtrap_cb(task)
   local called_for_domain = false
   local target
 
-  if ((not settings['check_authed'] and authed_user) or
-      (not settings['check_local'] and ip_addr and ip_addr:is_local())) then
+  if ((not check_authed and authed_user) or
+      (not check_local and ip_addr and ip_addr:is_local())) then
     rspamd_logger.infox(task, "skip spamtrap checks for local networks or authenticated user");
     return
   end
@@ -141,6 +142,26 @@ if not (opts and type(opts) == 'table') then
   rspamd_logger.infox(rspamd_config, 'module is unconfigured')
   return
 end
+
+local function try_opts(where)
+  local ret = false
+  local opts = rspamd_config:get_all_opt(where)
+  if type(opts) == 'table' then
+    if type(opts['check_local']) == 'boolean' then
+      check_local = opts['check_local']
+      ret = true
+    end
+    if type(opts['check_authed']) == 'boolean' then
+      check_authed = opts['check_authed']
+      ret = true
+    end
+  end
+
+  return ret
+end
+
+if not try_opts(M) then try_opts('options') end
+
 if opts then
   for k,v in pairs(opts) do
     settings[k] = v
index 5ec5bfcfc3258cb609036249426b68daa6a67b9f..46160878fb2cc3b1b884ee6d4fd729d667ce0caf 100644 (file)
@@ -206,15 +206,26 @@ spf_module_config (struct rspamd_config *cfg)
 
        spf_module_ctx->whitelist_ip = NULL;
 
-       if ((value =
-               rspamd_config_get_module_opt (cfg, "options", "check_local")) != NULL) {
+       value = rspamd_config_get_module_opt (cfg, "spf", "check_local");
+
+       if (value == NULL) {
+               rspamd_config_get_module_opt (cfg, "options", "check_local");
+       }
+
+       if (value != NULL) {
                spf_module_ctx->check_local = ucl_obj_toboolean (value);
        }
        else {
                spf_module_ctx->check_local = FALSE;
        }
-       if ((value =
-               rspamd_config_get_module_opt (cfg, "options", "check_authed")) != NULL) {
+
+       value = rspamd_config_get_module_opt (cfg, "spf", "check_authed");
+
+       if (value == NULL) {
+               rspamd_config_get_module_opt (cfg, "options", "check_authed");
+       }
+
+       if (value != NULL) {
                spf_module_ctx->check_authed = ucl_obj_toboolean (value);
        }
        else {