]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Rework] Remove legacy code never used for classifiers
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 6 Oct 2016 17:59:25 +0000 (18:59 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 6 Oct 2016 17:59:25 +0000 (18:59 +0100)
src/libserver/cfg_file.h
src/libserver/cfg_rcl.c
src/lua/lua_classifier.c
src/lua/lua_common.h

index 2f671135e471ac975edf795559d1dae4e780537e..d10ce235df971bb1d46a66386656e05321e6a6c2 100644 (file)
@@ -156,8 +156,6 @@ struct rspamd_classifier_config {
        struct rspamd_tokenizer_config *tokenizer;      /**< tokenizer used for classifier                                              */
        const gchar *backend;                                                   /**< name of statfile's backend                                                 */
        ucl_object_t *opts;                             /**< other options                                      */
-       GList *pre_callbacks;                           /**< list of callbacks that are called before classification */
-       GList *post_callbacks;                          /**< list of callbacks that are called after classification */
        GList *learn_conditions;                                                /**< list of learn condition callbacks                                  */
        gchar *name;                                                                    /**< unique name of classifier                                                  */
        guint32 min_tokens;                                                             /**< minimal number of tokens to process classifier     */
index 8ada11f882bbc3e8c5733e8136116ec4ac7ecb4b..b770e14ad03084cc84df489492d97d37e99213bf 100644 (file)
@@ -874,10 +874,10 @@ rspamd_rcl_set_lua_globals (struct rspamd_config *cfg, lua_State *L,
                lua_setglobal (L, "composites");
        }
 
-       lua_getglobal (L, "classifiers");
+       lua_getglobal (L, "rspamd_classifiers");
        if (lua_isnil (L, -1)) {
                lua_newtable (L);
-               lua_setglobal (L, "classifiers");
+               lua_setglobal (L, "rspamd_classifiers");
        }
 
        lua_getglobal (L, "rspamd_version");
index aaf3888df66cd8f581a7099f9fa8b6a5f78b99b1..488a9d4776fc843eef8507b8f21508fe3efcf777 100644 (file)
 #include "cfg_file.h"
 
 /* Classifier methods */
-LUA_FUNCTION_DEF (classifier, register_pre_callback);
-LUA_FUNCTION_DEF (classifier, register_post_callback);
 LUA_FUNCTION_DEF (classifier, get_statfiles);
 LUA_FUNCTION_DEF (classifier, get_statfile_by_label);
 
 static const struct luaL_reg classifierlib_m[] = {
-       LUA_INTERFACE_DEF (classifier, register_pre_callback),
-       LUA_INTERFACE_DEF (classifier, register_post_callback),
        LUA_INTERFACE_DEF (classifier, get_statfiles),
        LUA_INTERFACE_DEF (classifier, get_statfile_by_label),
        {"__tostring", rspamd_lua_class_tostring},
        {NULL, NULL}
 };
 
-
 LUA_FUNCTION_DEF (statfile, get_symbol);
 LUA_FUNCTION_DEF (statfile, get_label);
 LUA_FUNCTION_DEF (statfile, is_spam);
@@ -46,11 +41,6 @@ static const struct luaL_reg statfilelib_m[] = {
        {NULL, NULL}
 };
 
-struct classifier_callback_data {
-       lua_State *L;
-       const gchar *name;
-};
-
 static struct rspamd_statfile_config * lua_check_statfile (lua_State * L);
 
 /* Classifier implementation */
@@ -64,187 +54,6 @@ lua_check_classifier (lua_State * L)
        return ud ? *((struct rspamd_classifier_config **)ud) : NULL;
 }
 
-static GList *
-call_classifier_pre_callback (struct rspamd_classifier_config *ccf,
-       struct rspamd_task *task,
-       lua_State *L,
-       gboolean is_learn,
-       gboolean is_spam)
-{
-       struct rspamd_classifier_config **pccf;
-       struct rspamd_task **ptask;
-       struct rspamd_statfile_config **pst;
-       GList *res = NULL;
-
-       pccf = lua_newuserdata (L, sizeof (struct rspamd_classifier_config *));
-       rspamd_lua_setclass (L, "rspamd{classifier}", -1);
-       *pccf = ccf;
-
-       ptask = lua_newuserdata (L, sizeof (struct rspamd_task *));
-       rspamd_lua_setclass (L, "rspamd{task}", -1);
-       *ptask = task;
-
-       lua_pushboolean (L, is_learn);
-       lua_pushboolean (L, is_spam);
-
-       if (lua_pcall (L, 4, 1, 0) != 0) {
-               msg_warn_task ("error running pre classifier callback %s",
-                       lua_tostring (L, -1));
-               lua_pop (L, 1);
-       }
-       else {
-               if (lua_istable (L, -1)) {
-                       lua_pushnil (L);
-                       while (lua_next (L, -2)) {
-                               pst = rspamd_lua_check_udata (L, -1, "rspamd{statfile}");
-                               if (pst) {
-                                       res = g_list_prepend (res, *pst);
-                               }
-                               lua_pop (L, 1);
-                       }
-               }
-               lua_pop (L, 1);
-       }
-
-       return res;
-}
-
-/* Return list of statfiles that should be checked for this message */
-GList *
-rspamd_lua_call_cls_pre_callbacks (struct rspamd_classifier_config *ccf,
-       struct rspamd_task *task,
-       gboolean is_learn,
-       gboolean is_spam,
-       lua_State *L)
-{
-       GList *res = NULL, *cur;
-       struct classifier_callback_data *cd;
-
-
-       /* Go throught all callbacks and call them, appending results to list */
-       cur = g_list_first (ccf->pre_callbacks);
-       while (cur) {
-               cd = cur->data;
-               lua_getglobal (L, cd->name);
-
-               res =
-                       g_list_concat (res,
-                               call_classifier_pre_callback (ccf, task, L, is_learn, is_spam));
-
-               cur = g_list_next (cur);
-       }
-
-       if (res == NULL) {
-               /* Check function from global table 'classifiers' */
-               lua_getglobal (L, "classifiers");
-               if (lua_istable (L, -1)) {
-                       lua_pushstring (L, ccf->name);
-                       lua_gettable (L, -2);
-                       /* Function is now on top */
-                       if (lua_isfunction (L, -1)) {
-                               res = call_classifier_pre_callback (ccf,
-                                               task,
-                                               L,
-                                               is_learn,
-                                               is_spam);
-                       }
-                       lua_pop (L, 1);
-               }
-               lua_pop (L, 1);
-       }
-
-       return res;
-}
-
-/* Return result mark for statfile */
-double
-rspamd_lua_call_cls_post_callbacks (struct rspamd_classifier_config *ccf,
-       struct rspamd_task *task,
-       double in,
-       lua_State *L)
-{
-       struct classifier_callback_data *cd;
-       struct rspamd_classifier_config **pccf;
-       struct rspamd_task **ptask;
-       double out = in;
-       GList *cur;
-
-       /* Go throught all callbacks and call them, appending results to list */
-       cur = g_list_first (ccf->pre_callbacks);
-       while (cur) {
-               cd = cur->data;
-               lua_getglobal (L, cd->name);
-
-               pccf = lua_newuserdata (L, sizeof (struct rspamd_classifier_config *));
-               rspamd_lua_setclass (L, "rspamd{classifier}", -1);
-               *pccf = ccf;
-
-               ptask = lua_newuserdata (L, sizeof (struct rspamd_task *));
-               rspamd_lua_setclass (L, "rspamd{task}", -1);
-               *ptask = task;
-
-               lua_pushnumber (L, out);
-
-               if (lua_pcall (L, 3, 1, 0) != 0) {
-                       msg_warn_task ("error running function %s: %s", cd->name,
-                               lua_tostring (L, -1));
-                       lua_pop (L, 1);
-               }
-               else {
-                       if (lua_isnumber (L, 1)) {
-                               out = lua_tonumber (L, 1);
-                       }
-                       lua_pop (L, 1);
-               }
-
-               cur = g_list_next (cur);
-       }
-
-       return out;
-
-}
-
-static gint
-lua_classifier_register_pre_callback (lua_State *L)
-{
-       struct rspamd_classifier_config *ccf = lua_check_classifier (L);
-       struct classifier_callback_data *cd;
-       const gchar *name;
-
-       if (ccf) {
-               name = luaL_checkstring (L, 2);
-               if (name) {
-                       cd = g_malloc (sizeof (struct classifier_callback_data));
-                       cd->name = g_strdup (name);
-                       cd->L = L;
-                       ccf->pre_callbacks = g_list_prepend (ccf->pre_callbacks, cd);
-               }
-       }
-
-       return 0;
-
-}
-
-static gint
-lua_classifier_register_post_callback (lua_State *L)
-{
-       struct rspamd_classifier_config *ccf = lua_check_classifier (L);
-       struct classifier_callback_data *cd;
-       const gchar *name;
-
-       if (ccf) {
-               name = luaL_checkstring (L, 2);
-               if (name) {
-                       cd = g_malloc (sizeof (struct classifier_callback_data));
-                       cd->name = g_strdup (name);
-                       cd->L = L;
-                       ccf->pre_callbacks = g_list_prepend (ccf->pre_callbacks, cd);
-               }
-       }
-
-       return 0;
-}
-
 /* Return table of statfiles indexed by name */
 static gint
 lua_classifier_get_statfiles (lua_State *L)
index 249ca9b90122808050fb34b573d5eb0f34b83a43..6fdff599051d230561ff5888364012c2dea8defe 100644 (file)
@@ -258,17 +258,6 @@ void luaopen_cryptobox (lua_State *L);
 
 void rspamd_lua_dostring (const gchar *line);
 
-/* Classify functions */
-GList * rspamd_lua_call_cls_pre_callbacks (struct rspamd_classifier_config *ccf,
-       struct rspamd_task *task,
-       gboolean is_learn,
-       gboolean is_spam,
-       lua_State *L);
-double rspamd_lua_call_cls_post_callbacks (struct rspamd_classifier_config *ccf,
-       struct rspamd_task *task,
-       double in,
-       lua_State *L);
-
 double rspamd_lua_normalize (struct rspamd_config *cfg,
        long double score,
        void *params);