aboutsummaryrefslogtreecommitdiffstats
path: root/src/rspamadm
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2019-03-27 14:18:22 +0000
committerVsevolod Stakhov <vsevolod@highsecure.ru>2019-03-27 14:18:22 +0000
commit812dfbbd064daf5f60260b5718bbe3ba4173eabf (patch)
treedb7a75acaf64df6e4dc0da8746645f21035346f8 /src/rspamadm
parent6c98a7447d79fda38e0eb8313d45c6cc23cfc3c9 (diff)
downloadrspamd-812dfbbd064daf5f60260b5718bbe3ba4173eabf.tar.gz
rspamd-812dfbbd064daf5f60260b5718bbe3ba4173eabf.zip
[Feature] Preprocess config files using jinja templates
Diffstat (limited to 'src/rspamadm')
-rw-r--r--src/rspamadm/configdump.c6
-rw-r--r--src/rspamadm/configtest.c6
-rw-r--r--src/rspamadm/rspamadm.c12
-rw-r--r--src/rspamadm/rspamadm.h1
4 files changed, 22 insertions, 3 deletions
diff --git a/src/rspamadm/configdump.c b/src/rspamadm/configdump.c
index a255994a5..8f38cdf61 100644
--- a/src/rspamadm/configdump.c
+++ b/src/rspamadm/configdump.c
@@ -27,6 +27,7 @@ static gboolean compact = FALSE;
static gboolean show_help = FALSE;
static gboolean show_comments = FALSE;
static gboolean modules_state = FALSE;
+static gboolean skip_template = FALSE;
static gchar *config = NULL;
extern struct rspamd_main *rspamd_main;
/* Defined in modules.c */
@@ -57,6 +58,8 @@ static GOptionEntry entries[] = {
"Show saved comments from the configuration file", NULL },
{"modules-state", 'm', 0, G_OPTION_ARG_NONE, &modules_state,
"Show modules state only", NULL},
+ {"skip-template", 'T', 0, G_OPTION_ARG_NONE, &skip_template,
+ "Do not apply Jinja templates", NULL},
{NULL, 0, 0, G_OPTION_ARG_NONE, NULL, NULL, NULL}
};
@@ -284,7 +287,8 @@ rspamadm_configdump (gint argc, gchar **argv, const struct rspamadm_command *cmd
cfg->compiled_workers = workers;
cfg->cfg_name = config;
- if (!rspamd_config_read (cfg, cfg->cfg_name, config_logger, rspamd_main, ucl_vars)) {
+ if (!rspamd_config_read (cfg, cfg->cfg_name, config_logger, rspamd_main,
+ ucl_vars, skip_template, lua_env)) {
ret = FALSE;
}
else {
diff --git a/src/rspamadm/configtest.c b/src/rspamadm/configtest.c
index db9a8d604..3b7a6b5b0 100644
--- a/src/rspamadm/configtest.c
+++ b/src/rspamadm/configtest.c
@@ -23,6 +23,7 @@
static gboolean quiet = FALSE;
static gchar *config = NULL;
static gboolean strict = FALSE;
+static gboolean skip_template = FALSE;
extern struct rspamd_main *rspamd_main;
/* Defined in modules.c */
extern module_t *modules[];
@@ -48,6 +49,8 @@ static GOptionEntry entries[] = {
"Config file to test", NULL},
{"strict", 's', 0, G_OPTION_ARG_NONE, &strict,
"Stop on any error in config", NULL},
+ {"skip-template", 'T', 0, G_OPTION_ARG_NONE, &skip_template,
+ "Do not apply Jinja templates", NULL},
{NULL, 0, 0, G_OPTION_ARG_NONE, NULL, NULL, NULL}
};
@@ -141,7 +144,8 @@ rspamadm_configtest (gint argc, gchar **argv, const struct rspamadm_command *cmd
cfg->compiled_workers = workers;
cfg->cfg_name = config;
- if (!rspamd_config_read (cfg, cfg->cfg_name, config_logger, rspamd_main, ucl_vars)) {
+ if (!rspamd_config_read (cfg, cfg->cfg_name, config_logger, rspamd_main,
+ ucl_vars, skip_template, lua_env)) {
ret = FALSE;
}
else {
diff --git a/src/rspamadm/rspamadm.c b/src/rspamadm/rspamadm.c
index 281690132..762a74c1f 100644
--- a/src/rspamadm/rspamadm.c
+++ b/src/rspamadm/rspamadm.c
@@ -31,6 +31,7 @@ static gboolean list_commands = FALSE;
static gboolean show_help = FALSE;
static gboolean show_version = FALSE;
GHashTable *ucl_vars = NULL;
+gchar **lua_env = NULL;
struct rspamd_main *rspamd_main = NULL;
struct rspamd_async_session *rspamadm_session = NULL;
lua_State *L = NULL;
@@ -65,6 +66,8 @@ static GOptionEntry entries[] = {
"Show help", NULL},
{"version", 'V', 0, G_OPTION_ARG_NONE, &show_version,
"Show version", NULL},
+ {"lua-env", '\0', 0, G_OPTION_ARG_FILENAME_ARRAY, &lua_env,
+ "Load lua environment from the specified files", NULL},
{NULL, 0, 0, G_OPTION_ARG_NONE, NULL, NULL, NULL}
};
@@ -458,8 +461,15 @@ main (gint argc, gchar **argv, gchar **env)
setproctitle ("rspamdadm");
L = cfg->lua_state;
- rspamd_lua_set_env (L, ucl_vars);
rspamd_lua_set_path (L, NULL, ucl_vars);
+
+ if (!rspamd_lua_set_env (L, ucl_vars, lua_env, &error)) {
+ rspamd_fprintf (stderr, "Cannot load lua environment: %e", error);
+ g_error_free (error);
+
+ exit (EXIT_FAILURE);
+ }
+
rspamd_lua_set_globals (cfg, L);
rspamadm_add_lua_globals ();
diff --git a/src/rspamadm/rspamadm.h b/src/rspamadm/rspamadm.h
index cd01cc86b..e8ed9c873 100644
--- a/src/rspamadm/rspamadm.h
+++ b/src/rspamadm/rspamadm.h
@@ -23,6 +23,7 @@
#include <lualib.h>
extern GHashTable *ucl_vars;
+extern gchar **lua_env;
extern struct rspamd_main *rspamd_main;
GQuark rspamadm_error (void);