]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Add methods to get symbols cache checksum
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 28 Dec 2016 11:48:19 +0000 (11:48 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 28 Dec 2016 11:48:19 +0000 (11:48 +0000)
src/libserver/symbols_cache.c
src/libserver/symbols_cache.h
src/lua/lua_config.c

index 7b0ec47d4f29474515211f2c33b54c0830a3b8d9..c37147973b05fe716cb989ea98eea1d70dd5c132 100644 (file)
@@ -2208,3 +2208,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 43398dfe1ed5fa277d93d424180e79c616a43bf1..2d84e8b051684df3943f878ab40b56919737ee7f 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),
@@ -2172,6 +2180,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)
 {