Sfoglia il codice sorgente

[Minor] Store composite expression in composite structure

tags/1.7.0
Vsevolod Stakhov 6 anni fa
parent
commit
4b7520470b
4 ha cambiato i file con 5 aggiunte e 40 eliminazioni
  1. 1
    0
      src/libserver/cfg_rcl.c
  2. 1
    0
      src/libserver/composites.h
  3. 1
    40
      src/lua/lua_cfg_file.c
  4. 2
    0
      src/lua/lua_config.c

+ 1
- 0
src/libserver/cfg_rcl.c Vedi 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)) {

+ 1
- 0
src/libserver/composites.h Vedi 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;

+ 1
- 40
src/lua/lua_cfg_file.c Vedi 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);
}

+ 2
- 0
src/lua/lua_config.c Vedi 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);

Loading…
Annulla
Salva