aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/libserver/cfg_file.h1
-rw-r--r--src/libserver/cfg_utils.c3
-rw-r--r--src/libserver/task.c32
3 files changed, 28 insertions, 8 deletions
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;