aboutsummaryrefslogtreecommitdiffstats
path: root/src/libserver
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2015-11-05 15:54:48 +0300
committerVsevolod Stakhov <vsevolod@highsecure.ru>2015-11-05 15:54:48 +0300
commit063ad836a7e2a61192d3a6ca13b07114c4923c09 (patch)
tree2d4f27041cab5fca234a7dbaa93d71f9fd5f2133 /src/libserver
parent2068591f5c63765cb3073058ef7074cf71f12a82 (diff)
downloadrspamd-063ad836a7e2a61192d3a6ca13b07114c4923c09.tar.gz
rspamd-063ad836a7e2a61192d3a6ca13b07114c4923c09.zip
Start variable log format support.
Diffstat (limited to 'src/libserver')
-rw-r--r--src/libserver/cfg_file.h34
-rw-r--r--src/libserver/cfg_rcl.c5
-rw-r--r--src/libserver/cfg_utils.c6
3 files changed, 45 insertions, 0 deletions
diff --git a/src/libserver/cfg_file.h b/src/libserver/cfg_file.h
index 5f1abe1b0..416053aba 100644
--- a/src/libserver/cfg_file.h
+++ b/src/libserver/cfg_file.h
@@ -165,6 +165,38 @@ struct rspamd_worker_conf {
ucl_object_t *options; /**< other worker's options */
};
+enum rspamd_log_format_type {
+ RSPAMD_LOG_STRING = 0,
+ RSPAMD_LOG_MID,
+ RSPAMD_LOG_QID,
+ RSPAMD_LOG_USER,
+ RSPAMD_LOG_ISSPAM,
+ RSPAMD_LOG_ACTION,
+ RSPAMD_LOG_SCORES,
+ RSPAMD_LOG_SYMBOLS,
+ RSPAMD_LOG_IP,
+ RSPAMD_LOG_DNS_REQ,
+ RSPAMD_LOG_SMTP_FROM,
+ RSPAMD_LOG_MIME_FROM,
+ RSPAMD_LOG_TIME_REAL,
+ RSPAMD_LOG_TIME_VIRTUAL,
+ RSPAMD_LOG_LUA
+};
+
+enum rspamd_log_format_flags {
+ RSPAMD_LOG_FLAG_DEFAULT = 0,
+ RSPAMD_LOG_FLAG_OPTIONAL = (1 << 0),
+ RSPAMD_LOG_FLAG_MIME_ALTERNATIVE = (1 << 1),
+ RSPAMD_LOG_FLAG_CONDITION = (1 << 2)
+};
+
+struct rspamd_log_format {
+ enum rspamd_log_format_type type;
+ guint flags;
+ gpointer data;
+ struct rspamd_log_format *prev, *next;
+};
+
/**
* Structure that stores all config data
*/
@@ -277,6 +309,8 @@ struct rspamd_config {
GList *classify_headers; /**< list of headers using for statistics */
struct module_s **compiled_modules; /**< list of compiled C modules */
struct worker_s **compiled_workers; /**< list of compiled C modules */
+ struct rspamd_log_format *log_format; /**< parsed log format */
+ gchar *log_format_str; /**< raw log format string */
};
diff --git a/src/libserver/cfg_rcl.c b/src/libserver/cfg_rcl.c
index b572fd59c..b42f2241c 100644
--- a/src/libserver/cfg_rcl.c
+++ b/src/libserver/cfg_rcl.c
@@ -1254,6 +1254,11 @@ rspamd_rcl_config_init (void)
rspamd_rcl_parse_struct_string_list,
G_STRUCT_OFFSET (struct rspamd_config, debug_modules),
RSPAMD_CL_FLAG_STRING_LIST_HASH);
+ rspamd_rcl_add_default_handler (sub,
+ "log_format",
+ rspamd_rcl_parse_struct_string,
+ G_STRUCT_OFFSET (struct rspamd_config, log_format_str),
+ 0);
/**
* Options section
*/
diff --git a/src/libserver/cfg_utils.c b/src/libserver/cfg_utils.c
index 1aae2c12d..bad00db8a 100644
--- a/src/libserver/cfg_utils.c
+++ b/src/libserver/cfg_utils.c
@@ -177,6 +177,12 @@ rspamd_config_defaults (struct rspamd_config *cfg)
cfg->min_word_len = DEFAULT_MIN_WORD;
cfg->dns_max_requests = 64;
cfg->history_rows = 200;
+
+ /* Default log line */
+ cfg->log_format_str = "id: <$mid>, $if_qid{qid: <$>,} $if_ip{ip: $,}"
+ "$if_ip{ip: $,} $if_from{from: <$>,} (default: $is_spam "
+ "($action): [$scores] [$symbols]), len: $len, time: $time_real real,"
+ " $time_virtual virtual, dns req: $dns_req";
}
void