From: Vsevolod Stakhov Date: Tue, 13 Mar 2018 17:58:16 +0000 (+0000) Subject: [Feature] Add filename to log format X-Git-Tag: 1.7.1~52 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2739b417ab64b52f50fb6191c2660191e4034da9;p=thirdparty%2Frspamd.git [Feature] Add filename to log format --- diff --git a/conf/logging.inc b/conf/logging.inc index b8d032c414..6768452918 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 199c965f4b..ede88d9d76 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 86009712e8..c042c5eb20 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 dfb7f07c9a..55a00649de 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;