]> source.dussan.org Git - rspamd.git/commitdiff
[Rework] Slashing: Distinguish lualibdir, pluginsdir and sharedir
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 26 Dec 2018 13:37:05 +0000 (13:37 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 26 Dec 2018 15:00:02 +0000 (15:00 +0000)
12 files changed:
CMakeLists.txt
centos/rspamd.spec
conf/common.conf
conf/modules.d/elastic.conf
conf/options.inc
config.h.in
debian/rules
src/libmime/lang_detection.c
src/libserver/cfg_utils.c
src/lua/lua_common.c
src/lua/lua_common.h
src/plugins/lua/elastic.lua

index 9fc4fef740ac680c677731581bfdcb9fa374bff6..fb907c85ea9f2e74b8e9ff39b302a950e7f7229d 100644 (file)
@@ -119,24 +119,28 @@ IF(NOT LOGDIR)
        SET(LOGDIR "/var/log/rspamd")
 ENDIF(NOT LOGDIR)
 
+IF(NOT SHAREDIR)
+       SET(SHAREDIR "${CMAKE_INSTALL_PREFIX}/share/rspamd")
+ENDIF(NOT SHAREDIR)
+
 IF(NOT EXAMPLESDIR)
        SET(EXAMPLESDIR "${CMAKE_INSTALL_PREFIX}/share/examples/rspamd")
 ENDIF(NOT EXAMPLESDIR)
 
 IF(NOT PLUGINSDIR)
-       SET(PLUGINSDIR "${CMAKE_INSTALL_PREFIX}/share/rspamd")
+       SET(PLUGINSDIR "${SHAREDIR}/lualib/plugins")
 ENDIF(NOT PLUGINSDIR)
 
 IF(NOT RULESDIR)
-       SET(RULESDIR "${PLUGINSDIR}/rules")
+       SET(RULESDIR "${SHAREDIR}/rules")
 ENDIF(NOT RULESDIR)
 
 IF(NOT LUALIBDIR)
-       SET(LUALIBDIR "${PLUGINSDIR}/lib")
+       SET(LUALIBDIR "${SHAREDIR}/lualib")
 ENDIF(NOT LUALIBDIR)
 
 IF(NOT WWWDIR)
-       SET(WWWDIR "${CMAKE_INSTALL_PREFIX}/share/rspamd/www")
+       SET(WWWDIR "${SHAREDIR}/www")
 ENDIF(NOT WWWDIR)
 
 # Set libdir
@@ -1301,10 +1305,11 @@ ADD_DEFINITIONS("HAVE_CONFIG_H")
 
 # Configs
 INSTALL(CODE "FILE(MAKE_DIRECTORY \$ENV{DESTDIR}${CONFDIR})")
+INSTALL(CODE "FILE(MAKE_DIRECTORY \$ENV{DESTDIR}${SHAREDIR})")
 INSTALL(CODE "FILE(MAKE_DIRECTORY \$ENV{DESTDIR}${EXAMPLESDIR})")
-INSTALL(CODE "FILE(MAKE_DIRECTORY \$ENV{DESTDIR}${PLUGINSDIR}/lua)")
-INSTALL(CODE "FILE(MAKE_DIRECTORY \$ENV{DESTDIR}${RULESDIR})")
 INSTALL(CODE "FILE(MAKE_DIRECTORY \$ENV{DESTDIR}${LUALIBDIR})")
+INSTALL(CODE "FILE(MAKE_DIRECTORY \$ENV{DESTDIR}${PLUGINSDIR})")
+INSTALL(CODE "FILE(MAKE_DIRECTORY \$ENV{DESTDIR}${RULESDIR})")
 
 # Install configs only if they are unchanged
 LIST(LENGTH CONFFILES CONFLIST_COUNT)
@@ -1335,22 +1340,22 @@ FILE(GLOB LUA_PLUGINS RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}/src/plugins/lua"
        "${CMAKE_CURRENT_SOURCE_DIR}/src/plugins/lua/*.lua" )
 FOREACH(LUA_PLUGIN ${LUA_PLUGINS})
        GET_FILENAME_COMPONENT(_rp ${LUA_PLUGIN} PATH)
