From: Vsevolod Stakhov Date: Mon, 15 Aug 2016 17:41:25 +0000 (+0100) Subject: [Feature] Allow to print message digest in logs X-Git-Tag: 1.3.4~47 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=98144000841b33d84e571f04fd56d385e8ad0a98;p=thirdparty%2Frspamd.git [Feature] Allow to print message digest in logs --- diff --git a/src/libserver/cfg_file.h b/src/libserver/cfg_file.h index 005c3c9841..f0e09f0b20 100644 --- a/src/libserver/cfg_file.h +++ b/src/libserver/cfg_file.h @@ -211,7 +211,8 @@ enum rspamd_log_format_type { RSPAMD_LOG_MIME_RCPTS, RSPAMD_LOG_TIME_REAL, RSPAMD_LOG_TIME_VIRTUAL, - RSPAMD_LOG_LUA + RSPAMD_LOG_LUA, + RSPAMD_LOG_DIGEST, }; enum rspamd_log_format_flags { diff --git a/src/libserver/cfg_utils.c b/src/libserver/cfg_utils.c index d3bcfc03a4..bb8acc33d6 100644 --- a/src/libserver/cfg_utils.c +++ b/src/libserver/cfg_utils.c @@ -393,6 +393,10 @@ rspamd_config_process_var (struct rspamd_config *cfg, const rspamd_ftok_t *var, else if (rspamd_ftok_cstr_equal (&tok, "lua", TRUE)) { type = RSPAMD_LOG_LUA; } + else if (rspamd_ftok_cstr_equal (&tok, "digest", TRUE) || + rspamd_ftok_cstr_equal (&tok, "checksum", TRUE)) { + type = RSPAMD_LOG_DIGEST; + } else { msg_err_config ("unknown log variable: %T", &tok); return FALSE; diff --git a/src/libserver/task.c b/src/libserver/task.c index 47e9aa1c57..70566b6b06 100644 --- a/src/libserver/task.c +++ b/src/libserver/task.c @@ -1123,7 +1123,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[32]; + static gchar numbuf[64]; switch (lf->type) { /* String vars */ @@ -1226,6 +1226,11 @@ rspamd_task_log_variable (struct rspamd_task *task, logbuf); } break; + case RSPAMD_LOG_DIGEST: + var.len = rspamd_snprintf (numbuf, sizeof (numbuf), "%*xs", + (gint)sizeof (task->digest), task->digest); + var.begin = numbuf; + break; default: var = rspamd_task_log_metric_res (task, lf); break;