Skip to content

Commit

Permalink
[Feature] Add logging of groups to the log_format
Browse files Browse the repository at this point in the history
  • Loading branch information
vstakhov committed Aug 30, 2019
1 parent ddcbe39 commit 10dcd62
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 0 deletions.
2 changes: 2 additions & 0 deletions src/libserver/cfg_file.h
Expand Up @@ -258,6 +258,8 @@ enum rspamd_log_format_type {
RSPAMD_LOG_FILENAME,
RSPAMD_LOG_FORCED_ACTION,
RSPAMD_LOG_SETTINGS_ID,
RSPAMD_LOG_GROUPS,
RSPAMD_LOG_PUBLIC_GROUPS,
};

enum rspamd_log_format_flags {
Expand Down
6 changes: 6 additions & 0 deletions src/libserver/cfg_utils.c
Expand Up @@ -451,6 +451,12 @@ rspamd_config_process_var (struct rspamd_config *cfg, const rspamd_ftok_t *var,
type = RSPAMD_LOG_SYMBOLS;
flags |= RSPAMD_LOG_FMT_FLAG_SYMBOLS_PARAMS|RSPAMD_LOG_FMT_FLAG_SYMBOLS_SCORES;
}
else if (rspamd_ftok_cstr_equal (&tok, "groups", TRUE)) {
type = RSPAMD_LOG_GROUPS;
}
else if (rspamd_ftok_cstr_equal (&tok, "public_groups", TRUE)) {
type = RSPAMD_LOG_PUBLIC_GROUPS;
}
else if (rspamd_ftok_cstr_equal (&tok, "ip", TRUE)) {
type = RSPAMD_LOG_IP;
}
Expand Down
56 changes: 56 additions & 0 deletions src/libserver/task.c
Expand Up @@ -1035,6 +1035,16 @@ rspamd_task_compare_log_sym (gconstpointer a, gconstpointer b)
return (w2 - w1) * 1000.0;
}

static gint
rspamd_task_compare_log_group (gconstpointer a, gconstpointer b)
{
const struct rspamd_symbols_group *s1 = *(const struct rspamd_symbols_group **)a,
*s2 = *(const struct rspamd_symbols_group **)b;

return strcmp (s1->name, s2->name);
}


static rspamd_ftok_t
rspamd_task_log_metric_res (struct rspamd_task *task,
struct rspamd_log_format *lf)
Expand All @@ -1047,7 +1057,10 @@ rspamd_task_log_metric_res (struct rspamd_task *task,
struct rspamd_symbol_result *sym;
GPtrArray *sorted_symbols;
struct rspamd_action *act;
struct rspamd_symbols_group *gr;
gdouble gr_score;
guint i, j;
khiter_t k;

mres = task->result;
act = rspamd_check_action_metric (task);
Expand Down Expand Up @@ -1136,6 +1149,49 @@ rspamd_task_log_metric_res (struct rspamd_task *task,
res.begin = symbuf->str;
res.len = symbuf->len;
break;

case RSPAMD_LOG_GROUPS:
case RSPAMD_LOG_PUBLIC_GROUPS:

symbuf = rspamd_fstring_sized_new (128);
sorted_symbols = g_ptr_array_sized_new (kh_size (mres->sym_groups));

kh_foreach (mres->sym_groups, gr, gr_score,{
if (!(gr->flags & RSPAMD_SYMBOL_GROUP_PUBLIC)) {
if (lf->type == RSPAMD_LOG_PUBLIC_GROUPS) {
continue;
}
}
});

g_ptr_array_sort (sorted_symbols, rspamd_task_compare_log_group);

for (i = 0; i < sorted_symbols->len; i++) {
gr = g_ptr_array_index (sorted_symbols, i);

if (first) {
rspamd_printf_fstring (&symbuf, "%s", gr->name);
}
else {
rspamd_printf_fstring (&symbuf, ",%s", gr->name);
}

k = kh_get (rspamd_symbols_group_hash, mres->sym_groups, gr);

rspamd_printf_fstring (&symbuf, "(%.2f)",
kh_value (mres->sym_groups, k));

first = FALSE;
}

g_ptr_array_free (sorted_symbols, TRUE);

rspamd_mempool_add_destructor (task->task_pool,
(rspamd_mempool_destruct_t) rspamd_fstring_free,
symbuf);
res.begin = symbuf->str;
res.len = symbuf->len;
break;
default:
break;
}
Expand Down

0 comments on commit 10dcd62

Please sign in to comment.