@@ -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}" |
@@ -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 \ |
@@ -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 | |||
} |
@@ -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 |
@@ -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", |
@@ -209,6 +209,7 @@ | |||
#endif /* BYTE_ORDER */ | |||
#define RSPAMD_SHAREDIR "${SHAREDIR}" | |||
#define RSPAMD_CONFDIR "${CONFDIR}" | |||
#define RSPAMD_LOCAL_CONFDIR "${LOCAL_CONFDIR}" | |||
#define RSPAMD_RUNDIR "${RUNDIR}" |
@@ -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 \ |
@@ -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 | |||
@@ -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); |
@@ -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); |
@@ -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" |
@@ -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, |