]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Link map and lua_map object
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 26 Apr 2018 13:12:52 +0000 (14:12 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 26 Apr 2018 13:12:52 +0000 (14:12 +0100)
src/libutil/map_private.h
src/lua/lua_common.h
src/lua/lua_config.c
src/lua/lua_map.c
src/lua/lua_map.h

index fb1e609bd2344886308d1ca4b848bf3728922e49..eea616591f210d69cb9c61b43bc58638b82746f6 100644 (file)
@@ -117,6 +117,7 @@ struct rspamd_map {
        rspamd_map_dtor dtor;
        gpointer dtor_data;
        rspamd_map_traverse_function traverse_function;
+       gpointer lua_map;
        /* Should we check HTTP or just load cached data */
        struct timeval tv;
        gdouble poll_timeout;
index b07bf072918d40518de42939a3ab61f481c416b9..55070acf23501d98e0a935d8816c320145a6004a 100644 (file)
@@ -248,7 +248,6 @@ void rspamd_lua_add_preload (lua_State *L, const gchar *name, lua_CFunction func
 
 void luaopen_task (lua_State *L);
 void luaopen_config (lua_State *L);
-void luaopen_metric (lua_State *L);
 void luaopen_map (lua_State *L);
 void luaopen_trie (lua_State * L);
 void luaopen_textpart (lua_State *L);
index 9a2cab5365de7bc928a0c2b5a160b3e8f681f940..a42f33b37ace7cda065a3a53844718b2cafa0177 100644 (file)
@@ -177,6 +177,12 @@ end
 
 rspamd_config:add_map('http://example.com/map', "settings map", process_map)
  */
+/***
+* @method rspamd_config:get_maps()
+* Get all maps defined as an array of rspamd{map} objects
+ *
+* @return {table|rspamd{map}}
+*/
 /***
  * @method rspamd_config:get_classifier(name)
  * Returns classifier config.
@@ -686,6 +692,7 @@ static const struct luaL_reg configlib_m[] = {
        LUA_INTERFACE_DEF (config, add_hash_map),
        LUA_INTERFACE_DEF (config, add_kv_map),
        LUA_INTERFACE_DEF (config, add_map),
+       LUA_INTERFACE_DEF (config, get_maps),
        LUA_INTERFACE_DEF (config, get_classifier),
        LUA_INTERFACE_DEF (config, register_symbol),
        LUA_INTERFACE_DEF (config, register_symbols),
index 8ac41bef4cc6311dd65c3b504bfff8e3e9b69f40..27e79ac2b1ffe3e3ca99b4dd4f9960a40e289656 100644 (file)
@@ -138,6 +138,7 @@ lua_config_add_radix_map (lua_State *L)
                }
 
                map->map = m;
+               m->lua_map = map;
                pmap = lua_newuserdata (L, sizeof (void *));
                *pmap = map;
                rspamd_lua_setclass (L, "rspamd{map}", -1);
@@ -195,6 +196,7 @@ lua_config_radix_from_config (lua_State *L)
                        ucl_object_unref (fake_obj);
                        pmap = lua_newuserdata (L, sizeof (void *));
                        map->map = m;
+                       m->lua_map = map;
                        *pmap = map;
                        rspamd_lua_setclass (L, "rspamd{map}", -1);
                }
@@ -253,6 +255,7 @@ lua_config_radix_from_ucl (lua_State *L)
                ucl_object_unref (fake_obj);
                pmap = lua_newuserdata (L, sizeof (void *));
                map->map = m;
+               m->lua_map = map;
                *pmap = map;
                rspamd_lua_setclass (L, "rspamd{map}", -1);
 
@@ -289,6 +292,7 @@ lua_config_add_hash_map (lua_State *L)
                }
 
                map->map = m;
+               m->lua_map = map;
                pmap = lua_newuserdata (L, sizeof (void *));
                *pmap = map;
                rspamd_lua_setclass (L, "rspamd{map}", -1);
@@ -327,6 +331,7 @@ lua_config_add_kv_map (lua_State *L)
                }
 
                map->map = m;
+               m->lua_map = map;
                pmap = lua_newuserdata (L, sizeof (void *));
                *pmap = map;
                rspamd_lua_setclass (L, "rspamd{map}", -1);
@@ -472,6 +477,7 @@ lua_config_add_map (lua_State *L)
 
                                return 1;
                        }
+                       m->lua_map = map;
                }
                else if (strcmp (type, "set") == 0) {
                        map = rspamd_mempool_alloc0 (cfg->cfg_pool, sizeof (*map));
@@ -487,6 +493,7 @@ lua_config_add_map (lua_State *L)
 
                                return 1;
                        }
+                       m->lua_map = map;
                }
                else if (strcmp (type, "map") == 0 || strcmp (type, "hash") == 0) {
                        map = rspamd_mempool_alloc0 (cfg->cfg_pool, sizeof (*map));
@@ -502,6 +509,7 @@ lua_config_add_map (lua_State *L)
 
                                return 1;
                        }
+                       m->lua_map = map;
                }
                else if (strcmp (type, "radix") == 0) {
                        map = rspamd_mempool_alloc0 (cfg->cfg_pool, sizeof (*map));
@@ -517,6 +525,7 @@ lua_config_add_map (lua_State *L)
 
                                return 1;
                        }
+                       m->lua_map = map;
                }
                else if (strcmp (type, "regexp") == 0) {
                        map = rspamd_mempool_alloc0 (cfg->cfg_pool, sizeof (*map));
@@ -532,6 +541,7 @@ lua_config_add_map (lua_State *L)
 
                                return 1;
                        }
+                       m->lua_map = map;
                }
                else if (strcmp (type, "regexp_multi") == 0) {
                        map = rspamd_mempool_alloc0 (cfg->cfg_pool, sizeof (*map));
@@ -547,6 +557,7 @@ lua_config_add_map (lua_State *L)
 
                                return 1;
                        }
+                       m->lua_map = map;
                }
                else if (strcmp (type, "glob") == 0) {
                        map = rspamd_mempool_alloc0 (cfg->cfg_pool, sizeof (*map));
@@ -562,6 +573,7 @@ lua_config_add_map (lua_State *L)
 
                                return 1;
                        }
+                       m->lua_map = map;
                }
                else {
                        ret = luaL_error (L, "invalid arguments: unknown type '%s'", type);
index bee698e081e8c971c7600de45efd8b7dc5603515..a44bd12e9fc8fa58906d697bd5fae2cc7bca120b 100644 (file)
@@ -25,5 +25,6 @@ LUA_PUBLIC_FUNCTION_DEF (config, add_map);
 LUA_PUBLIC_FUNCTION_DEF (config, add_hash_map);
 LUA_PUBLIC_FUNCTION_DEF (config, add_kv_map);
 LUA_PUBLIC_FUNCTION_DEF (config, add_map);
+LUA_PUBLIC_FUNCTION_DEF (config, get_maps);
 
 #endif /* SRC_LUA_LUA_MAP_H_ */