diff options
-rw-r--r-- | config.h.in | 2 | ||||
-rw-r--r-- | rspamd.conf.sample | 2 | ||||
-rw-r--r-- | src/cfg_file.h | 3 | ||||
-rw-r--r-- | src/cfg_utils.c | 2 | ||||
-rw-r--r-- | src/main.c | 14 | ||||
-rw-r--r-- | src/main.h | 2 | ||||
-rw-r--r-- | src/util.c | 8 |
7 files changed, 26 insertions, 7 deletions
diff --git a/config.h.in b/config.h.in index 23d08ee36..23aabf666 100644 --- a/config.h.in +++ b/config.h.in @@ -224,6 +224,8 @@ #include <gmime/gmime.h> #endif +#define CMAKE_PREFIX "${CMAKE_INSTALL_PREFIX}" + /* Forwarded declaration */ struct module_ctx; struct config_file; diff --git a/rspamd.conf.sample b/rspamd.conf.sample index 0c6ba3189..41b44ccdd 100644 --- a/rspamd.conf.sample +++ b/rspamd.conf.sample @@ -41,7 +41,7 @@ logging { # log_facility = "LOG_MAIL"; # Log file is used with log type "file" - # log_file = /var/log/rspamd.log + # log_file = "/var/log/rspamd.log" }; # Limit for statfile pool size diff --git a/src/cfg_file.h b/src/cfg_file.h index 7bacb8aa9..78ad6e93a 100644 --- a/src/cfg_file.h +++ b/src/cfg_file.h @@ -153,7 +153,8 @@ struct config_file { int controller_enabled; /**< whether controller is enabled */ char *control_password; /**< controller password */ - int no_fork; /**< if 1 do not call daemon() */ + gboolean no_fork; /**< if 1 do not call daemon() */ + gboolean config_test; /**< if TRUE do only config file test */ unsigned int workers_number; /**< number of workers */ enum rspamd_log_type log_type; /**< log type */ diff --git a/src/cfg_utils.c b/src/cfg_utils.c index 2785e18d9..e90fe11cb 100644 --- a/src/cfg_utils.c +++ b/src/cfg_utils.c @@ -681,7 +681,7 @@ parse_err (const char *fmt, ...) r += vsnprintf (logbuf + r, sizeof (logbuf) - r, fmt, aq); va_end (aq); - g_error ("%s", logbuf); + g_critical ("%s", logbuf); } void diff --git a/src/main.c b/src/main.c index 6a170726a..9c2da60b7 100644 --- a/src/main.c +++ b/src/main.c @@ -265,9 +265,16 @@ main (int argc, char **argv, char **env) rspamd->cfg->cfg_name = memory_pool_strdup (rspamd->cfg->cfg_pool, FIXED_CONFIG_FILE); read_cmd_line (argc, argv, rspamd->cfg); + + if (cfg->config_test) { + cfg->log_level = G_LOG_LEVEL_DEBUG; + } + else { + cfg->log_level = G_LOG_LEVEL_CRITICAL; + } /* First set logger to console logger */ - cfg->log_fd = 2; + cfg->log_fd = STDERR_FILENO; g_log_set_default_handler (file_log_function, cfg); #ifndef HAVE_SETPROCTITLE @@ -287,6 +294,11 @@ main (int argc, char **argv, char **env) } fclose (f); + + if (cfg->config_test) { + fprintf (stderr, "syntax OK\n"); + return EXIT_SUCCESS; + } config_logger (rspamd, TRUE); diff --git a/src/main.h b/src/main.h index fab8a9040..8661346f1 100644 --- a/src/main.h +++ b/src/main.h @@ -17,7 +17,7 @@ #include "buffer.h" /* Default values */ -#define FIXED_CONFIG_FILE "./rspamd.conf" +#define FIXED_CONFIG_FILE CMAKE_PREFIX "/etc/rspamd.conf" /* Time in seconds to exit for old worker */ #define SOFT_SHUTDOWN_TIME 60 /* Default metric name */ diff --git a/src/util.c b/src/util.c index cffa5e06b..a7aea229c 100644 --- a/src/util.c +++ b/src/util.c @@ -118,7 +118,7 @@ void read_cmd_line (int argc, char **argv, struct config_file *cfg) { int ch; - while ((ch = getopt(argc, argv, "hfc:")) != -1) { + while ((ch = getopt(argc, argv, "thfc:")) != -1) { switch (ch) { case 'f': cfg->no_fork = 1; @@ -128,13 +128,17 @@ read_cmd_line (int argc, char **argv, struct config_file *cfg) cfg->cfg_name = memory_pool_strdup (cfg->cfg_pool, optarg); } break; + case 't': + cfg->config_test = 1; + break; case 'h': case '?': default: /* Show help message and exit */ printf ("Rspamd version " RVERSION "\n" - "Usage: rspamd [-h] [-n] [-f] [-c config_file]\n" + "Usage: rspamd [-t] [-h] [-n] [-f] [-c config_file]\n" "-h: This help message\n" + "-t: Do config test and exit\n" "-f: Do not daemonize main process\n" "-c: Specify config file (./rspamd.conf is used by default)\n"); exit (0); |