]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
Rework symbols weights.
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 12 Aug 2015 16:22:33 +0000 (17:22 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 12 Aug 2015 16:22:33 +0000 (17:22 +0100)
src/libserver/cfg_rcl.c
src/libserver/cfg_utils.c
src/lua/lua_cfg_file.c
src/lua/lua_config.c
src/plugins/chartable.c
src/plugins/dkim_check.c
src/plugins/fuzzy_check.c
src/plugins/regexp.c
src/plugins/spf.c
src/plugins/surbl.c

index af7d5ef608aa9b04aaae851aaf6f45169f04cc5b..de7b6f1d1be85cef62efbe829ac1e778f9d755b3 100644 (file)
@@ -1165,7 +1165,7 @@ rspamd_rcl_composite_handler (rspamd_mempool_t *pool,
                composite);
 
        if (new) {
-               rspamd_symbols_cache_add_symbol (cfg->cache, composite_name, 1, 0,
+               rspamd_symbols_cache_add_symbol (cfg->cache, composite_name, 0,
                        NULL, NULL, SYMBOL_TYPE_COMPOSITE, -1);
        }
 
index a864cf154922176f8f318e41a785602e89be7b02..f9017d594d3fe83cb0559b3412263195f6241ba7 100644 (file)
@@ -701,7 +701,7 @@ symbols_classifiers_callback (gpointer key, gpointer value, gpointer ud)
        struct rspamd_config *cfg = ud;
 
        /* Actually, statistics should act like any ordinary symbol */
-       rspamd_symbols_cache_add_symbol (cfg->cache, key, 1.0, 0, NULL, NULL,
+       rspamd_symbols_cache_add_symbol (cfg->cache, key, 0, NULL, NULL,
                        SYMBOL_TYPE_COMPOSITE, -1);
 }
 
index 563fbb77bfe31eb00b675ad4a0f629ae48310776..a8e8dfbb848123da802121850c044209efb4942e 100644 (file)
@@ -213,7 +213,7 @@ rspamd_lua_post_load_config (struct rspamd_config *cfg)
                                else {
                                        g_hash_table_insert (cfg->composite_symbols, sym, expr);
                                        rspamd_symbols_cache_add_symbol (cfg->cache, sym,
-                                                       1, 0, NULL, NULL, SYMBOL_TYPE_COMPOSITE, -1);
+                                                       0, NULL, NULL, SYMBOL_TYPE_COMPOSITE, -1);
                                }
                        }
                }
index a1033543d9dfc2242ffa4701564f5d3e0a530cb3..ea84f5532d1eba17c2c5ab815dd7b7c4c5eded98 100644 (file)
@@ -920,7 +920,6 @@ rspamd_register_symbol_fromlua (lua_State *L,
 
        ret = rspamd_symbols_cache_add_symbol (cfg->cache,
                        name,
-                       weight,
                        priority,
                        lua_metric_symbol_callback,
                        cd,
@@ -1012,16 +1011,18 @@ lua_config_register_symbols (lua_State *L)
                                while (lua_next (L, -2)) {
                                        lua_pushvalue (L, -2);
                                        sym = luaL_checkstring (L, -2);
-                                       rspamd_symbols_cache_add_symbol_virtual (cfg->cache, sym,
-                                                       weight, ret);
+                                       rspamd_symbols_cache_add_symbol (cfg->cache, sym,
+                                                       0, NULL, NULL,
+                                                       SYMBOL_TYPE_VIRTUAL, ret);
                                        lua_pop (L, 2);
                                }
                                lua_pop (L, 1);
                        }
                        else if (lua_type (L, i) == LUA_TSTRING) {
                                sym = luaL_checkstring (L, i);
-                               rspamd_symbols_cache_add_symbol_virtual (cfg->cache, sym,
-                                               weight, ret);
+                               rspamd_symbols_cache_add_symbol (cfg->cache, sym,
+                                               0, NULL, NULL,
+                                               SYMBOL_TYPE_VIRTUAL, ret);
                        }
                }
        }
