removed some unused variables
[srvx.git] / src / spamserv.c
index fadcfa49c2abda105dbfe549c097f8666daa8b91..97f4b7ea3264d1946ed6c705ea040e29b2ddf1af 100644 (file)
@@ -76,7 +76,7 @@ dict_t connected_users_dict;
 dict_t killed_users_dict;
 
 #define spamserv_notice(target, format...) send_message(target , spamserv , ## format)
-#define spamserv_debug(format...) do { if(spamserv_conf.debug_channel) send_channel_notice(spamserv_conf.debug_channel , spamserv , ## format); } while(0)
+#define spamserv_debug(format...) do { if(spamserv_conf.debug_channel) send_channel_message(spamserv_conf.debug_channel , spamserv , ## format); } while(0)
 #define ss_reply(format...)    send_message(user , spamserv , ## format)
 
 #define SET_SUBCMDS_SIZE 10
@@ -2170,17 +2170,37 @@ spamserv_channel_message(struct chanNode *channel, struct userNode *user, char *
        }
 }
 
+static int
+spamserv_saxdb_read_shitlist(const char *name, void *data, void *extra)
+{
+       struct record_data *rd = data;
+       struct chanInfo *chan = extra;
+       char *badword;
+       char *triggered, *action;
+
+       if (rd->type == RECDB_OBJECT) {
+               dict_t obj = GET_RECORD_OBJECT(rd);
+               /* new style structure */
+               badword = database_get_data(obj, KEY_BADWORD_MASK, RECDB_QSTRING);
+               triggered = database_get_data(obj, KEY_BADWORD_TRIGGERED, RECDB_QSTRING);
+               action = database_get_data(obj, KEY_BADWORD_ACTION, RECDB_QSTRING);
+
+               add_badword(chan, badword, strtoul(triggered, NULL, 0), strtoul(action, NULL, 0), name);
+       }
+       return 0;
+}
+
 static int
 spamserv_saxdb_read(struct dict *database)
 {
-       dict_iterator_t it, itbad;
-       struct dict *object;
-       struct record_data *hir, hirbad;
+       dict_iterator_t it;
+       struct dict *badwords;
+       struct record_data *hir;
        struct chanNode *channel;
        struct chanInfo *cInfo;
        struct string_list *strlist;
-       unsigned int flags,exceptlevel,badwordid,action,triggered;
-       char *str, *info, *mask;
+       unsigned int flags,exceptlevel,badwordid;
+       char *str, *info;
        unsigned long expiry;    
 
        for(it = dict_first(database); it; it = iter_next(it))
@@ -2223,7 +2243,11 @@ spamserv_saxdb_read(struct dict *database)
                                        cInfo->suspend_expiry = expiry;                 
                 cInfo->exceptlevel=exceptlevel;
                 cInfo->badwords = dict_new();
-
+                str = database_get_data(hir->d.object, KEY_LASTBADWORDID, RECDB_QSTRING);
+                badwordid = str ? atoi(str) : 0;
+                cInfo->last_badword_id = badwordid;
+                if ((badwords = database_get_data(hir->d.object, KEY_BADWORDS, RECDB_OBJECT)))
+                       dict_foreach(badwords, spamserv_saxdb_read_shitlist, cInfo);
                        }
                }
                else
@@ -2256,8 +2280,8 @@ spamserv_saxdb_write(struct saxdb_context *ctx)
                if(cInfo->suspend_expiry)
                        saxdb_write_int(ctx, KEY_EXPIRY, cInfo->suspend_expiry);
 
-               saxdb_start_record(ctx, KEY_BADWORDS, 1);
                saxdb_write_int(ctx, KEY_LASTBADWORDID, cInfo->last_badword_id);
+               saxdb_start_record(ctx, KEY_BADWORDS, 1);
                dict_iterator_t itbad;
                for (itbad = dict_first(cInfo->badwords); itbad; itbad = iter_next(itbad)) {
                        struct badword *badword = iter_data(itbad);