]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Store composite expression in composite structure
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 20 Dec 2017 20:23:29 +0000 (20:23 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 20 Dec 2017 20:23:29 +0000 (20:23 +0000)
src/libserver/cfg_rcl.c
src/libserver/composites.h
src/lua/lua_cfg_file.c
src/lua/lua_config.c

index 62525c3eb6b45e4fe568c0d835f7a7328b52ff0e..a41b391a03d668e1a3f56f3c69519f7268b12819 100644 (file)
@@ -1437,6 +1437,7 @@ rspamd_rcl_composite_handler (rspamd_mempool_t *pool,
                rspamd_mempool_alloc0 (cfg->cfg_pool, sizeof (struct rspamd_composite));
        composite->expr = expr;
        composite->id = g_hash_table_size (cfg->composite_symbols);
+       composite->str_expr = composite_expression;
 
        val = ucl_object_lookup (obj, "score");
        if (val != NULL && ucl_object_todouble_safe (val, &score)) {
index 9ae3fa5a24aacc9b4bb9d5507bb1bbae79628380..6baa13c14ad98a3067bbd8e2e681a056e662a7b4 100644 (file)
@@ -37,6 +37,7 @@ enum rspamd_composite_policy {
  * Composite structure
  */
 struct rspamd_composite {
+       const gchar *str_expr;
        struct rspamd_expression *expr;
        gint id;
        enum rspamd_composite_policy policy;
index daa8223ff1be4dceffd2d70c0ebfff5e83d1a235..efd8c8820f5d3e2c71648747a94bbba27b3b57d5 100644 (file)
@@ -95,12 +95,9 @@ void
 rspamd_lua_post_load_config (struct rspamd_config *cfg)
 {
        lua_State *L = cfg->lua_state;
-       const gchar *name, *val;
-       gchar *sym;
-       struct rspamd_expression *expr, *old_expr;
+       const gchar *name;
        ucl_object_t *obj;
        gsize keylen;
-       GError *err = NULL;
 
        /* First check all module options that may be overridden in 'config' global */
        lua_getglobal (L, "config");
@@ -139,41 +136,5 @@ rspamd_lua_post_load_config (struct rspamd_config *cfg)
                }
        }
 
-       /* Check composites */
-       lua_getglobal (L, "composites");
-
-       if (lua_istable (L, -1)) {
-               /* Iterate */
-               for (lua_pushnil (L); lua_next (L, -2); lua_pop (L, 1)) {
-                       /* 'key' is at index -2 and 'value' is at index -1 */
-                       /* Key must be a string and value must be a table */
-                       name = luaL_checkstring (L, -2);
-                       if (name != NULL && lua_isstring (L, -1)) {
-                               val = lua_tostring (L, -1);
-                               sym = rspamd_mempool_strdup (cfg->cfg_pool, name);
-                               if (!rspamd_parse_expression (val, 0, &composite_expr_subr, NULL,
-                                                       cfg->cfg_pool, &err, &expr)) {
-                                       msg_err_config("cannot parse composite expression '%s': %s", val,
-                                                       err->message);
-                                       g_error_free (err);
-                                       err = NULL;
-                                       continue;
-                               }
-                               /* Now check hash table for this composite */
-                               if ((old_expr =
-                                       g_hash_table_lookup (cfg->composite_symbols,
-                                       name)) != NULL) {
-                                       msg_info_config("replacing composite symbol %s", name);
-                                       g_hash_table_replace (cfg->composite_symbols, sym, expr);
-                               }
-                               else {
-                                       g_hash_table_insert (cfg->composite_symbols, sym, expr);
-                                       rspamd_symbols_cache_add_symbol (cfg->cache, sym,
-                                                       0, NULL, NULL, SYMBOL_TYPE_COMPOSITE, -1);
-                               }
-                       }
-               }
-       }
-
        lua_settop (L, 0);
 }
index c667e1510b99ab903568f2d86e4a020daa4ba2cb..4679b4ede91167b1ab1afcda1522490ea38ab238 100644 (file)
@@ -1966,6 +1966,8 @@ lua_config_add_composite (lua_State * L)
                                                sizeof (struct rspamd_composite));
                                composite->expr = expr;
                                composite->id = g_hash_table_size (cfg->composite_symbols);
+                               composite->str_expr = rspamd_mempool_strdup (cfg->cfg_pool,
+                                               expr_str);
                                g_hash_table_insert (cfg->composite_symbols,
                                                (gpointer)name,
                                                composite);