Ver código fonte

[Feature] Allow to have different flags for different patterns

tags/1.2.4
Vsevolod Stakhov 8 anos atrás
pai
commit
4d1669e4b4
4 arquivos alterados com 13 adições e 11 exclusões
  1. 4
    2
      src/libserver/url.c
  2. 4
    4
      src/libutil/multipattern.c
  3. 1
    1
      src/libutil/multipattern.h
  4. 4
    4
      src/lua/lua_trie.c

+ 4
- 2
src/libserver/url.c Ver arquivo

@@ -392,7 +392,8 @@ rspamd_url_parse_tld_file (const gchar *fname,
#endif

m.flags = flags;
rspamd_multipattern_add_pattern (url_scanner->search_trie, p);
rspamd_multipattern_add_pattern (url_scanner->search_trie, p,
RSPAMD_MULTIPATTERN_TLD | RSPAMD_MULTIPATTERN_ICASE);
m.pattern = rspamd_multipattern_get_pattern (url_scanner->search_trie,
rspamd_multipattern_get_npatterns (url_scanner->search_trie) - 1);
m.patlen = strlen (m.pattern);
@@ -412,7 +413,8 @@ rspamd_url_add_static_matchers (struct url_match_scanner *sc)

for (i = 0; i < n; i++) {
rspamd_multipattern_add_pattern (url_scanner->search_trie,
static_matchers[i].pattern);
static_matchers[i].pattern,
RSPAMD_MULTIPATTERN_ICASE);
}
}


+ 4
- 4
src/libutil/multipattern.c Ver arquivo

@@ -384,7 +384,7 @@ rspamd_multipattern_create_sized (guint npatterns,

void
rspamd_multipattern_add_pattern (struct rspamd_multipattern *mp,
const gchar *pattern)
const gchar *pattern, gint flags)
{
g_assert (pattern != NULL);
g_assert (mp != NULL);
@@ -402,14 +402,14 @@ rspamd_multipattern_add_pattern (struct rspamd_multipattern *mp,
}

g_array_append_val (mp->hs_flags, fl);
np = rspamd_multipattern_pattern_filter (pattern, mp->flags);
np = rspamd_multipattern_pattern_filter (pattern, flags);
g_array_append_val (mp->hs_pats, np);
fl = mp->cnt;
g_array_append_val (mp->hs_ids, fl);
#else
ac_trie_pat_t pat;

pat.ptr = rspamd_multipattern_pattern_filter (pattern, mp->flags);
pat.ptr = rspamd_multipattern_pattern_filter (pattern, flags);
pat.len = strlen (pat.ptr);

g_array_append_val (mp->pats, pat);
@@ -431,7 +431,7 @@ rspamd_multipattern_create_full (const gchar **patterns,
mp = rspamd_multipattern_create_sized (npatterns, flags);

for (i = 0; i < npatterns; i++) {
rspamd_multipattern_add_pattern (mp, patterns[i]);
rspamd_multipattern_add_pattern (mp, patterns[i], flags);
}

return mp;

+ 1
- 1
src/libutil/multipattern.h Ver arquivo

@@ -91,7 +91,7 @@ struct rspamd_multipattern *rspamd_multipattern_create_full (
* @param pattern
*/
void rspamd_multipattern_add_pattern (struct rspamd_multipattern *mp,
const gchar *pattern);
const gchar *pattern, gint flags);

/**
* Compiles multipattern structure

+ 4
- 4
src/lua/lua_trie.c Ver arquivo

@@ -88,7 +88,7 @@ static gint
lua_trie_create (lua_State *L)
{
struct rspamd_multipattern *trie, **ptrie;
gint npat = 0;
gint npat = 0, flags = RSPAMD_MULTIPATTERN_ICASE|RSPAMD_MULTIPATTERN_GLOB;
GError *err = NULL;

if (!lua_istable (L, 1)) {
@@ -107,13 +107,13 @@ lua_trie_create (lua_State *L)
lua_pop (L, 1);
}

trie = rspamd_multipattern_create_sized (npat,
RSPAMD_MULTIPATTERN_ICASE|RSPAMD_MULTIPATTERN_GLOB);
trie = rspamd_multipattern_create_sized (npat, flags);
lua_pushnil (L);

while (lua_next (L, -2) != 0) {
if (lua_isstring (L, -1)) {
rspamd_multipattern_add_pattern (trie, lua_tostring (L, -1));
rspamd_multipattern_add_pattern (trie, lua_tostring (L, -1),
flags);
}

lua_pop (L, 1);

Carregando…
Cancelar
Salvar