]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Minor] Allow to add additional paths to plugins
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 16 Apr 2019 12:37:32 +0000 (13:37 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 16 Apr 2019 12:37:32 +0000 (13:37 +0100)
Issue: #2848

src/libserver/cfg_rcl.c
src/libserver/cfg_rcl.h
src/libstat/backends/sqlite3_backend.c
src/rspamadm/confighelp.c

index a9f957183503ef8bec58dfb77045db5aa98a03a4..20bf7a7c6bbf7b92c9449a12a836777b955b583a 100644 (file)
@@ -845,6 +845,7 @@ rspamd_rcl_lua_handler (rspamd_mempool_t *pool, const ucl_object_t *obj,
 gboolean
 rspamd_rcl_add_lua_plugins_path (struct rspamd_config *cfg,
                const gchar *path,
+               gboolean main_path,
                GHashTable *modules_seen,
                GError **err)
 {
@@ -856,7 +857,7 @@ rspamd_rcl_add_lua_plugins_path (struct rspamd_config *cfg,
 
        if (stat (path, &st) == -1) {
 
-               if (errno != ENOENT) {
+               if (errno != ENOENT || main_path) {
                        g_set_error (err,
                                        CFG_RCL_ERROR,
                                        errno,
@@ -866,7 +867,7 @@ rspamd_rcl_add_lua_plugins_path (struct rspamd_config *cfg,
                        return FALSE;
                }
                else {
-                       msg_info_config ("plugins path %s is absent, skip it", path);
+                       msg_debug_config ("optional plugins path %s is absent, skip it", path);
 
                        return TRUE;
                }
@@ -986,6 +987,7 @@ rspamd_rcl_modules_handler (rspamd_mempool_t *pool, const ucl_object_t *obj,
                                if (ucl_object_tostring_safe (cur, &data)) {
                                        if (!rspamd_rcl_add_lua_plugins_path (cfg,
                                                        rspamd_mempool_strdup (cfg->cfg_pool, data),
+                                                       TRUE,
                                                        mods_seen,
                                                        err)) {
                                                return FALSE;
@@ -1008,6 +1010,23 @@ rspamd_rcl_modules_handler (rspamd_mempool_t *pool, const ucl_object_t *obj,
                                if (ucl_object_tostring_safe (cur, &data)) {
                                        if (!rspamd_rcl_add_lua_plugins_path (cfg,
                                                        rspamd_mempool_strdup (cfg->cfg_pool, data),
+                                                       FALSE,
+                                                       mods_seen,
+                                                       err)) {
+                                               return FALSE;
+                                       }
+                               }
+                       }
+               }
+
+               val = ucl_object_lookup (obj, "try_path");
+
+               if (val) {
+                       LL_FOREACH (val, cur) {
+                               if (ucl_object_tostring_safe (cur, &data)) {
+                                       if (!rspamd_rcl_add_lua_plugins_path (cfg,
+                                                       rspamd_mempool_strdup (cfg->cfg_pool, data),
+                                                       FALSE,
                                                        mods_seen,
                                                        err)) {
                                                return FALSE;
@@ -1018,7 +1037,7 @@ rspamd_rcl_modules_handler (rspamd_mempool_t *pool, const ucl_object_t *obj,
        }
        else if (ucl_object_tostring_safe (obj, &data)) {
                if (!rspamd_rcl_add_lua_plugins_path (cfg,
-                               rspamd_mempool_strdup (cfg->cfg_pool, data), NULL, err)) {
+                               rspamd_mempool_strdup (cfg->cfg_pool, data), TRUE, NULL, err)) {
                        return FALSE;
                }
        }
index 12a89a673579990822f9ff4a2a09299997d69320..8d957a402ec86e7c27ad19b93b345d0d13be4b7f 100644 (file)
@@ -445,6 +445,7 @@ ucl_object_t *rspamd_rcl_add_doc_by_example (struct rspamd_config *cfg,
  */
 gboolean rspamd_rcl_add_lua_plugins_path (struct rspamd_config *cfg,
                const gchar *path,
+               gboolean main_path,
                GHashTable *modules_seen,
                GError **err);
 
index 5b5a6b896759da70c52e67e1c6d79bff8541d88b..9904e469b84dd6d03032e308f5dd05a081b594d8 100644 (file)
@@ -554,7 +554,7 @@ rspamd_sqlite3_init (struct rspamd_stat_ctx *ctx,
 
        if ((bk = rspamd_sqlite3_opendb (cfg->cfg_pool, stf, filename,
                        stf->opts, TRUE, &err)) == NULL) {
-               msg_err_config ("cannot open sqlite3 db: %e", err);
+               msg_err_config ("cannot open sqlite3 db %s: %e", filename, err);
                g_error_free (err);
                return NULL;
        }
index a414545db7a58ad65354396a6817c8b4431cb6d4..a5b67a400a9f08476fcccad7911824c6098562fe 100644 (file)
@@ -234,7 +234,7 @@ rspamadm_confighelp (gint argc, gchar **argv, const struct rspamadm_command *cmd
        rspamd_rcl_config_init (cfg, NULL);
        lua_pushboolean (cfg->lua_state, true);
        lua_setglobal (cfg->lua_state, "confighelp");
-       rspamd_rcl_add_lua_plugins_path (cfg, plugins_path, NULL, NULL);
+       rspamd_rcl_add_lua_plugins_path (cfg, plugins_path, FALSE, NULL, NULL);
 
        /* Init modules to get documentation strings */
        i = 0;