SET(LOGDIR "/var/log/rspamd") | SET(LOGDIR "/var/log/rspamd") | ||||
ENDIF(NOT LOGDIR) | ENDIF(NOT LOGDIR) | ||||
IF(NOT SHAREDIR) | |||||
SET(SHAREDIR "${CMAKE_INSTALL_PREFIX}/share/rspamd") | |||||
ENDIF(NOT SHAREDIR) | |||||
IF(NOT EXAMPLESDIR) | IF(NOT EXAMPLESDIR) | ||||
SET(EXAMPLESDIR "${CMAKE_INSTALL_PREFIX}/share/examples/rspamd") | SET(EXAMPLESDIR "${CMAKE_INSTALL_PREFIX}/share/examples/rspamd") | ||||
ENDIF(NOT EXAMPLESDIR) | ENDIF(NOT EXAMPLESDIR) | ||||
IF(NOT PLUGINSDIR) | IF(NOT PLUGINSDIR) | ||||
SET(PLUGINSDIR "${CMAKE_INSTALL_PREFIX}/share/rspamd") | |||||
SET(PLUGINSDIR "${SHAREDIR}/lualib/plugins") | |||||
ENDIF(NOT PLUGINSDIR) | ENDIF(NOT PLUGINSDIR) | ||||
IF(NOT RULESDIR) | IF(NOT RULESDIR) | ||||
SET(RULESDIR "${PLUGINSDIR}/rules") | |||||
SET(RULESDIR "${SHAREDIR}/rules") | |||||
ENDIF(NOT RULESDIR) | ENDIF(NOT RULESDIR) | ||||
IF(NOT LUALIBDIR) | IF(NOT LUALIBDIR) | ||||
SET(LUALIBDIR "${PLUGINSDIR}/lib") | |||||
SET(LUALIBDIR "${SHAREDIR}/lualib") | |||||
ENDIF(NOT LUALIBDIR) | ENDIF(NOT LUALIBDIR) | ||||
IF(NOT WWWDIR) | IF(NOT WWWDIR) | ||||
SET(WWWDIR "${CMAKE_INSTALL_PREFIX}/share/rspamd/www") | |||||
SET(WWWDIR "${SHAREDIR}/www") | |||||
ENDIF(NOT WWWDIR) | ENDIF(NOT WWWDIR) | ||||
# Set libdir | # Set libdir | ||||
# Configs | # Configs | ||||
INSTALL(CODE "FILE(MAKE_DIRECTORY \$ENV{DESTDIR}${CONFDIR})") | 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}${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}${LUALIBDIR})") | ||||
INSTALL(CODE "FILE(MAKE_DIRECTORY \$ENV{DESTDIR}${PLUGINSDIR})") | |||||
INSTALL(CODE "FILE(MAKE_DIRECTORY \$ENV{DESTDIR}${RULESDIR})") | |||||
# Install configs only if they are unchanged | # Install configs only if they are unchanged | ||||
LIST(LENGTH CONFFILES CONFLIST_COUNT) | LIST(LENGTH CONFFILES CONFLIST_COUNT) | ||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/plugins/lua/*.lua" ) | "${CMAKE_CURRENT_SOURCE_DIR}/src/plugins/lua/*.lua" ) | ||||
FOREACH(LUA_PLUGIN ${LUA_PLUGINS}) | FOREACH(LUA_PLUGIN ${LUA_PLUGINS}) | ||||
GET_FILENAME_COMPONENT(_rp ${LUA_PLUGIN} PATH) | 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) | ENDFOREACH(LUA_PLUGIN) | ||||
# Install TLD list | # Install TLD list | ||||
INSTALL(FILES "contrib/publicsuffix/effective_tld_names.dat" DESTINATION | INSTALL(FILES "contrib/publicsuffix/effective_tld_names.dat" DESTINATION | ||||
"${PLUGINSDIR}") | |||||
"${SHAREDIR}") | |||||
# Install languages data | # 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") | FILE(GLOB LANGUAGES "${CMAKE_CURRENT_SOURCE_DIR}/contrib/languages-data/*.json") | ||||
FOREACH(_LANG ${LANGUAGES}) | FOREACH(_LANG ${LANGUAGES}) | ||||
INSTALL(FILES "${_LANG}" DESTINATION ${PLUGINSDIR}/languages) | |||||
INSTALL(FILES "${_LANG}" DESTINATION ${SHAREDIR}/languages) | |||||
ENDFOREACH() | 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 | # Lua config | ||||
FILE(GLOB_RECURSE LUA_CONFIGS RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}/rules" | FILE(GLOB_RECURSE LUA_CONFIGS RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}/rules" | ||||
"${CMAKE_CURRENT_SOURCE_DIR}/lualib/*.lua") | "${CMAKE_CURRENT_SOURCE_DIR}/lualib/*.lua") | ||||
FOREACH(LUA_LIB ${LUA_LIBS}) | FOREACH(LUA_LIB ${LUA_LIBS}) | ||||
GET_FILENAME_COMPONENT(_rp ${LUA_LIB} PATH) | 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) | ENDFOREACH(LUA_LIB) | ||||
# Install lua fun library | # Install lua fun library | ||||
ENDIF(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 | ADD_CUSTOM_TARGET(dist ${CMAKE_SOURCE_DIR}/dist.sh | ||||
"${CMAKE_BINARY_DIR}/rspamd-${RSPAMD_VERSION}.tar.xz" "${TAR}" | "${CMAKE_BINARY_DIR}/rspamd-${RSPAMD_VERSION}.tar.xz" "${TAR}" |
%endif | %endif | ||||
-DLOGDIR=%{_localstatedir}/log/rspamd \ | -DLOGDIR=%{_localstatedir}/log/rspamd \ | ||||
-DEXAMPLESDIR=%{_datadir}/examples/rspamd \ | -DEXAMPLESDIR=%{_datadir}/examples/rspamd \ | ||||
-DPLUGINSDIR=%{_datadir}/rspamd \ | |||||
-DSHAREDIR=%{_datadir}/rspamd \ | |||||
-DLIBDIR=%{_libdir}/rspamd/ \ | -DLIBDIR=%{_libdir}/rspamd/ \ | ||||
-DINCLUDEDIR=%{_includedir} \ | -DINCLUDEDIR=%{_includedir} \ | ||||
-DNO_SHARED=ON \ | -DNO_SHARED=ON \ |
.include(try=true,priority=10) "$LOCAL_CONFDIR/rspamd.conf.override" | .include(try=true,priority=10) "$LOCAL_CONFDIR/rspamd.conf.override" | ||||
modules { | modules { | ||||
path = "$PLUGINSDIR/lua/" | |||||
path = "${PLUGINSDIR}"; | |||||
path = "${SHAREDIR}/lua"; # Legacy path | |||||
} | } |
# Timeout to wait for response (5 seconds if unset) | # Timeout to wait for response (5 seconds if unset) | ||||
timeout = 5; | timeout = 5; | ||||
# Elasticsearch template file (json format) | # 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 prebuild visualizations and dashboard template (json format) | ||||
#kibana_file = "${PLUGINSDIR}/elastic/kibana.json"; | |||||
#kibana_file = "${SHAREDIR}/elastic/kibana.json"; | |||||
# Elasticsearch index name pattern | # Elasticsearch index name pattern | ||||
index_pattern = "rspamd-%Y.%m.%d"; | index_pattern = "rspamd-%Y.%m.%d"; | ||||
# Dump debug information | # Dump debug information |
retransmits = 5; | retransmits = 5; | ||||
} | } | ||||
tempdir = "/tmp"; | tempdir = "/tmp"; | ||||
url_tld = "${PLUGINSDIR}/effective_tld_names.dat"; | |||||
url_tld = "${SHAREDIR}/effective_tld_names.dat"; | |||||
classify_headers = [ | classify_headers = [ | ||||
"User-Agent", | "User-Agent", | ||||
"X-Mailer", | "X-Mailer", |
#endif /* BYTE_ORDER */ | #endif /* BYTE_ORDER */ | ||||
#define RSPAMD_SHAREDIR "${SHAREDIR}" | |||||
#define RSPAMD_CONFDIR "${CONFDIR}" | #define RSPAMD_CONFDIR "${CONFDIR}" | ||||
#define RSPAMD_LOCAL_CONFDIR "${LOCAL_CONFDIR}" | #define RSPAMD_LOCAL_CONFDIR "${LOCAL_CONFDIR}" | ||||
#define RSPAMD_RUNDIR "${RUNDIR}" | #define RSPAMD_RUNDIR "${RUNDIR}" |
-DRUNDIR=/run/rspamd \ | -DRUNDIR=/run/rspamd \ | ||||
-DDBDIR=/var/lib/rspamd \ | -DDBDIR=/var/lib/rspamd \ | ||||
-DLOGDIR=/var/log/rspamd \ | -DLOGDIR=/var/log/rspamd \ | ||||
-DPLUGINSDIR=/usr/share/rspamd \ | |||||
-DSHAREDIR=/usr/share/rspamd \ | |||||
-DEXAMPLESDIR=/usr/share/doc/rspamd/examples \ | -DEXAMPLESDIR=/usr/share/doc/rspamd/examples \ | ||||
-DLIBDIR=/usr/lib/rspamd \ | -DLIBDIR=/usr/lib/rspamd \ | ||||
-DINCLUDEDIR=/usr/include \ | -DINCLUDEDIR=/usr/include \ |
static const gsize default_short_text_limit = 20; | static const gsize default_short_text_limit = 20; | ||||
static const gsize default_words = 80; | static const gsize default_words = 80; | ||||
static const gdouble update_prob = 0.6; | 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 | #undef EXTRA_LANGDET_DEBUG | ||||
/* Try to guess tld file */ | /* Try to guess tld file */ | ||||
GString *fpath = g_string_new (NULL); | 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"); | G_DIR_SEPARATOR, "effective_tld_names.dat"); | ||||
if (access (fpath->str, R_OK) != -1) { | if (access (fpath->str, R_OK) != -1) { | ||||
#define RSPAMD_DBDIR_MACRO "DBDIR" | #define RSPAMD_DBDIR_MACRO "DBDIR" | ||||
#define RSPAMD_LOGDIR_MACRO "LOGDIR" | #define RSPAMD_LOGDIR_MACRO "LOGDIR" | ||||
#define RSPAMD_PLUGINSDIR_MACRO "PLUGINSDIR" | #define RSPAMD_PLUGINSDIR_MACRO "PLUGINSDIR" | ||||
#define RSPAMD_SHAREDIR_MACRO "SHAREDIR" | |||||
#define RSPAMD_RULESDIR_MACRO "RULESDIR" | #define RSPAMD_RULESDIR_MACRO "RULESDIR" | ||||
#define RSPAMD_WWWDIR_MACRO "WWWDIR" | #define RSPAMD_WWWDIR_MACRO "WWWDIR" | ||||
#define RSPAMD_PREFIX_MACRO "PREFIX" | #define RSPAMD_PREFIX_MACRO "PREFIX" | ||||
ucl_parser_register_variable (parser, | ucl_parser_register_variable (parser, | ||||
RSPAMD_PLUGINSDIR_MACRO, | RSPAMD_PLUGINSDIR_MACRO, | ||||
RSPAMD_PLUGINSDIR); | RSPAMD_PLUGINSDIR); | ||||
ucl_parser_register_variable (parser, | |||||
RSPAMD_SHAREDIR_MACRO, | |||||
RSPAMD_SHAREDIR); | |||||
ucl_parser_register_variable (parser, | ucl_parser_register_variable (parser, | ||||
RSPAMD_RULESDIR_MACRO, | RSPAMD_RULESDIR_MACRO, | ||||
RSPAMD_RULESDIR); | RSPAMD_RULESDIR); |
const gchar *pluginsdir = RSPAMD_PLUGINSDIR, | const gchar *pluginsdir = RSPAMD_PLUGINSDIR, | ||||
*rulesdir = RSPAMD_RULESDIR, | *rulesdir = RSPAMD_RULESDIR, | ||||
*lualibdir = RSPAMD_LUALIBDIR, | *lualibdir = RSPAMD_LUALIBDIR, | ||||
*libdir = RSPAMD_LIBDIR; | |||||
*libdir = RSPAMD_LIBDIR, | |||||
*sharedir = RSPAMD_SHAREDIR; | |||||
const gchar *t; | const gchar *t; | ||||
gchar path_buf[PATH_MAX]; | gchar path_buf[PATH_MAX]; | ||||
lua_getfield (L, -1, "path"); | lua_getfield (L, -1, "path"); | ||||
old_path = luaL_checkstring (L, -1); | 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 */ | /* Path has been already set, do not touch it */ | ||||
lua_pop (L, 2); | lua_pop (L, 2); | ||||
return; | return; | ||||
} | } | ||||
/* Try environment */ | /* Try environment */ | ||||
t = getenv ("SHAREDIR"); | |||||
if (t) { | |||||
sharedir = t; | |||||
} | |||||
t = getenv ("PLUGINSDIR"); | t = getenv ("PLUGINSDIR"); | ||||
if (t) { | if (t) { | ||||
pluginsdir = t; | pluginsdir = t; | ||||
pluginsdir = t; | pluginsdir = t; | ||||
} | } | ||||
t = g_hash_table_lookup (vars, "SHAREDIR"); | |||||
if (t) { | |||||
sharedir = t; | |||||
} | |||||
t = g_hash_table_lookup (vars, "RULESDIR"); | t = g_hash_table_lookup (vars, "RULESDIR"); | ||||
if (t) { | if (t) { | ||||
rulesdir = t; | rulesdir = t; | ||||
if (additional_path) { | if (additional_path) { | ||||
rspamd_snprintf (path_buf, sizeof (path_buf), | rspamd_snprintf (path_buf, sizeof (path_buf), | ||||
"%s/lua/?.lua;" | "%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, | lualibdir, lualibdir, | ||||
/* Rspamd specific: lualib/rspamd */ | |||||
lualibdir, | |||||
additional_path, old_path); | additional_path, old_path); | ||||
} | } | ||||
else { | else { | ||||
rspamd_snprintf (path_buf, sizeof (path_buf), | rspamd_snprintf (path_buf, sizeof (path_buf), | ||||
"%s/lua/?.lua;" | "%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, | lualibdir, lualibdir, | ||||
/* Rspamd specific: lualib/rspamd */ | |||||
lualibdir, | |||||
old_path); | old_path); | ||||
} | } | ||||
*pluginsdir = RSPAMD_PLUGINSDIR, | *pluginsdir = RSPAMD_PLUGINSDIR, | ||||
*rulesdir = RSPAMD_RULESDIR, | *rulesdir = RSPAMD_RULESDIR, | ||||
*lualibdir = RSPAMD_LUALIBDIR, | *lualibdir = RSPAMD_LUALIBDIR, | ||||
*prefix = RSPAMD_PREFIX; | |||||
*prefix = RSPAMD_PREFIX, | |||||
*sharedir = RSPAMD_SHAREDIR; | |||||
const gchar *t; | const gchar *t; | ||||
/* Try environment */ | /* Try environment */ | ||||
t = getenv ("SHAREDIR"); | |||||
if (t) { | |||||
sharedir = t; | |||||
} | |||||
t = getenv ("PLUGINSDIR"); | t = getenv ("PLUGINSDIR"); | ||||
if (t) { | if (t) { | ||||
pluginsdir = t; | pluginsdir = t; | ||||
if (vars) { | if (vars) { | ||||
t = g_hash_table_lookup (vars, "SHAREDIR"); | |||||
if (t) { | |||||
sharedir = t; | |||||
} | |||||
t = g_hash_table_lookup (vars, "PLUGINSDIR"); | t = g_hash_table_lookup (vars, "PLUGINSDIR"); | ||||
if (t) { | if (t) { | ||||
pluginsdir = t; | pluginsdir = t; | ||||
lua_createtable (L, 0, 9); | 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_CONFDIR_INDEX, confdir); | ||||
rspamd_lua_table_set (L, RSPAMD_LOCAL_CONFDIR_INDEX, local_confdir); | rspamd_lua_table_set (L, RSPAMD_LOCAL_CONFDIR_INDEX, local_confdir); | ||||
rspamd_lua_table_set (L, RSPAMD_RUNDIR_INDEX, rundir); | rspamd_lua_table_set (L, RSPAMD_RUNDIR_INDEX, rundir); |
#define RSPAMD_DBDIR_INDEX "DBDIR" | #define RSPAMD_DBDIR_INDEX "DBDIR" | ||||
#define RSPAMD_LOGDIR_INDEX "LOGDIR" | #define RSPAMD_LOGDIR_INDEX "LOGDIR" | ||||
#define RSPAMD_PLUGINSDIR_INDEX "PLUGINSDIR" | #define RSPAMD_PLUGINSDIR_INDEX "PLUGINSDIR" | ||||
#define RSPAMD_SHAREDIR_INDEX "SHAREDIR" | |||||
#define RSPAMD_RULESDIR_INDEX "RULESDIR" | #define RSPAMD_RULESDIR_INDEX "RULESDIR" | ||||
#define RSPAMD_LUALIBDIR_INDEX "LUALIBDIR" | #define RSPAMD_LUALIBDIR_INDEX "LUALIBDIR" | ||||
#define RSPAMD_WWWDIR_INDEX "WWWDIR" | #define RSPAMD_WWWDIR_INDEX "WWWDIR" |
local settings = { | local settings = { | ||||
limit = 500, | limit = 500, | ||||
index_pattern = 'rspamd-%Y.%m.%d', | 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-', | key_prefix = 'elastic-', | ||||
expire = 3600, | expire = 3600, | ||||
timeout = 5.0, | timeout = 5.0, |