]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Feature] Allow to have different flags for different patterns
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 14 Apr 2016 14:17:24 +0000 (15:17 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 14 Apr 2016 14:17:24 +0000 (15:17 +0100)
src/libserver/url.c
src/libutil/multipattern.c
src/libutil/multipattern.h
src/lua/lua_trie.c

index 95ab8f03975f413958d5539c249cefdd41eed868..95542c1f0bab8d7cf3824a74a0cc1fdd42f3d181 100644 (file)
@@ -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);
        }
 }
 
index d5e038654c8ed3c86a8a9806ec8897b87a99e531..f6a0170477fa7f78ddced2da9fb173e56e979613 100644 (file)
@@ -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;
index 345bfe33f0f7c8e34435ada9bdfc60a9ce955c80..e956b918253a0faf8105e0282de6c5d02034fa94 100644 (file)
@@ -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
index c02beaf2715e22a9fd7d24139742d84fb49efc8b..5803a1d0bd0019f18a6eb73f002159784eb4046a 100644 (file)
@@ -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);