]> source.dussan.org Git - rspamd.git/commitdiff
Store fuzzy backend id based on path to file
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 16 Dec 2015 15:03:21 +0000 (15:03 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 16 Dec 2015 15:03:21 +0000 (15:03 +0000)
src/libserver/fuzzy_backend.c
src/libserver/fuzzy_backend.h

index 4a59e367c07e1a8c27fc14250bfabfbe1c44868d..d3a3d947bf9d22499cb9306a237bac7a9f9f0c9c 100644 (file)
@@ -32,6 +32,7 @@
 struct rspamd_fuzzy_backend {
        sqlite3 *db;
        char *path;
+       gchar id[MEMPOOL_UID_LEN];
        gsize count;
        gsize expired;
        rspamd_mempool_t *pool;
@@ -388,6 +389,10 @@ static struct rspamd_fuzzy_backend *
 rspamd_fuzzy_backend_open_db (const gchar *path, GError **err)
 {
        struct rspamd_fuzzy_backend *bk;
+       rspamd_cryptobox_hash_state_t st;
+       guchar hash_out[rspamd_cryptobox_HASHBYTES];
+
+       g_assert (path != NULL);
 
        bk = g_slice_alloc (sizeof (*bk));
        bk->path = g_strdup (path);
@@ -408,6 +413,13 @@ rspamd_fuzzy_backend_open_db (const gchar *path, GError **err)
                return NULL;
        }
 
+       /* Set id for the backend */
+       rspamd_cryptobox_hash_init (&st, NULL, 0);
+       rspamd_cryptobox_hash_update (&st, path, strlen (path));
+       rspamd_cryptobox_hash_final (&st, hash_out);
+       rspamd_snprintf (bk->id, sizeof (bk->id), "%xs", hash_out);
+       memcpy (bk->pool->tag.uid, bk->id, sizeof (bk->pool->tag.uid));
+
        return bk;
 }
 
@@ -938,3 +950,9 @@ rspamd_fuzzy_backend_expired (struct rspamd_fuzzy_backend *backend)
 {
        return backend != NULL ? backend->expired : 0;
 }
+
+const gchar *
+rspamd_fuzzy_backend_id (struct rspamd_fuzzy_backend *backend)
+{
+       return backend != NULL ? backend->id : 0;
+}
index 4439d7afa62b7f35f48038b0e31dfd8e3406ed3a..2e177e7af968b51b9f2e1ee6b1a82998a0c5295a 100644 (file)
@@ -98,4 +98,6 @@ void rspamd_fuzzy_backend_close (struct rspamd_fuzzy_backend *backend);
 gsize rspamd_fuzzy_backend_count (struct rspamd_fuzzy_backend *backend);
 gsize rspamd_fuzzy_backend_expired (struct rspamd_fuzzy_backend *backend);
 
+const gchar * rspamd_fuzzy_backend_id (struct rspamd_fuzzy_backend *backend);
+
 #endif /* FUZZY_BACKEND_H_ */