char *str_banid = data;
MYSQL_RES *res;
MYSQL_ROW row;
- printf_mysql_query("SELECT `ban_mask` FROM `bans` WHERE `ban_id` = '%s'", str_banid);
+ 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();
- if((row = mysql_fetch_row(res)) != NULL) {
- //TODO: unban if mask is still banned
+ struct ChanNode *chan;
+ if((row = mysql_fetch_row(res)) != NULL && (chan = getChanByName(row[1])) != NULL) {
+ struct ClientSocket *bot, *use_bot = NULL;
+ struct ChanUser *chanuser;
+ for(bot = getBots(SOCKET_FLAG_READY, NULL); bot; bot = getBots(SOCKET_FLAG_READY, bot)) {
+ if((chanuser = getChanUser(bot->user, chan)) != NULL && (chanuser->flags & CHANUSERFLAG_OPPED)) {
+ use_bot = bot;
+ if(bot->flags & SOCKET_FLAG_PREFERRED) break;
+ }
+ }
+ 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);