diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-09-24 18:39:46 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-09-24 18:39:46 +0100 |
commit | eb38f643f3b26d552fb4503dcc8528e3388c9b99 (patch) | |
tree | 4077ec7af2882157002744c7e9d11e308d15424d /src/libserver | |
parent | 28e68fc82c74e50e67ebaeb7bd1caead7d1b48fc (diff) | |
download | rspamd-eb38f643f3b26d552fb4503dcc8528e3388c9b99.tar.gz rspamd-eb38f643f3b26d552fb4503dcc8528e3388c9b99.zip |
Allow metric registration for composite expressions.
Diffstat (limited to 'src/libserver')
-rw-r--r-- | src/libserver/cfg_rcl.c | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/src/libserver/cfg_rcl.c b/src/libserver/cfg_rcl.c index d5cfc0298..f50b37010 100644 --- a/src/libserver/cfg_rcl.c +++ b/src/libserver/cfg_rcl.c @@ -1050,7 +1050,9 @@ rspamd_rcl_composite_handler (rspamd_mempool_t *pool, struct rspamd_expression *expr; struct rspamd_config *cfg = ud; struct rspamd_composite *composite; - const gchar *composite_name, *composite_expression; + const gchar *composite_name, *composite_expression, *group, *metric, + *description; + gdouble score; gboolean new = TRUE; g_assert (key != NULL); @@ -1098,6 +1100,38 @@ rspamd_rcl_composite_handler (rspamd_mempool_t *pool, NULL, NULL, SYMBOL_TYPE_COMPOSITE, -1); } + val = ucl_object_find_key (obj, "score"); + if (val != NULL && ucl_object_todouble_safe (val, &score)) { + /* Also set score in the metric */ + + val = ucl_object_find_key (obj, "group"); + if (val != NULL) { + group = ucl_object_tostring (val); + } + else { + group = "composite"; + } + + val = ucl_object_find_key (obj, "metric"); + if (val != NULL) { + metric = ucl_object_tostring (val); + } + else { + metric = DEFAULT_METRIC; + } + + val = ucl_object_find_key (obj, "description"); + if (val != NULL) { + description = ucl_object_tostring (val); + } + else { + description = composite_expression; + } + + rspamd_config_add_metric_symbol (cfg, metric, composite_name, score, + description, group, FALSE, FALSE); + } + return TRUE; } |