-       INSTALL(CODE "FILE(MAKE_DIRECTORY \$ENV{DESTDIR}${PLUGINSDIR}/lua/${_rp})")
-       INSTALL(FILES "src/plugins/lua/${LUA_PLUGIN}" DESTINATION ${PLUGINSDIR}/lua/${_rp})
+       INSTALL(CODE "FILE(MAKE_DIRECTORY \$ENV{DESTDIR}${PLUGINSDIR}/${_rp})")
+       INSTALL(FILES "src/plugins/lua/${LUA_PLUGIN}" DESTINATION ${PLUGINSDIR}/${_rp})
 ENDFOREACH(LUA_PLUGIN)
 
 
 # Install TLD list
 INSTALL(FILES "contrib/publicsuffix/effective_tld_names.dat" DESTINATION
-       "${PLUGINSDIR}")
+       "${SHAREDIR}")
 
 # Install languages data
-INSTALL(CODE "FILE(MAKE_DIRECTORY \$ENV{DESTDIR}${PLUGINSDIR}/languages)")
+INSTALL(CODE "FILE(MAKE_DIRECTORY \$ENV{DESTDIR}${SHAREDIR}/languages)")
 FILE(GLOB LANGUAGES "${CMAKE_CURRENT_SOURCE_DIR}/contrib/languages-data/*.json")
 FOREACH(_LANG ${LANGUAGES})
-       INSTALL(FILES "${_LANG}" DESTINATION ${PLUGINSDIR}/languages)
+       INSTALL(FILES "${_LANG}" DESTINATION ${SHAREDIR}/languages)
 ENDFOREACH()
-INSTALL(FILES "${CMAKE_CURRENT_SOURCE_DIR}/contrib/languages-data/stop_words" DESTINATION ${PLUGINSDIR}/languages)
+INSTALL(FILES "${CMAKE_CURRENT_SOURCE_DIR}/contrib/languages-data/stop_words" DESTINATION ${SHAREDIR}/languages)
 
 # Lua config
 FILE(GLOB_RECURSE LUA_CONFIGS RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}/rules"
@@ -1366,8 +1371,8 @@ FILE(GLOB_RECURSE LUA_LIBS RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}/lualib"
                "${CMAKE_CURRENT_SOURCE_DIR}/lualib/*.lua")
 FOREACH(LUA_LIB ${LUA_LIBS})
        GET_FILENAME_COMPONENT(_rp ${LUA_LIB} PATH)
-       INSTALL(CODE "FILE(MAKE_DIRECTORY \$ENV{DESTDIR}${LUALIBDIR}/${_rp})")
-       INSTALL(FILES "lualib/${LUA_LIB}" DESTINATION ${LUALIBDIR}/${_rp})
+       INSTALL(CODE "FILE(MAKE_DIRECTORY \$ENV{DESTDIR}${LUALIBDIR}/rspamd/${_rp})")
+       INSTALL(FILES "lualib/${LUA_LIB}" DESTINATION ${LUALIBDIR}/rspamd/${_rp})
 ENDFOREACH(LUA_LIB)
 
 # Install lua fun library
@@ -1398,7 +1403,7 @@ IF(INSTALL_WEBUI MATCHES "ON")
 ENDIF(INSTALL_WEBUI MATCHES "ON")
 
 
