]> source.dussan.org Git - rspamd.git/commitdiff
Refactor structures names.
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 23 Jan 2015 16:26:55 +0000 (16:26 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 23 Jan 2015 16:26:55 +0000 (16:26 +0000)
src/libserver/cfg_file.h
src/libstat/CMakeLists.txt
src/libstat/backends/backends.h
src/libstat/backends/mmaped_file.c
src/libstat/classifiers/classifiers.h
src/libstat/stat_api.h
src/libstat/stat_config.c
src/libstat/stat_internal.h
src/main.h

index 23e785443e6eeaae7fcb2db45dbadeb1827ec866..611f1c371de0e8f777b8680af1f6afa874f1c677 100644 (file)
@@ -18,7 +18,7 @@
 
 struct expression;
 struct tokenizer;
-struct classifier;
+struct rspamd_stat_classifier;
 
 enum { VAL_UNDEF=0, VAL_TRUE, VAL_FALSE };
 
index 97725d2f96ccbe3684c0b0baac51581ef4e4a22d..17c55398997da2952546c7f995c6a9e9c5a5bb05 100644 (file)
@@ -1,11 +1,13 @@
 # Librspamdserver
-SET(LIBSTATSRC stat_config.c)
-SET(TOKENIZERSSRC  tokenizers/tokenizers.c
-                               tokenizers/osb.c)
+SET(LIBSTATSRC         stat_config.c
+                                       stat_process.c)
 
-SET(CLASSIFIERSSRC classifiers/bayes.c)
+SET(TOKENIZERSSRC      tokenizers/tokenizers.c
+                                       tokenizers/osb.c)
+
+SET(CLASSIFIERSSRC     classifiers/bayes.c)
                 
-SET(BACKENDSSRC backends/mmaped_file.c)
+SET(BACKENDSSRC        backends/mmaped_file.c)
                                
 ADD_LIBRARY(rspamd-stat ${LINK_TYPE} ${LIBSTATSRC} 
                        ${TOKENIZERSSRC} 
index 37a7560cd61fa82797ba41dac195f1333a4ea9fa..45a8cd31435cc31402fbdb6be730711b50388b4e 100644 (file)
 struct rspamd_classifier_config;
 struct rspamd_statfile_config;
 struct rspamd_config;
+struct rspamd_stat_ctx;
 
 struct rspamd_stat_backend {
        const char *name;
-       gpointer (*init)(struct rspamd_statfile_config *cfg);
+       gpointer (*init)(struct rspamd_stat_ctx *ctx, struct rspamd_config *cfg);
        gpointer ctx;
 };
 
-gpointer rspamd_mmaped_file_init(struct rspamd_config *cfg);
+gpointer rspamd_mmaped_file_init(struct rspamd_stat_ctx *ctx, struct rspamd_config *cfg);
 
 #endif /* BACKENDS_H_ */
index cef17f465ed856db97debf31865a81af48561154..49f4d5ba4e234a49cf1c4ffe6fe03efdb63103d6 100644 (file)
@@ -801,7 +801,7 @@ rspamd_mmaped_file_get_total (rspamd_mmaped_file_t *file)
 }
 
 gpointer
-rspamd_mmaped_file_init (struct rspamd_config *cfg)
+rspamd_mmaped_file_init (struct rspamd_stat_ctx *ctx, struct rspamd_config *cfg)
 {
        rspamd_mmaped_file_ctx *new;
        struct rspamd_classifier_config *clf;
@@ -852,6 +852,8 @@ rspamd_mmaped_file_init (struct rspamd_config *cfg)
                                size = ucl_object_toint (sizeo);
 
                                rspamd_mmaped_file_open (new, filename, size);
+
+                               ctx->statfiles ++;
                        }
 
                        curst = curst->next;
index 4ae1ba23d1351ed0304d0b82b75db86778b8c259..6a77f5aed5016216cf34ed0f81db80a65a24da89 100644 (file)
@@ -17,7 +17,7 @@ struct classifier_ctx {
        struct rspamd_classifier_config *cfg;
 };
 
-struct classifier {
+struct rspamd_stat_classifier {
        char *name;
        struct classifier_ctx * (*init_func)(rspamd_mempool_t *pool,
                struct rspamd_classifier_config *cf);
index 0e2bf86b820c37b2adc4524e0f7cd6a7e2c06ebe..2dbf19372fd73f24d157f320d87710fd6a75b1fd 100644 (file)
@@ -25,6 +25,7 @@
 
 #include "config.h"
 #include "task.h"
+#include <lua.h>
 
 /**
  * @file stat_api.h
@@ -42,7 +43,7 @@ void rspamd_stat_init (struct rspamd_config *cfg);
  * @param task
  * @return TRUE if task has been classified
  */
-gboolean rspamd_stat_classify (struct rspamd_task *task, GError **err);
+gboolean rspamd_stat_classify (struct rspamd_task *task, lua_State *L, GError **err);
 
 
 /**
@@ -51,7 +52,8 @@ gboolean rspamd_stat_classify (struct rspamd_task *task, GError **err);
  * @param spam if TRUE learn spam, otherwise learn ham
  * @return TRUE if task has been learned
  */
-gboolean rspamd_stat_learn (struct rspamd_task *task, gboolean spam, GError **err);
+gboolean rspamd_stat_learn (struct rspamd_task *task, gboolean spam, lua_State *L,
+               GError **err);
 
 
 void rspamd_stat_unload (void);
index a539f3c80412325aae8233def96df34bc69fc215..cd25ad0c51488771d948ad1d9074196708832e09 100644 (file)
 #include "main.h"
 #include "cfg_rcl.h"
 #include "stat_internal.h"
-#include "backends/mmaped_file.h"
 
 static struct rspamd_stat_ctx *stat_ctx = NULL;
 
-static struct classifier classifiers[] = {
+static struct rspamd_stat_classifier stat_classifiers[] = {
        {
                .name = "bayes",
                .init_func = bayes_init,
@@ -41,11 +40,11 @@ static struct classifier classifiers[] = {
        }
 };
 
-static struct tokenizer tokenizers[] = {
-       {"osb-text", osb_tokenize_text, rspamd_tokenizer_get_word},
+static struct rspamd_stat_tokenizer stat_tokenizers[] = {
+       {"osb-text", osb_tokenize_text},
 };
 
-struct rspamd_stat_backend statfile_backends[] = {
+struct rspamd_stat_backend stat_backends[] = {
        {
                .name = RSPAMD_DEFAULT_BACKEND,
                .init = rspamd_mmaped_file_init,
@@ -56,5 +55,77 @@ struct rspamd_stat_backend statfile_backends[] = {
 void
 rspamd_stat_init (struct rspamd_config *cfg)
 {
+       guint i;
 
+       if (stat_ctx == NULL) {
+               stat_ctx = g_slice_alloc0 (sizeof (*stat_ctx));
+       }
+
+       stat_ctx->backends = stat_backends;
+       stat_ctx->backends_count = G_N_ELEMENTS (stat_backends);
+       stat_ctx->classifiers = stat_classifiers;
+       stat_ctx->classifiers_count = G_N_ELEMENTS (stat_classifiers);
+       stat_ctx->tokenizers = stat_tokenizers;
+       stat_ctx->tokenizers_count = G_N_ELEMENTS (stat_tokenizers);
+
+       /* Init backends */
+       for (i = 0; i < stat_ctx->backends_count; i ++) {
+               stat_ctx->backends[i].ctx = stat_ctx->backends[i].init (stat_ctx, cfg);
+       }
+}
+
+struct rspamd_stat_ctx *
+rspamd_stat_get_ctx (void)
+{
+       return stat_ctx;
+}
+
+struct rspamd_stat_classifier *
+rspamd_stat_get_classifier (const gchar *name)
+{
+       guint i;
+
+       for (i = 0; i < stat_ctx->classifiers_count; i ++) {
+               if (strcmp (name, stat_ctx->classifiers[i].name) == 0) {
+                       return &stat_ctx->classifiers[i];
+               }
+       }
+
+       return NULL;
+}
+
+struct rspamd_stat_backend *
+rspamd_stat_get_backend (const gchar *name)
+{
+       guint i;
+
+       if (name == NULL || name[0] == '\0') {
+               name = RSPAMD_DEFAULT_BACKEND;
+       }
+
+       for (i = 0; i < stat_ctx->backends_count; i ++) {
+               if (strcmp (name, stat_ctx->backends[i].name) == 0) {
+                       return &stat_ctx->backends[i];
+               }
+       }
+
+       return NULL;
+}
+
+struct rspamd_stat_tokenizer *
+rspamd_stat_get_tokenizer (const gchar *name)
+{
+       guint i;
+
+       if (name == NULL || name[0] == '\0') {
+               name = RSPAMD_DEFAULT_TOKENIZER;
+       }
+
+       for (i = 0; i < stat_ctx->tokenizers_count; i ++) {
+               if (strcmp (name, stat_ctx->tokenizers[i].name) == 0) {
+                       return &stat_ctx->tokenizers[i];
+               }
+       }
+
+       return NULL;
 }
index 4aa625b27b042f026b29317e653bb5042e44a75c..15b5f03af240e839098317a2f1999e96d1a9834c 100644 (file)
@@ -59,12 +59,24 @@ typedef struct token_node_s {
 } rspamd_token_t;
 
 struct rspamd_stat_ctx {
-       struct classifier *classifiers;
+       struct rspamd_stat_classifier *classifiers;
        guint classifiers_count;
-       struct tokenizer *tokenizers;
+       struct rspamd_stat_tokenizer *tokenizers;
        guint tokenizers_count;
        struct rspamd_stat_backend *backends;
        guint backends_count;
+
+       guint statfiles;
 };
 
+struct rspamd_stat_ctx * rspamd_stat_get_ctx (void);
+struct rspamd_stat_classifier * rspamd_stat_get_classifier (const gchar *name);
+struct rspamd_stat_backend * rspamd_stat_get_backend (const gchar *name);
+struct rspamd_stat_tokenizer * rspamd_stat_get_tokenizer (const gchar *name);
+
+static GQuark rspamd_stat_quark (void)
+{
+       return g_quark_from_static_string ("rspamd-statistics");
+}
+
 #endif /* STAT_INTERNAL_H_ */
index 741e0d3507464ce83a942caedb592453e4d0eda2..14ed7281e90c886778405d7407b43108ec30cc4e 100644 (file)
@@ -77,7 +77,7 @@ struct rspamd_worker_signal_handler {
 struct pidfh;
 struct rspamd_config;
 struct tokenizer;
-struct classifier;
+struct rspamd_stat_classifier;
 struct rspamd_classifier_config;
 struct mime_part;
 struct rspamd_dns_resolver;