From 2739b417ab64b52f50fb6191c2660191e4034da9 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Tue, 13 Mar 2018 17:58:16 +0000 Subject: [PATCH] [Feature] Add filename to log format --- conf/logging.inc | 2 +- src/libserver/cfg_file.h | 1 + src/libserver/cfg_utils.c | 3 +++ src/libserver/task.c | 32 ++++++++++++++++++++++++-------- 4 files changed, 29 insertions(+), 9 deletions(-) diff --git a/conf/logging.inc b/conf/logging.inc index b8d032c41..676845291 100644 --- a/conf/logging.inc +++ b/conf/logging.inc @@ -5,7 +5,7 @@ log_format =<,$if_qid{ qid: <$>,}$if_ip{ ip: $,}$if_user{ user: $,}$if_smtp_from{ from: <$>,} (default: $is_spam ($action): [$scores] [$symbols_scores_params]), len: $len, time: $time_real real, $time_virtual virtual, dns req: $dns_req, -digest: <$digest>$if_smtp_rcpts{, rcpts: <$>}$if_mime_rcpt{, mime_rcpt: <$>} +digest: <$digest>$if_smtp_rcpts{, rcpts: <$>}$if_mime_rcpt{, mime_rcpt: <$>}$if_filename{, file: $} EOD diff --git a/src/libserver/cfg_file.h b/src/libserver/cfg_file.h index 199c965f4..ede88d9d7 100644 --- a/src/libserver/cfg_file.h +++ b/src/libserver/cfg_file.h @@ -234,6 +234,7 @@ enum rspamd_log_format_type { RSPAMD_LOG_TIME_VIRTUAL, RSPAMD_LOG_LUA, RSPAMD_LOG_DIGEST, + RSPAMD_LOG_FILENAME, }; enum rspamd_log_format_flags { diff --git a/src/libserver/cfg_utils.c b/src/libserver/cfg_utils.c index 86009712e..c042c5eb2 100644 --- a/src/libserver/cfg_utils.c +++ b/src/libserver/cfg_utils.c @@ -425,6 +425,9 @@ rspamd_config_process_var (struct rspamd_config *cfg, const rspamd_ftok_t *var, rspamd_ftok_cstr_equal (&tok, "checksum", TRUE)) { type = RSPAMD_LOG_DIGEST; } + else if (rspamd_ftok_cstr_equal (&tok, "filename", TRUE)) { + type = RSPAMD_LOG_FILENAME; + } else { msg_err_config ("unknown log variable: %T", &tok); return FALSE; diff --git a/src/libserver/task.c b/src/libserver/task.c index dfb7f07c9..55a00649d 100644 --- a/src/libserver/task.c +++ b/src/libserver/task.c @@ -986,6 +986,11 @@ rspamd_task_log_check_condition (struct rspamd_task *task, ret = TRUE; } break; + case RSPAMD_LOG_FILENAME: + if (task->msg.fpath) { + ret = TRUE; + } + break; default: ret = TRUE; break; @@ -1268,6 +1273,7 @@ rspamd_task_log_variable (struct rspamd_task *task, rspamd_fstring_t *res = logbuf; rspamd_ftok_t var = {.begin = NULL, .len = 0}; static gchar numbuf[64]; + static const gchar undef[] = "undef"; switch (lf->type) { /* String vars */ @@ -1277,8 +1283,8 @@ rspamd_task_log_variable (struct rspamd_task *task, var.len = strlen (var.begin); } else { - var.begin = "undef"; - var.len = 5; + var.begin = undef; + var.len = sizeof (undef) - 1; } break; case RSPAMD_LOG_QID: @@ -1287,8 +1293,8 @@ rspamd_task_log_variable (struct rspamd_task *task, var.len = strlen (var.begin); } else { - var.begin = "undef"; - var.len = 5; + var.begin = undef; + var.len = sizeof (undef) - 1; } break; case RSPAMD_LOG_USER: @@ -1297,8 +1303,8 @@ rspamd_task_log_variable (struct rspamd_task *task, var.len = strlen (var.begin); } else { - var.begin = "undef"; - var.len = 5; + var.begin = undef; + var.len = sizeof (undef) - 1; } break; case RSPAMD_LOG_IP: @@ -1307,8 +1313,8 @@ rspamd_task_log_variable (struct rspamd_task *task, var.len = strlen (var.begin); } else { - var.begin = "undef"; - var.len = 5; + var.begin = undef; + var.len = sizeof (undef) - 1; } break; /* Numeric vars */ @@ -1376,6 +1382,16 @@ rspamd_task_log_variable (struct rspamd_task *task, (gint)sizeof (task->digest), task->digest); var.begin = numbuf; break; + case RSPAMD_LOG_FILENAME: + if (task->msg.fpath) { + var.len = strlen (task->msg.fpath); + var.begin = task->msg.fpath; + } + else { + var.begin = undef; + var.len = sizeof (undef) - 1; + } + break; default: var = rspamd_task_log_metric_res (task, lf); break; -- 2.39.5