]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Lua_trie: Add support of flags for trie creation
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 4 Sep 2019 16:48:49 +0000 (17:48 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 4 Sep 2019 16:48:49 +0000 (17:48 +0100)
src/libutil/multipattern.h
src/lua/lua_trie.c

index 959b13455bcfc15471879a966e4e2e8eec173aa0..1eac4cf9aadd8eb4217792773cb534f72b82c1f9 100644 (file)
@@ -36,7 +36,7 @@ enum rspamd_multipattern_flags {
        RSPAMD_MULTIPATTERN_UTF8 = (1 << 1),
        RSPAMD_MULTIPATTERN_TLD = (1 << 2),
        /* Not supported by acism */
-                       RSPAMD_MULTIPATTERN_GLOB = (1 << 3),
+       RSPAMD_MULTIPATTERN_GLOB = (1 << 3),
        RSPAMD_MULTIPATTERN_RE = (1 << 4),
 };
 
index bc90fef27022a424bdf3a04755175756de9d2209..456610b1f7d588bd8a0fc3fc148d3a4341ba3787 100644 (file)
@@ -81,7 +81,7 @@ lua_trie_destroy (lua_State *L)
 }
 
 /***
- * function trie.create(patterns)
+ * function trie.create(patterns, [flags])
  * Creates new trie data structure
  * @param {table} array of string patterns
  * @return {trie} new trie object
@@ -93,9 +93,12 @@ lua_trie_create (lua_State *L)
        gint npat = 0, flags = RSPAMD_MULTIPATTERN_ICASE|RSPAMD_MULTIPATTERN_GLOB;
        GError *err = NULL;
 
+       if (lua_isnumber (L, 2)) {
+               flags = lua_tointeger (L, 2);
+       }
+
        if (!lua_istable (L, 1)) {
-               msg_err ("lua trie expects array of patterns for now");
-               lua_pushnil (L);
+               return luaL_error (L, "lua trie expects array of patterns for now");
        }
        else {
                lua_pushvalue (L, 1);
@@ -348,6 +351,24 @@ static gint
 lua_load_trie (lua_State *L)
 {
        lua_newtable (L);
+
+       /* Flags */
+       lua_pushstring (L, "flags");
+       lua_newtable (L);
+
+       lua_pushinteger (L, RSPAMD_MULTIPATTERN_GLOB);
+       lua_setfield (L, -2, "glob");
+       lua_pushinteger (L, RSPAMD_MULTIPATTERN_RE);
+       lua_setfield (L, -2, "re");
+       lua_pushinteger (L, RSPAMD_MULTIPATTERN_ICASE);
+       lua_setfield (L, -2, "icase");
+       lua_pushinteger (L, RSPAMD_MULTIPATTERN_UTF8);
+       lua_setfield (L, -2, "utf8");
+       lua_pushinteger (L, RSPAMD_MULTIPATTERN_TLD);
+       lua_setfield (L, -2, "tld");
+       lua_settable (L, -3);
+
+       /* Main content */
        luaL_register (L, NULL, trielib_f);
 
        return 1;