@@ -1048,8 +1049,9 @@ lua_config_register_virtual_symbol (lua_State * L)
                }
 
                if (name) {
-                       ret = rspamd_symbols_cache_add_symbol_virtual (cfg->cache, name,
-                                       weight, parent);
+                       ret = rspamd_symbols_cache_add_symbol (cfg->cache, name,
+                                       0, NULL, NULL,
+                                       SYMBOL_TYPE_VIRTUAL, parent);
                }
        }
 
@@ -1257,7 +1259,7 @@ lua_config_add_composite (lua_State * L)
 
                                if (new) {
                                        rspamd_symbols_cache_add_symbol (cfg->cache, name,
-                                                       1, 0, NULL, NULL, SYMBOL_TYPE_COMPOSITE, -1);
+                                                       0, NULL, NULL, SYMBOL_TYPE_COMPOSITE, -1);
                                }
 
                                ret = TRUE;
index c0c68f71a48b560eca8171b955867d4ac9b3747f..1cb1c7ed7264d24f85d029bbc5950f68dc64940a 100644 (file)
@@ -104,11 +104,13 @@ chartable_module_config (struct rspamd_config *cfg)
                chartable_module_ctx->threshold = DEFAULT_THRESHOLD;
        }
 
-       rspamd_symbols_cache_add_symbol_normal (cfg->cache,
+       rspamd_symbols_cache_add_symbol (cfg->cache,
                chartable_module_ctx->symbol,
-               1,
+               0,
                chartable_symbol_callback,
-               NULL);
+               NULL,
+               SYMBOL_TYPE_NORMAL,
+               -1);
 
        return res;
 }
