]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Feature] Allow to print message digest in logs
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 15 Aug 2016 17:41:25 +0000 (18:41 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 15 Aug 2016 17:41:25 +0000 (18:41 +0100)
src/libserver/cfg_file.h
src/libserver/cfg_utils.c
src/libserver/task.c

index 005c3c9841fb1f1919ade87dcd26eec6732eb249..f0e09f0b2087a3bd2d475dd11a54dced4791a61d 100644 (file)
@@ -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 {
index d3bcfc03a4a57d0ece9e545e1ae72660234db1c9..bb8acc33d662f89abfee6f6b91ec033caad69608 100644 (file)
@@ -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;
index 47e9aa1c57ba8702f8ef25d001530d1299d6c755..70566b6b06e45aab04f2f163b29bda05f2c2410a 100644 (file)
@@ -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;