]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Add methods to get symbols cache checksum 1328/head
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 28 Dec 2016 11:48:19 +0000 (11:48 +0000)
committerAndrew Lewis <nerf@judo.za.org>
Mon, 9 Jan 2017 12:07:18 +0000 (14:07 +0200)
src/libserver/symbols_cache.c
src/libserver/symbols_cache.h
src/lua/lua_config.c

index e57a45ce6d3f4d5123d3c7d4cce8bb4cb1572362..45aca9d2e6b2106845dad4280a67c7fdd0c997c4 100644 (file)
@@ -2196,3 +2196,11 @@ rspamd_symbols_cache_enable_symbol (struct symbols_cache *cache,
                item->enabled = TRUE;
        }
 }
+
+guint64
+rspamd_symbols_cache_get_cksum (struct symbols_cache *cache)
+{
+       g_assert (cache != NULL);
+
+       return cache->cksum;
+}
index c9877a83015100fd00173a2ff9d7ebc0683b0507..6be4de01c28ca94746fe0e226af50a45fe6dbcea 100644 (file)
@@ -261,4 +261,11 @@ gboolean rspamd_symbols_cache_process_settings (struct rspamd_task *task,
  */
 gboolean rspamd_symbols_cache_is_checked (struct rspamd_task *task,
                struct symbols_cache *cache, const gchar *symbol);
+
+/**
+ * Returns checksum for all cache items
+ * @param cache
+ * @return
+ */
+guint64 rspamd_symbols_cache_get_cksum (struct symbols_cache *cache);
 #endif
index 7c2b8460962541171ca83ce45023ded421525a32..79faeb3226a2590f9626f9d53587a519d9274ba9 100644 (file)
@@ -498,6 +498,13 @@ LUA_FUNCTION_DEF (config, add_periodic);
  */
 LUA_FUNCTION_DEF (config, get_symbols_count);
 
+/***
+ * @method rspamd_config:get_symbols_cksum()
+ * Returns checksum for all symbols in the cache
+ * @return {int64} boxed value of the 64 bit checksum
+ */
+LUA_FUNCTION_DEF (config, get_symbols_cksum);
+
 /***
  * @method rspamd_config:get_symbol_callback(name)
  * Returns callback function for the specified symbol if it is a lua registered callback
@@ -584,6 +591,7 @@ static const struct luaL_reg configlib_m[] = {
        LUA_INTERFACE_DEF (config, add_on_load),
        LUA_INTERFACE_DEF (config, add_periodic),
        LUA_INTERFACE_DEF (config, get_symbols_count),
+       LUA_INTERFACE_DEF (config, get_symbols_cksum),
        LUA_INTERFACE_DEF (config, get_symbol_callback),
        LUA_INTERFACE_DEF (config, set_symbol_callback),
        LUA_INTERFACE_DEF (config, register_finish_script),
@@ -2171,6 +2179,26 @@ lua_config_get_symbols_count (lua_State *L)
        return 1;
 }
 
+static gint
+lua_config_get_symbols_cksum (lua_State *L)
+{
+       struct rspamd_config *cfg = lua_check_config (L, 1);
+       guint64 res = 0, *pres;
+
+       if (cfg != NULL) {
+               res = rspamd_symbols_cache_get_cksum (cfg->cache);
+       }
+       else {
+               return luaL_error (L, "invalid arguments");
+       }
+
+       pres = lua_newuserdata (L, sizeof (res));
+       *pres = res;
+       rspamd_lua_setclass (L, "rspamd{int64}", -1);
+
+       return 1;
+}
+
 static gint
 lua_config_get_symbol_callback (lua_State *L)
 {