-INSTALL(DIRECTORY "contrib/elastic/" DESTINATION "${PLUGINSDIR}/elastic" PATTERN ".git" EXCLUDE)
+INSTALL(DIRECTORY "contrib/elastic/" DESTINATION "${SHAREDIR}/elastic" PATTERN ".git" EXCLUDE)
 
 ADD_CUSTOM_TARGET(dist ${CMAKE_SOURCE_DIR}/dist.sh
        "${CMAKE_BINARY_DIR}/rspamd-${RSPAMD_VERSION}.tar.xz" "${TAR}"
index 112569ca8959d5ed65c5e96fe405905cf68bf565..79e87455abb4f1357b7fa2a92264618c434873eb 100644 (file)
@@ -88,7 +88,7 @@ lua.
 %endif
         -DLOGDIR=%{_localstatedir}/log/rspamd \
         -DEXAMPLESDIR=%{_datadir}/examples/rspamd \
-        -DPLUGINSDIR=%{_datadir}/rspamd \
+        -DSHAREDIR=%{_datadir}/rspamd \
         -DLIBDIR=%{_libdir}/rspamd/ \
         -DINCLUDEDIR=%{_includedir} \
         -DNO_SHARED=ON \
index 549af73a0cc4cc83f9283f704cf1a61a094e0706..6a537b3e52e90e8a0e5bf743a27bdd47664c6c91 100644 (file)
@@ -34,5 +34,6 @@ lua = "$RULESDIR/rspamd.lua"
 .include(try=true,priority=10) "$LOCAL_CONFDIR/rspamd.conf.override"
 
 modules {
-    path = "$PLUGINSDIR/lua/"
+  path = "${PLUGINSDIR}";
+  path = "${SHAREDIR}/lua"; # Legacy path
 }
index 1753a54b9821be8659a14edd9627787e3103b104..665604278afd3b0f6115c9edd7717303746b5d61 100644 (file)
@@ -6,9 +6,9 @@ elastic {
   # Timeout to wait for response (5 seconds if unset)
   timeout = 5;
   # Elasticsearch template file (json format)
-  #template_file = "${PLUGINSDIR}/elastic/rspamd_template.json";
+  #template_file = "${SHAREDIR}/elastic/rspamd_template.json";
   # Kibana prebuild visualizations and dashboard template (json format)
-  #kibana_file = "${PLUGINSDIR}/elastic/kibana.json";
+  #kibana_file = "${SHAREDIR}/elastic/kibana.json";
   # Elasticsearch index name pattern
   index_pattern = "rspamd-%Y.%m.%d";
   # Dump debug information
index f8abaa875518aef165c43f7817d01e34c1ca25cb..51fd7b2dc66c75e766ea7a2b5ce276d59a549f66 100644 (file)
@@ -17,7 +17,7 @@ dns {
     retransmits = 5;
 }
 tempdir = "/tmp";
-url_tld = "${PLUGINSDIR}/effective_tld_names.dat";
+url_tld = "${SHAREDIR}/effective_tld_names.dat";
 classify_headers = [
        "User-Agent",
        "X-Mailer",
index 66f287e0352026511bc92201759791093a859722..53f5c3f811fe76a2d27cf384d0b1f890e9a3b7a8 100644 (file)
 
 #endif /* BYTE_ORDER */
 
+#define RSPAMD_SHAREDIR "${SHAREDIR}"
 #define RSPAMD_CONFDIR "${CONFDIR}"
 #define RSPAMD_LOCAL_CONFDIR "${LOCAL_CONFDIR}"
 #define RSPAMD_RUNDIR "${RUNDIR}"
index 5cde81db5d3f84560d3807208665629ae54a6ef5..5dfe45e887f7c8fa5a7de1c2c9a2685660252318 100755 (executable)
@@ -12,7 +12,7 @@ override_dh_auto_configure:
                -DRUNDIR=/run/rspamd \
                -DDBDIR=/var/lib/rspamd \
                -DLOGDIR=/var/log/rspamd \
-               -DPLUGINSDIR=/usr/share/rspamd \
+               -DSHAREDIR=/usr/share/rspamd \
                -DEXAMPLESDIR=/usr/share/doc/rspamd/examples \
                -DLIBDIR=/usr/lib/rspamd \
                -DINCLUDEDIR=/usr/include \
index 82e5fc2ffbfd7c6a422c0b577392ab9bf48310d7..72964a93a977188f31d82e6a98af60870aa6d384 100644 (file)
@@ -33,7 +33,7 @@
 static const gsize default_short_text_limit = 20;
 static const gsize default_words = 80;
 static const gdouble update_prob = 0.6;
-static const gchar *default_languages_path = RSPAMD_PLUGINSDIR "/languages";
+static const gchar *default_languages_path = RSPAMD_SHAREDIR "/languages";
 
 #undef EXTRA_LANGDET_DEBUG
 
index 2125a2854e81e2cb2a1931fe637592d6cd3bcc2f..a15bb9b8ac7a4da47094e471bfecd11bab595f03 100644 (file)
@@ -731,7 +731,7 @@ rspamd_config_post_load (struct rspamd_config *cfg,
                        /* Try to guess tld file */
                        GString *fpath = g_string_new (NULL);
 
-                       rspamd_printf_gstring (fpath, "%s%c%s", RSPAMD_PLUGINSDIR,
+                       rspamd_printf_gstring (fpath, "%s%c%s", RSPAMD_SHAREDIR,
                                        G_DIR_SEPARATOR, "effective_tld_names.dat");
 
                        if (access (fpath->str, R_OK) != -1) {
@@ -1135,6 +1135,7 @@ rspamd_include_map_handler (const guchar *data, gsize len,
 #define RSPAMD_DBDIR_MACRO "DBDIR"
 #define RSPAMD_LOGDIR_MACRO "LOGDIR"
 #define RSPAMD_PLUGINSDIR_MACRO "PLUGINSDIR"
+#define RSPAMD_SHAREDIR_MACRO "SHAREDIR"
 #define RSPAMD_RULESDIR_MACRO "RULESDIR"
 #define RSPAMD_WWWDIR_MACRO "WWWDIR"
 #define RSPAMD_PREFIX_MACRO "PREFIX"
@@ -1168,6 +1169,9 @@ rspamd_ucl_add_conf_variables (struct ucl_parser *parser, GHashTable *vars)
        ucl_parser_register_variable (parser,
                        RSPAMD_PLUGINSDIR_MACRO,
                        RSPAMD_PLUGINSDIR);
+       ucl_parser_register_variable (parser,
+                       RSPAMD_SHAREDIR_MACRO,
+                       RSPAMD_SHAREDIR);
        ucl_parser_register_variable (parser,
                        RSPAMD_RULESDIR_MACRO,
                        RSPAMD_RULESDIR);
index 01d5dc869dfb6c62bbd274bcfc5129247d146744..db1f5357e8d71f218b89b0d3a9e1934909f4e370 100644 (file)
@@ -237,7 +237,8 @@ rspamd_lua_set_path (lua_State *L, const ucl_object_t *cfg_obj, GHashTable *vars
        const gchar *pluginsdir = RSPAMD_PLUGINSDIR,
                        *rulesdir = RSPAMD_RULESDIR,
                        *lualibdir = RSPAMD_LUALIBDIR,
-                       *libdir = RSPAMD_LIBDIR;
+                       *libdir = RSPAMD_LIBDIR,
+                       *sharedir = RSPAMD_SHAREDIR;
        const gchar *t;
 
        gchar path_buf[PATH_MAX];
@@ -246,7 +247,7 @@ rspamd_lua_set_path (lua_State *L, const ucl_object_t *cfg_obj, GHashTable *vars
        lua_getfield (L, -1, "path");
        old_path = luaL_checkstring (L, -1);
 
-       if (strstr (old_path, RSPAMD_PLUGINSDIR) != NULL) {
+       if (strstr (old_path, RSPAMD_LUALIBDIR) != NULL) {
                /* Path has been already set, do not touch it */
                lua_pop (L, 2);
                return;
@@ -263,6 +264,11 @@ rspamd_lua_set_path (lua_State *L, const ucl_object_t *cfg_obj, GHashTable *vars
        }
 
        /* Try environment */
+       t = getenv ("SHAREDIR");
+       if (t) {
+               sharedir = t;
+       }
+
        t = getenv ("PLUGINSDIR");
        if (t) {
                pluginsdir = t;
@@ -294,6 +300,11 @@ rspamd_lua_set_path (lua_State *L, const ucl_object_t *cfg_obj, GHashTable *vars
                        pluginsdir = t;
                }
 
+               t = g_hash_table_lookup (vars, "SHAREDIR");
+               if (t) {
+                       sharedir = t;
+               }
+
                t = g_hash_table_lookup (vars, "RULESDIR");
                if (t) {
                        rulesdir = t;
@@ -318,26 +329,31 @@ rspamd_lua_set_path (lua_State *L, const ucl_object_t *cfg_obj, GHashTable *vars
        if (additional_path) {
                rspamd_snprintf (path_buf, sizeof (path_buf),
                                "%s/lua/?.lua;"
-                                               "%s/lua/?.lua;"
-                                               "%s/?.lua;"
-                                               "%s/?.lua;"
-                                               "%s/?/init.lua;"
-                                               "%s;"
-                                               "%s",
-                               pluginsdir, RSPAMD_CONFDIR, rulesdir,
+                               "%s/?.lua;"
+                               "%s/?.lua;"
+                               "%s/?/init.lua;"
+                               "%s/rspamd/?.lua;"
+                               "%s;"
+                               "%s",
+                               RSPAMD_CONFDIR,
+                               rulesdir,
                                lualibdir, lualibdir,
+                               /* Rspamd specific: lualib/rspamd */
+                               lualibdir,
                                additional_path, old_path);
        }
        else {
                rspamd_snprintf (path_buf, sizeof (path_buf),
                                "%s/lua/?.lua;"
-                                               "%s/lua/?.lua;"
-                                               "%s/?.lua;"
-                                               "%s/?.lua;"
-                                               "%s/?/init.lua;"
-                                               "%s",
-                               pluginsdir, RSPAMD_CONFDIR, rulesdir,
+                               "%s/?.lua;"
+                               "%s/?.lua;"
+                               "%s/?/init.lua;"
+                               "%s/rspamd/?.lua;"
+                               "%s",
+                               RSPAMD_CONFDIR, rulesdir,
                                lualibdir, lualibdir,
+                               /* Rspamd specific: lualib/rspamd */
+                               lualibdir,
                                old_path);
        }
 
@@ -592,10 +608,16 @@ rspamd_lua_set_globals (struct rspamd_config *cfg, lua_State *L,
                                *pluginsdir = RSPAMD_PLUGINSDIR,
                                *rulesdir = RSPAMD_RULESDIR,
                                *lualibdir = RSPAMD_LUALIBDIR,
-                               *prefix = RSPAMD_PREFIX;
+                               *prefix = RSPAMD_PREFIX,
+                               *sharedir = RSPAMD_SHAREDIR;
                const gchar *t;
 
                /* Try environment */
+               t = getenv ("SHAREDIR");
+               if (t) {
+                       sharedir = t;
+               }
+
                t = getenv ("PLUGINSDIR");
                if (t) {
                        pluginsdir = t;
@@ -643,6 +665,11 @@ rspamd_lua_set_globals (struct rspamd_config *cfg, lua_State *L,
 
 
                if (vars) {
+                       t = g_hash_table_lookup (vars, "SHAREDIR");
+                       if (t) {
+                               sharedir = t;
+                       }
+
                        t = g_hash_table_lookup (vars, "PLUGINSDIR");
                        if (t) {
                                pluginsdir = t;
@@ -691,6 +718,7 @@ rspamd_lua_set_globals (struct rspamd_config *cfg, lua_State *L,
 
                lua_createtable (L, 0, 9);
 
+               rspamd_lua_table_set (L, RSPAMD_SHAREDIR_INDEX, sharedir);
                rspamd_lua_table_set (L, RSPAMD_CONFDIR_INDEX, confdir);
                rspamd_lua_table_set (L, RSPAMD_LOCAL_CONFDIR_INDEX, local_confdir);
                rspamd_lua_table_set (L, RSPAMD_RUNDIR_INDEX, rundir);
index 4c82be640b6cd98ae94061261c14730d088d28c7..cb9390a1d008989fd14d6e98eb715f60cdfdf6b4 100644 (file)
@@ -464,6 +464,7 @@ gint rspamd_lua_push_words (lua_State *L, GArray *words,
 #define RSPAMD_DBDIR_INDEX "DBDIR"
 #define RSPAMD_LOGDIR_INDEX "LOGDIR"
 #define RSPAMD_PLUGINSDIR_INDEX "PLUGINSDIR"
+#define RSPAMD_SHAREDIR_INDEX "SHAREDIR"
 #define RSPAMD_RULESDIR_INDEX "RULESDIR"
 #define RSPAMD_LUALIBDIR_INDEX "LUALIBDIR"
 #define RSPAMD_WWWDIR_INDEX "WWWDIR"
index d613d335fbb5a0d29ff4c4622b8348b0e18fa0a6..a223756e4216b517bc41e237310fd279b53c7818 100644 (file)
@@ -39,8 +39,8 @@ local enabled = true
 local settings = {
   limit = 500,
   index_pattern = 'rspamd-%Y.%m.%d',
-  template_file = rspamd_paths['PLUGINSDIR'] .. '/elastic/rspamd_template.json',
-  kibana_file = rspamd_paths['PLUGINSDIR'] ..'/elastic/kibana.json',
+  template_file = rspamd_paths['SHAREDIR'] .. '/elastic/rspamd_template.json',
+  kibana_file = rspamd_paths['SHAREDIR'] ..'/elastic/kibana.json',
   key_prefix = 'elastic-',
   expire = 3600,
   timeout = 5.0,