diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2019-03-27 14:18:22 +0000 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2019-03-27 14:18:22 +0000 |
commit | 812dfbbd064daf5f60260b5718bbe3ba4173eabf (patch) | |
tree | db7a75acaf64df6e4dc0da8746645f21035346f8 /src/rspamadm | |
parent | 6c98a7447d79fda38e0eb8313d45c6cc23cfc3c9 (diff) | |
download | rspamd-812dfbbd064daf5f60260b5718bbe3ba4173eabf.tar.gz rspamd-812dfbbd064daf5f60260b5718bbe3ba4173eabf.zip |
[Feature] Preprocess config files using jinja templates
Diffstat (limited to 'src/rspamadm')
-rw-r--r-- | src/rspamadm/configdump.c | 6 | ||||
-rw-r--r-- | src/rspamadm/configtest.c | 6 | ||||
-rw-r--r-- | src/rspamadm/rspamadm.c | 12 | ||||
-rw-r--r-- | src/rspamadm/rspamadm.h | 1 |
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); |