index e30b9858c14eccdef723633ab91aa6b01403a019..3966415917d094343345a92d78accb7814597454 100644 (file)
@@ -228,18 +228,24 @@ dkim_module_config (struct rspamd_config *cfg)
                        "trusted_only option is set and no trusted domains are defined; disabling dkim module completely as it is useless in this case");
        }
        else {
-               cb_id = rspamd_symbols_cache_add_symbol_normal (cfg->cache,
+               cb_id = rspamd_symbols_cache_add_symbol (cfg->cache,
                        dkim_module_ctx->symbol_reject,
-                       1,
+                       0,
                        dkim_symbol_callback,
-                       NULL);
-               rspamd_symbols_cache_add_symbol_virtual (cfg->cache,
+                       NULL,
+                       SYMBOL_TYPE_NORMAL|SYMBOL_TYPE_FINE,
+                       -1);
+               rspamd_symbols_cache_add_symbol (cfg->cache,
                        dkim_module_ctx->symbol_tempfail,
-                       1,
+                       0,
+                       NULL, NULL,
+                       SYMBOL_TYPE_VIRTUAL|SYMBOL_TYPE_FINE,
                        cb_id);
-               rspamd_symbols_cache_add_symbol_virtual (cfg->cache,
+               rspamd_symbols_cache_add_symbol (cfg->cache,
                        dkim_module_ctx->symbol_allow,
-                       1,
+                       0,
+                       NULL, NULL,
+                       SYMBOL_TYPE_VIRTUAL|SYMBOL_TYPE_FINE,
                        cb_id);
 
                dkim_module_ctx->dkim_hash = rspamd_lru_hash_new (
index 783b9393f51ccc08fa72cfb4773c477136d7591d..7d240fcec172fc103dd63d58084567acf6ee9edd 100644 (file)
@@ -176,8 +176,11 @@ parse_flags (struct fuzzy_rule *rule,
                                /* Add flag to hash table */
                                g_hash_table_insert (rule->mappings,
                                        GINT_TO_POINTER (map->fuzzy_flag), map);
-                               rspamd_symbols_cache_add_symbol_virtual (cfg->cache,
-                                               map->symbol, 1.0, cb_id);
+                               rspamd_symbols_cache_add_symbol (cfg->cache,
+                                               map->symbol, 0,
+                                               NULL, NULL,
+                                               SYMBOL_TYPE_VIRTUAL|SYMBOL_TYPE_FINE,
+                                               cb_id);
                        }
                        else {
                                msg_err ("fuzzy_map parameter has no flag definition");
@@ -386,8 +389,11 @@ fuzzy_parse_rule (struct rspamd_config *cfg, const ucl_object_t *obj, gint cb_id
                        fuzzy_module_ctx->fuzzy_rules,
                        rule);
                if (rule->symbol != fuzzy_module_ctx->default_symbol) {
-                       rspamd_symbols_cache_add_symbol_virtual (cfg->cache, rule->symbol,
-                                       1.0, cb_id);
+                       rspamd_symbols_cache_add_symbol (cfg->cache, rule->symbol,
+                                       0,
+                                       NULL, NULL,
+                                       SYMBOL_TYPE_VIRTUAL|SYMBOL_TYPE_FINE,
+                                       cb_id);
                }
        }
 
@@ -487,8 +493,10 @@ fuzzy_check_module_config (struct rspamd_config *cfg)
        if ((value =
                rspamd_config_get_module_opt (cfg, "fuzzy_check", "rule")) != NULL) {
 
-               cb_id = rspamd_symbols_cache_add_symbol_callback (cfg->cache,
-                                       1.0, fuzzy_symbol_callback, NULL);
+               cb_id = rspamd_symbols_cache_add_symbol (cfg->cache,
+                                       "FUZZY_CALLBACK", 0, fuzzy_symbol_callback, NULL,
+                                       SYMBOL_TYPE_CALLBACK|SYMBOL_TYPE_FINE,
+                                       -1);
 
                LL_FOREACH (value, cur) {
                        fuzzy_parse_rule (cfg, cur, cb_id);
index ed677ce98350c9ca8274fdd8f65ccd0d517574b0..489a6436474c741cc4eec1535fab05a5f829c3f7 100644 (file)
@@ -146,11 +146,12 @@ regexp_module_config (struct rspamd_config *cfg)
                                res = FALSE;
                        }
                        else {
-                               rspamd_symbols_cache_add_symbol_normal (cfg->cache,
+                               rspamd_symbols_cache_add_symbol (cfg->cache,
                                                cur_item->symbol,
-                                               1,
+                                               0,
                                                process_regexp_item,
-                                               cur_item);
+                                               cur_item,
+                                               SYMBOL_TYPE_NORMAL, -1);
                        }
                }
                else if (value->type == UCL_USERDATA) {
@@ -158,11 +159,12 @@ regexp_module_config (struct rspamd_config *cfg)
                                        sizeof (struct regexp_module_item));
                        cur_item->symbol = ucl_object_key (value);
                        cur_item->lua_function = ucl_object_toclosure (value);
-                       rspamd_symbols_cache_add_symbol_normal (cfg->cache,
+                       rspamd_symbols_cache_add_symbol (cfg->cache,
                                cur_item->symbol,
-                               1,
+                               0,
                                process_regexp_item,
-                               cur_item);
+                               cur_item,
+                               SYMBOL_TYPE_NORMAL, -1);
                }
                else {
                        msg_warn ("unknown type of attribute %s for regexp module",
index caff118e406b3c85af9d2487bcc31a0d7e7bd3ee..51673bcbabcde7ab30328721f65da9a55895f4d9 100644 (file)
@@ -167,17 +167,27 @@ spf_module_config (struct rspamd_config *cfg)
                }
        }
 
-       cb_id = rspamd_symbols_cache_add_symbol_normal (cfg->cache,
+       cb_id = rspamd_symbols_cache_add_symbol (cfg->cache,
                spf_module_ctx->symbol_fail,
-               1,
+               0,
                spf_symbol_callback,
-               NULL);
-       rspamd_symbols_cache_add_symbol_virtual (cfg->cache,
-                       spf_module_ctx->symbol_softfail, 1, cb_id);
-       rspamd_symbols_cache_add_symbol_virtual (cfg->cache,
-                       spf_module_ctx->symbol_neutral, 1, cb_id);
-       rspamd_symbols_cache_add_symbol_virtual (cfg->cache,
-                       spf_module_ctx->symbol_allow, 1, cb_id);
+               NULL,
+               SYMBOL_TYPE_NORMAL|SYMBOL_TYPE_FINE, -1);
+       rspamd_symbols_cache_add_symbol (cfg->cache,
+                       spf_module_ctx->symbol_softfail, 0,
+                       NULL, NULL,
+                       SYMBOL_TYPE_VIRTUAL,
+                       cb_id);
+       rspamd_symbols_cache_add_symbol (cfg->cache,
+                       spf_module_ctx->symbol_neutral, 0,
+                       NULL, NULL,
+                       SYMBOL_TYPE_VIRTUAL,
+                       cb_id);
+       rspamd_symbols_cache_add_symbol (cfg->cache,
+                       spf_module_ctx->symbol_allow, 0,
+                       NULL, NULL,
+                       SYMBOL_TYPE_VIRTUAL,
+                       cb_id);
 
        spf_module_ctx->spf_hash = rspamd_lru_hash_new (
                        cache_size,
index 997115d6d9ad34dd294c09c3f3985ecd88c9d4af..5a4b0a86d6511d2c65826e641e6c1a2948e9c55f 100644 (file)
@@ -315,21 +315,24 @@ register_bit_symbols (struct rspamd_config *cfg, struct suffix_item *suffix,
 
                while (g_hash_table_iter_next (&it, &k, &v)) {
                        bit = v;
-                       rspamd_symbols_cache_add_symbol_virtual (cfg->cache, bit->symbol,
-                                       1, parent_id);
+                       rspamd_symbols_cache_add_symbol (cfg->cache, bit->symbol,
+                                       0, NULL, NULL,
+                                       SYMBOL_TYPE_VIRTUAL, parent_id);
                        msg_debug ("bit: %d", bit->bit);
                }
        }
        else if (suffix->bits != NULL) {
                for (i = 0; i < suffix->bits->len; i++) {
                        bit = &g_array_index (suffix->bits, struct surbl_bit_item, i);
-                       rspamd_symbols_cache_add_symbol_virtual (cfg->cache, bit->symbol,
-                                       1, parent_id);
+                       rspamd_symbols_cache_add_symbol (cfg->cache, bit->symbol,
+                                       0, NULL, NULL,
+                                       SYMBOL_TYPE_VIRTUAL, parent_id);
                }
        }
        else {
-               rspamd_symbols_cache_add_symbol_virtual (cfg->cache, suffix->symbol,
-                               1, parent_id);
+               rspamd_symbols_cache_add_symbol (cfg->cache, suffix->symbol,
+                               0, NULL, NULL,
+                               SYMBOL_TYPE_VIRTUAL, parent_id);
        }
 }
 
@@ -371,7 +374,7 @@ surbl_module_config (struct rspamd_config *cfg)
                surbl_module_ctx->redirector_symbol = ucl_obj_tostring (value);
                rspamd_symbols_cache_add_symbol (cfg->cache,
                        surbl_module_ctx->redirector_symbol,
-                       1.0, 0, NULL, NULL, SYMBOL_TYPE_COMPOSITE, -1);
+                       0, NULL, NULL, SYMBOL_TYPE_COMPOSITE, -1);
        }
        else {
                surbl_module_ctx->redirector_symbol = NULL;
@@ -486,10 +489,13 @@ surbl_module_config (struct rspamd_config *cfg)
                                }
                        }
 
-                       cb_id = rspamd_symbols_cache_add_symbol_callback (cfg->cache,
-                                                       1,
-                                                       surbl_test_url,
-                                                       new_suffix);
+                       cb_id = rspamd_symbols_cache_add_symbol (cfg->cache,
+                                       "SURBL_CALLBACK",
+                                       0,
+                                       surbl_test_url,
+                                       new_suffix,
+                                       SYMBOL_TYPE_CALLBACK,
+                                       -1);
                        new_suffix->callback_id = cb_id;
                        has_subsymbols = FALSE;
 
@@ -572,9 +578,11 @@ surbl_module_config (struct rspamd_config *cfg)
 
                        if (!has_subsymbols) {
                                /* Register just a symbol itself */
-                               rspamd_symbols_cache_add_symbol_virtual (cfg->cache,
+                               rspamd_symbols_cache_add_symbol (cfg->cache,
                                                new_suffix->symbol,
-                                               1,
+                                               0,
+                                               NULL, NULL,
+                                               SYMBOL_TYPE_VIRTUAL,
                                                cb_id);
                        }
                        surbl_module_ctx->suffixes = g_list_prepend (