Browse Source

[Feature] Allow to disable symbols from the metric config

tags/2.2
Vsevolod Stakhov 4 years ago
parent
commit
66005f3fa3

+ 2
- 1
src/libserver/cfg_file.h View File

@@ -127,9 +127,10 @@ struct rspamd_symbols_group {

enum rspamd_symbol_flags {
RSPAMD_SYMBOL_FLAG_NORMAL = 0,
RSPAMD_SYMBOL_FLAG_IGNORE = (1 << 1),
RSPAMD_SYMBOL_FLAG_IGNORE_METRIC = (1 << 1),
RSPAMD_SYMBOL_FLAG_ONEPARAM = (1 << 2),
RSPAMD_SYMBOL_FLAG_UNGROUPPED = (1 << 3),
RSPAMD_SYMBOL_FLAG_DISABLED = (1 << 4),
};

/**

+ 17
- 1
src/libserver/cfg_rcl.c View File

@@ -520,7 +520,23 @@ rspamd_rcl_symbol_handler (rspamd_mempool_t *pool, const ucl_object_t *obj,
}

if (ucl_object_toboolean (elt)) {
flags |= RSPAMD_SYMBOL_FLAG_IGNORE;
flags |= RSPAMD_SYMBOL_FLAG_IGNORE_METRIC;
}
}

if ((elt = ucl_object_lookup (obj, "enabled")) != NULL) {
if (ucl_object_type (elt) != UCL_BOOLEAN) {
g_set_error (err,
CFG_RCL_ERROR,
EINVAL,
"enabled attribute is not boolean for symbol: '%s'",
key);

return FALSE;
}

if (ucl_object_toboolean (elt)) {
flags |= RSPAMD_SYMBOL_FLAG_DISABLED;
}
}


+ 9
- 1
src/libserver/rspamd_symcache.c View File

@@ -1495,7 +1495,8 @@ rspamd_symcache_validate (struct rspamd_symcache *cache,
ignore_symbol = FALSE;
sym_def = v;

if (sym_def && (sym_def->flags & RSPAMD_SYMBOL_FLAG_IGNORE)) {
if (sym_def && (sym_def->flags &
(RSPAMD_SYMBOL_FLAG_IGNORE_METRIC|RSPAMD_SYMBOL_FLAG_DISABLED))) {
ignore_symbol = TRUE;
}

@@ -1512,6 +1513,13 @@ rspamd_symcache_validate (struct rspamd_symcache *cache,
}
}
}
else if (sym_def->flags & RSPAMD_SYMBOL_FLAG_DISABLED) {
item = g_hash_table_lookup (cache->items_by_symbol, k);

if (item) {
item->enabled = FALSE;
}
}
}

return ret;

+ 7
- 2
src/lua/lua_config.c View File

@@ -2318,7 +2318,7 @@ lua_config_set_metric_symbol (lua_State * L)
nshots = 1;
}
if (strstr (flags_str, "ignore") != NULL) {
flags |= RSPAMD_SYMBOL_FLAG_IGNORE;
flags |= RSPAMD_SYMBOL_FLAG_IGNORE_METRIC;
}
if (strstr (flags_str, "one_param") != NULL) {
flags |= RSPAMD_SYMBOL_FLAG_ONEPARAM;
@@ -3376,7 +3376,7 @@ lua_metric_symbol_inserter (gpointer k, gpointer v, gpointer ud)
lua_pushstring (L, "flags");
lua_createtable (L, 0, 3);

if (s->flags & RSPAMD_SYMBOL_FLAG_IGNORE) {
if (s->flags & RSPAMD_SYMBOL_FLAG_IGNORE_METRIC) {
lua_pushstring (L, "ignore");
lua_pushboolean (L, true);
lua_settable (L, -3);
@@ -3391,6 +3391,11 @@ lua_metric_symbol_inserter (gpointer k, gpointer v, gpointer ud)
lua_pushboolean (L, true);
lua_settable (L, -3);
}
if (s->flags & RSPAMD_SYMBOL_FLAG_DISABLED) {
lua_pushstring (L, "disabled");
lua_pushboolean (L, true);
lua_settable (L, -3);
}

if (s->cache_item) {
guint sflags = rspamd_symcache_get_symbol_flags (cbd->cfg->cache, sym);

+ 2
- 2
src/plugins/dkim_check.c View File

@@ -538,7 +538,7 @@ dkim_module_config (struct rspamd_config *cfg)
0.0,
"DKIM check callback",
"policies",
RSPAMD_SYMBOL_FLAG_IGNORE,
RSPAMD_SYMBOL_FLAG_IGNORE_METRIC,
1,
1);
rspamd_config_add_symbol_group (cfg, "DKIM_CHECK", "dkim");
@@ -585,7 +585,7 @@ dkim_module_config (struct rspamd_config *cfg)
0.0,
"DKIM trace symbol",
"policies",
RSPAMD_SYMBOL_FLAG_IGNORE,
RSPAMD_SYMBOL_FLAG_IGNORE_METRIC,
1,
1);
rspamd_config_add_symbol_group (cfg, "DKIM_TRACE", "dkim");

+ 1
- 1
src/plugins/fuzzy_check.c View File

@@ -1060,7 +1060,7 @@ fuzzy_check_module_config (struct rspamd_config *cfg)
0.0,
"Fuzzy check callback",
"fuzzy",
RSPAMD_SYMBOL_FLAG_IGNORE,
RSPAMD_SYMBOL_FLAG_IGNORE_METRIC,
1,
1);


+ 1
- 1
src/plugins/spf.c View File

@@ -349,7 +349,7 @@ spf_module_config (struct rspamd_config *cfg)
0.0,
"SPF check callback",
"policies",
RSPAMD_SYMBOL_FLAG_IGNORE,
RSPAMD_SYMBOL_FLAG_IGNORE_METRIC,
1,
1);
rspamd_config_add_symbol_group (cfg, "SPF_CHECK", "spf");

Loading…
Cancel
Save