]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Minor] Fix strict config checks
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 21 Feb 2020 11:08:13 +0000 (11:08 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 21 Feb 2020 11:08:13 +0000 (11:08 +0000)
src/libserver/cfg_file.h
src/libserver/cfg_utils.c
src/lua/lua_common.c
src/lua/lua_common.h
src/lua/lua_config.c
src/lua/lua_util.c
src/rspamadm/configdump.c
src/rspamadm/confighelp.c
src/rspamadm/configtest.c
src/rspamd.c

index 1d782dd8b7da266d92803f027630992d780e5d13..b368464a0a493b1156fa8f92caffc71df50cd094 100644 (file)
@@ -656,7 +656,7 @@ void rspamd_ucl_add_conf_variables (struct ucl_parser *parser, GHashTable *vars)
  * @param reconfig
  * @return
  */
-gboolean rspamd_init_filters (struct rspamd_config *cfg, bool reconfig);
+gboolean rspamd_init_filters (struct rspamd_config *cfg, bool reconfig, bool strict);
 
 /**
  * Add new symbol to the metric
index bcebb9f937b15024ae17ec68d67c7776db3d9e29..6a076e673a1ddf89b6986fba1863566cead0e14b 100644 (file)
@@ -1532,7 +1532,7 @@ rspamd_check_worker (struct rspamd_config *cfg, worker_t *wrk)
 }
 
 gboolean
-rspamd_init_filters (struct rspamd_config *cfg, bool reconfig)
+rspamd_init_filters (struct rspamd_config *cfg, bool reconfig, bool strict)
 {
        GList *cur;
        module_t *mod, **pmod;
@@ -1583,8 +1583,12 @@ rspamd_init_filters (struct rspamd_config *cfg, bool reconfig)
                        }
                        else {
                                if (!mod->module_config_func (cfg)) {
-                                       msg_info_config ("config of %s failed!", mod->name);
+                                       msg_err_config ("config of %s failed", mod->name);
                                        ret = FALSE;
+
+                                       if (strict) {
+                                               return FALSE;
+                                       }
                                }
                        }
                }
@@ -1596,7 +1600,7 @@ rspamd_init_filters (struct rspamd_config *cfg, bool reconfig)
                cur = g_list_next (cur);
        }
 
-       ret = rspamd_init_lua_filters (cfg, 0) && ret;
+       ret = rspamd_init_lua_filters (cfg, 0, strict) && ret;
 
        return ret;
 }
index 248f1dbc350523f1c79697b503390703544530c7..2087fe592cff34e294d4af7507b67afc86aca4ba 100644 (file)
@@ -1075,7 +1075,7 @@ rspamd_plugins_table_push_elt (lua_State *L, const gchar *field_name,
 }
 
 gboolean
-rspamd_init_lua_filters (struct rspamd_config *cfg, gboolean force_load)
+rspamd_init_lua_filters (struct rspamd_config *cfg, bool force_load, bool strict)
 {
        struct rspamd_config **pcfg;
        GList *cur;
@@ -1119,6 +1119,10 @@ rspamd_init_lua_filters (struct rspamd_config *cfg, gboolean force_load)
                                rspamd_plugins_table_push_elt (L, "disabled_failed",
                                                module->name);
 
+                               if (strict) {
+                                       return FALSE;
+                               }
+
                                cur = g_list_next (cur);
                                continue;
                        }
@@ -1143,6 +1147,10 @@ rspamd_init_lua_filters (struct rspamd_config *cfg, gboolean force_load)
                                munmap (data, fsize);
                                g_free (lua_fname);
 
+                               if (strict) {
+                                       return FALSE;
+                               }
+
                                cur = g_list_next (cur);
                                continue;
                        }
@@ -1159,6 +1167,10 @@ rspamd_init_lua_filters (struct rspamd_config *cfg, gboolean force_load)
                                rspamd_plugins_table_push_elt (L, "disabled_failed",
                                                module->name);
 
+                               if (strict) {
+                                       return FALSE;
+                               }
+
                                cur = g_list_next (cur);
                                continue;
                        }
index 6ded08eb95acf1421124dc141ca0271e38c98a52..53e925832dfdee179f83e7d6d658c55c7eac441a 100644 (file)
@@ -203,7 +203,7 @@ rspamd_plugins_table_push_elt (lua_State *L, const gchar *field_name,
  * Load and initialize lua plugins
  */
 gboolean
-rspamd_init_lua_filters (struct rspamd_config *cfg, gboolean force_load);
+rspamd_init_lua_filters (struct rspamd_config *cfg, bool force_load, bool strict);
 
 /**
  * Initialize new locked lua_State structure
index 7f993e777d27c896cceb6dc1a678c5c7aa67aee3..8afe8fbfea5a1e2c9b145f788310474e2ac0d777 100644 (file)
@@ -4257,7 +4257,7 @@ lua_config_init_modules (lua_State *L)
 
        if (cfg != NULL) {
                rspamd_lua_post_load_config (cfg);
-               lua_pushboolean (L, rspamd_init_filters (cfg, FALSE));
+               lua_pushboolean (L, rspamd_init_filters (cfg, false, false));
        }
        else {
                return luaL_error (L, "invalid arguments");
@@ -4282,7 +4282,7 @@ lua_config_init_subsystem (lua_State *L)
                for (i = 0; i < nparts; i ++) {
                        if (strcmp (parts[i], "filters") == 0) {
                                rspamd_lua_post_load_config (cfg);
-                               rspamd_init_filters (cfg, FALSE);
+                               rspamd_init_filters (cfg, false, false);
                        }
                        else if (strcmp (parts[i], "langdet") == 0) {
                                if (!cfg->lang_det) {
index 0b52cfbdc17818d658efc7466bba6cf04cce81cc..91cc18800851812c0061fbe3de7d1b37753ea380 100644 (file)
@@ -884,7 +884,7 @@ lua_util_process_message (lua_State *L)
 
        if (cfg != NULL && message != NULL) {
                base = ev_loop_new (EVFLAG_SIGNALFD|EVBACKEND_ALL);
-               rspamd_init_filters (cfg, FALSE);
+               rspamd_init_filters (cfg, false, false);
                task = rspamd_task_new (NULL, cfg, NULL, NULL, base, FALSE);
                task->msg.begin = rspamd_mempool_alloc (task->task_pool, mlen);
                rspamd_strlcpy ((gpointer)task->msg.begin, message, mlen);
index de45d1cee267ee527aad54ff6779a49765930674..bbd219e3d8972f0df5b65af85eddbf5a5a6e71f2 100644 (file)
@@ -285,13 +285,8 @@ rspamadm_configdump (gint argc, gchar **argv, const struct rspamadm_command *cmd
                /* Do post-load actions */
                rspamd_lua_post_load_config (cfg);
 
-               if (!rspamd_init_filters (rspamd_main->cfg, FALSE)) {
-                       ret = FALSE;
-               }
-
-               if (ret) {
-                       ret = rspamd_config_post_load (cfg, RSPAMD_CONFIG_INIT_SYMCACHE);
-               }
+               (void)rspamd_init_filters (rspamd_main->cfg, false, false);
+               rspamd_config_post_load (cfg, RSPAMD_CONFIG_INIT_SYMCACHE);
        }
 
        if (ret) {
index 53f8dbbe9f5e2a243e71638c935ce8c7e3b2ad0e..f5695ed5376e2c6c9a431b98ac3509fa50409607 100644 (file)
@@ -260,7 +260,7 @@ rspamadm_confighelp (gint argc, gchar **argv, const struct rspamadm_command *cmd
 
        /* Init lua modules */
        rspamd_lua_set_path (cfg->lua_state, cfg->rcl_obj, ucl_vars);
-       rspamd_init_lua_filters (cfg, TRUE);
+       rspamd_init_lua_filters (cfg, true, false);
 
        if (argc > 1) {
                for (i = 1; i < argc; i ++) {
index bc7afd9d84c2d72fc80f030ebf66a319187173fa..c11458e42f293a323f4a3965dbd9a1c1417d434f 100644 (file)
@@ -140,7 +140,7 @@ rspamadm_configtest (gint argc, gchar **argv, const struct rspamadm_command *cmd
                /* Do post-load actions */
                rspamd_lua_post_load_config (cfg);
 
-               if (!rspamd_init_filters (rspamd_main->cfg, FALSE)) {
+               if (!rspamd_init_filters (rspamd_main->cfg, false, strict)) {
                        ret = FALSE;
                }
 
index 511408f23c10a87ab0f905918c78af803e2920b5..6fbb64fdf6bc5dc1a252930cc7773bc8d03ff865 100644 (file)
@@ -341,7 +341,7 @@ reread_config (struct rspamd_main *rspamd_main)
                 * modules and merely afterwards to init modules
                 */
                rspamd_lua_post_load_config (tmp_cfg);
-               rspamd_init_filters (tmp_cfg, TRUE);
+               rspamd_init_filters (tmp_cfg, true, false);
 
                /* Do post-load actions */
                rspamd_config_post_load (tmp_cfg,
@@ -944,7 +944,7 @@ load_rspamd_config (struct rspamd_main *rspamd_main,
                rspamd_lua_post_load_config (cfg);
 
                if (init_modules) {
-                       rspamd_init_filters (cfg, reload);
+                       rspamd_init_filters (cfg, reload, false);
                }
 
                /* Do post-load actions */