Browse Source

[Rework] Slashing: Distinguish lualibdir, pluginsdir and sharedir

tags/1.9.0
Vsevolod Stakhov 5 years ago
parent
commit
36e960ed74

+ 20
- 15
CMakeLists.txt View File

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}"

+ 1
- 1
centos/rspamd.spec View File

%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 \

+ 2
- 1
conf/common.conf View File

.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
} }

+ 2
- 2
conf/modules.d/elastic.conf View File

# 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

+ 1
- 1
conf/options.inc View File

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",

+ 1
- 0
config.h.in View File



#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}"

+ 1
- 1
debian/rules View File

-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 \

+ 1
- 1
src/libmime/lang_detection.c View File

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



+ 5
- 1
src/libserver/cfg_utils.c View File

/* 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);

+ 44
- 16
src/lua/lua_common.c View File

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);

+ 1
- 0
src/lua/lua_common.h View File

#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"

+ 2
- 2
src/plugins/lua/elastic.lua View File

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,

Loading…
Cancel
Save