-
- //load all timed bans
- printf_mysql_query("SELECT `ban_id`, `ban_timeout` FROM `bans` WHERE `ban_timeout` > 0");
- res = mysql_use();
- char nameBuf[20];
- while ((row = mysql_fetch_row(res)) != NULL) {
- if(atol(row[1]) - time(0) > 0) {
- sprintf(nameBuf, "ban_%s", row[0]);
- timeq_add_name(nameBuf, atol(row[1]) - time(0), channel_ban_timeout, strdup(row[0]));
- } else {
- //timed out
- printf_mysql_query("DELETE FROM `bans` WHERE `ban_id` = '%s'", row[0]);
- }
- }
-}
-
-TIMEQ_CALLBACK(channel_ban_timeout) {
- char *str_banid = data;
- MYSQL_RES *res;
- MYSQL_ROW row;
- printf_mysql_query("SELECT `ban_mask`, `channel_name` FROM `bans` LEFT JOIN `channels` ON `ban_channel` = `channel_id` WHERE `ban_id` = '%s'", str_banid);
- res = mysql_use();
- struct ChanNode *chan;
- if((row = mysql_fetch_row(res)) != NULL && (chan = getChanByName(row[1])) != NULL) {
- struct ClientSocket *use_bot = getBotForChannel(chan);
- if(use_bot) {
- putsock(use_bot, "MODE %s -b %s", chan->name, row[0]);
- }
- printf_mysql_query("DELETE FROM `bans` WHERE `ban_id` = '%s'", str_banid);
- }
- free(str_banid);