diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-02-22 21:32:22 +0000 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-02-22 21:32:22 +0000 |
commit | ef9d816e983d6559e6c711a2a5e2e76a2ddbd226 (patch) | |
tree | dd88474496b8df6d950d51ac516693ed9f39b5fe /src/libserver/cfg_rcl.c | |
parent | 32d054c31888e6eb9f4e449e4c237142d4042b7f (diff) | |
download | rspamd-ef9d816e983d6559e6c711a2a5e2e76a2ddbd226.tar.gz rspamd-ef9d816e983d6559e6c711a2a5e2e76a2ddbd226.zip |
Allow configurable tokenizers.
Diffstat (limited to 'src/libserver/cfg_rcl.c')
-rw-r--r-- | src/libserver/cfg_rcl.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/libserver/cfg_rcl.c b/src/libserver/cfg_rcl.c index eece86fb7..0ba9423a1 100644 --- a/src/libserver/cfg_rcl.c +++ b/src/libserver/cfg_rcl.c @@ -930,6 +930,7 @@ rspamd_rcl_classifier_handler (struct rspamd_config *cfg, struct rspamd_classifier_config *ccf; gboolean res = TRUE; struct rspamd_rcl_section *stat_section; + struct rspamd_tokenizer_config *tkcf = NULL; ccf = rspamd_config_new_classifier (cfg, NULL); @@ -960,6 +961,19 @@ rspamd_rcl_classifier_handler (struct rspamd_config *cfg, } } } + else if (g_ascii_strcasecmp (key, "tokenizer") == 0) { + tkcf = rspamd_mempool_alloc0 (cfg->cfg_pool, sizeof (*tkcf)); + if (ucl_object_type (val) == UCL_STRING) { + tkcf->name = ucl_object_tostring (val); + } + else if (ucl_object_type (val) == UCL_OBJECT) { + cur = ucl_object_find_key (val, "name"); + if (cur != NULL) { + tkcf->name = ucl_object_tostring (cur); + tkcf->opts = val; + } + } + } } } } @@ -968,6 +982,7 @@ rspamd_rcl_classifier_handler (struct rspamd_config *cfg, } ccf->opts = (ucl_object_t *)obj; + ccf->tokenizer = tkcf; cfg->classifiers = g_list_prepend (cfg->classifiers, ccf); @@ -1357,11 +1372,6 @@ rspamd_rcl_config_init (void) G_STRUCT_OFFSET (struct rspamd_classifier_config, classifier), 0); rspamd_rcl_add_default_handler (sub, - "tokenizer", - rspamd_rcl_parse_struct_string, - G_STRUCT_OFFSET (struct rspamd_classifier_config, tokenizer), - 0); - rspamd_rcl_add_default_handler (sub, "min_tokens", rspamd_rcl_parse_struct_integer, G_STRUCT_OFFSET (struct rspamd_classifier_config, min_tokens), |