From 16d8e1ef572d5ee720015672b9afb4f168fbb94f Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Mon, 23 Jan 2023 21:52:00 +0000 Subject: [PATCH] [Feature] Add `thresholds` field to the scan result --- src/libserver/protocol.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/libserver/protocol.c b/src/libserver/protocol.c index 380d80134..3708d823f 100644 --- a/src/libserver/protocol.c +++ b/src/libserver/protocol.c @@ -1213,7 +1213,7 @@ rspamd_scan_result_ucl (struct rspamd_task *task, if (pr) { if (pr->message && !(pr->flags & RSPAMD_PASSTHROUGH_NO_SMTP_MESSAGE)) { - /* Add smtp message if it does not exists: see #3269 for details */ + /* Add smtp message if it does not exist: see #3269 for details */ if (ucl_object_lookup(task->messages, "smtp_message") == NULL) { ucl_object_insert_key(task->messages, ucl_object_fromstring_common(pr->message, 0, UCL_STRING_RAW), @@ -1268,6 +1268,21 @@ rspamd_scan_result_ucl (struct rspamd_task *task, /* Now handle symbols */ if (task->cmd != CMD_CHECK) { + /* Insert actions thresholds */ + ucl_object_t *actions_obj = ucl_object_typed_new (UCL_OBJECT); + + for (int i = task->result->nactions - 1; i >= 0; i --) { + struct rspamd_action_config *action_lim = &task->result->actions_config[i]; + + if (!isnan (action_lim->cur_limit) && + !(action_lim->action->flags & (RSPAMD_ACTION_NO_THRESHOLD|RSPAMD_ACTION_HAM))) { + ucl_object_insert_key(actions_obj, ucl_object_fromdouble(action_lim->cur_limit), + action_lim->action->name, 0, true); + } + } + + ucl_object_insert_key(obj, actions_obj, "thresholds", 0, false); + /* For checkv2 we insert symbols as a separate object */ obj = ucl_object_typed_new (UCL_OBJECT); } -- 2.39.5