}
}
+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 dict *object, *badwords;
struct record_data *hir, hirbad;
struct chanNode *channel;
struct chanInfo *cInfo;
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(object, spamserv_saxdb_read_shitlist, cInfo);
}
}
else
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);