]> source.dussan.org Git - rspamd.git/commitdiff
[Project] Adopt lua maps
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 23 Apr 2018 16:17:49 +0000 (17:17 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 23 Apr 2018 16:17:49 +0000 (17:17 +0100)
src/libserver/cfg_rcl.c
src/libserver/cfg_rcl.h
src/libutil/map_helpers.c
src/libutil/map_helpers.h
src/lua/lua_common.h
src/lua/lua_map.c

index 6019d7c7dd5ead18c31692508e9c1a9fbb7786df..349bc5cf2349cfa7847e7dc45997afc24593e4d8 100644 (file)
@@ -3197,22 +3197,6 @@ rspamd_rcl_parse_struct_ucl (rspamd_mempool_t *pool,
        return TRUE;
 }
 
-gboolean
-rspamd_rcl_parse_struct_iplist (rspamd_mempool_t *pool,
-               const ucl_object_t *obj,
-               gpointer ud,
-               struct rspamd_rcl_section *section,
-               GError **err)
-{
-       struct rspamd_rcl_struct_parser *pd = ud;
-       radix_compressed_t **target;
-
-       target = (radix_compressed_t **)(((gchar *)pd->user_struct) + pd->offset);
-
-       return rspamd_config_radix_from_ucl (pd->cfg, obj,
-                       ucl_object_key (obj), target, err);
-}
-
 
 gboolean
 rspamd_rcl_parse_struct_boolean (rspamd_mempool_t *pool,
index 51b348e9cdfd61e6a1cfacd3b819d006b60eabf2..c1d958efc94d7bbe830b1b1be55b0cf386207d5e 100644 (file)
@@ -347,20 +347,6 @@ gboolean rspamd_rcl_parse_struct_ucl (rspamd_mempool_t *pool,
        struct rspamd_rcl_section *section,
        GError **err);
 
-/**
- * Parse IP list or map, accepts radix_tree_t ** as an argument
- * @param cfg config pointer
- * @param obj object to parse
- * @param ud struct_parser structure (flags mean the exact structure used)
- * @param section the current section
- * @param err error pointer
- * @return TRUE if a value has been successfully parsed
- */
-gboolean rspamd_rcl_parse_struct_iplist (rspamd_mempool_t *pool,
-       const ucl_object_t *obj,
-       gpointer ud,
-       struct rspamd_rcl_section *section,
-       GError **err);
 
 /**
  * Utility functions
index 69cb6a4efacaa6488a0d60c20ba0260eb31dd4f8..b22b430c6955fd0a48039dc51729de089f9eca72 100644 (file)
@@ -1020,7 +1020,7 @@ rspamd_match_hs_multiple_handler (unsigned int id, unsigned long long from,
 }
 #endif
 
-gconstpointer
+GPtrArray*
 rspamd_match_regexp_map_all (struct rspamd_regexp_map_helper *map,
                const gchar *in, gsize len)
 {
index 3d9c40bd1ec49021e68ce3ddf60df9a13d134eed..b6bf81cdcf911252622113e2343d2642a78ac6a0 100644 (file)
@@ -117,7 +117,7 @@ gconstpointer rspamd_match_regexp_map_single (struct rspamd_regexp_map_helper *m
  * @param len
  * @return
  */
-gconstpointer rspamd_match_regexp_map_all (struct rspamd_regexp_map_helper *map,
+GPtrArray* rspamd_match_regexp_map_all (struct rspamd_regexp_map_helper *map,
                const gchar *in, gsize len);
 
 /**
index 310a5504c127209eb23da09f9fb05a70279083b1..b07bf072918d40518de42939a3ab61f481c416b9 100644 (file)
@@ -104,10 +104,10 @@ struct rspamd_lua_map {
        guint flags;
 
        union {
-               struct radix_tree_compressed *radix;
-               GHashTable *hash;
+               struct rspamd_radix_map_helper *radix;
+               struct rspamd_hash_map_helper *hash;
+               struct rspamd_regexp_map_helper *re_map;
                struct lua_map_callback_data *cbdata;
-               struct rspamd_regexp_map *re_map;
        } data;
 };
 
index 7325dbf0ecda48fc96e6a112d1f6170cc474d30b..8ac41bef4cc6311dd65c3b504bfff8e3e9b69f40 100644 (file)
@@ -16,6 +16,7 @@
 
 #include "lua_common.h"
 #include "libutil/map.h"
+#include "libutil/map_helpers.h"
 #include "libutil/map_private.h"
 #include "contrib/libucl/lua_ucl.h"
 
@@ -279,8 +280,8 @@ lua_config_add_hash_map (lua_State *L)
                map->type = RSPAMD_LUA_MAP_SET;
 
                if ((m = rspamd_map_add (cfg, map_line, description,
-                               rspamd_hosts_read,
-                               rspamd_hosts_fin,
+                               rspamd_kv_list_read,
+                               rspamd_kv_list_fin,
                                (void **)&map->data.hash)) == NULL) {
                        msg_warn_config ("invalid set map %s", map_line);
                        lua_pushnil (L);
@@ -478,8 +479,8 @@ lua_config_add_map (lua_State *L)
                        map->type = RSPAMD_LUA_MAP_SET;
 
                        if ((m = rspamd_map_add_from_ucl (cfg, map_obj, description,
-                                       rspamd_hosts_read,
-                                       rspamd_hosts_fin,
+                                       rspamd_kv_list_read,
+                                       rspamd_kv_list_fin,
                                        (void **)&map->data.hash)) == NULL) {
                                lua_pushnil (L);
                                ucl_object_unref (map_obj);
@@ -608,7 +609,7 @@ static gint
 lua_map_get_key (lua_State * L)
 {
        struct rspamd_lua_map *map = lua_check_map (L, 1);
-       radix_compressed_t *radix;
+       struct rspamd_radix_map_helper *radix;
        struct rspamd_lua_ip *addr = NULL;
        const gchar *key, *value = NULL;
        gpointer ud;
@@ -652,11 +653,11 @@ lua_map_get_key (lua_State * L)
                        }
 
                        if (radix) {
-                               guintptr p = 0;
+                               gconstpointer p = NULL;
 
                                if (addr != NULL) {
-                                       if ((p = radix_find_compressed_addr (radix, addr->addr))
-                                                       !=  RADIX_NO_VALUE) {
+                                       if ((p = rspamd_match_radix_map_addr (radix, addr->addr))
+                                                       !=  NULL) {
                                                ret = TRUE;
                                        }
                                        else {
@@ -664,8 +665,8 @@ lua_map_get_key (lua_State * L)
                                        }
                                }
                                else if (key_num != 0) {
-                                       if ((p = radix_find_compressed (radix,
-                                                       (guint8 *)&key_num, sizeof (key_num))) != RADIX_NO_VALUE) {
+                                       if ((p = rspamd_match_radix_map (radix,
+                                                       (guint8 *)&key_num, sizeof (key_num))) != NULL) {
                                                ret = TRUE;
                                        }
                                        else {
@@ -685,7 +686,7 @@ lua_map_get_key (lua_State * L)
                        key = lua_map_process_string_key (L, 2, &len);
 
                        if (key && map->data.hash) {
-                               ret = g_hash_table_lookup (map->data.hash, key) != NULL;
+                               ret = rspamd_match_hash_map (map->data.hash, key) != NULL;
                        }
                }
                else if (map->type == RSPAMD_LUA_MAP_REGEXP) {
@@ -731,7 +732,7 @@ lua_map_get_key (lua_State * L)
                        key = lua_map_process_string_key (L, 2, &len);
 
                        if (key && map->data.hash) {
-                               value = g_hash_table_lookup (map->data.hash, key);
+                               value = rspamd_match_hash_map (map->data.hash, key);
                        }
 
                        if (value) {