-/* event_neonserv_mode.c - NeonServ v5.4
+/* event_neonserv_mode.c - NeonServ v5.6
* Copyright (C) 2011-2012 Philipp Kreil (pk910)
*
* This program is free software: you can redistribute it and/or modify
if(argc)
temp_argv = malloc(argc*sizeof(*temp_argv));
if (!cache || (argc && !temp_argv)) {
- perror("malloc() failed");
+ printf_log("neonserv", LOG_ERROR, "%s:%d malloc() failed", __FILE__, __LINE__);
return;
}
if(argc) {
reply(textclient, user, "NS_MODE_CANBAN", chan->name);
db_canban = -1;
}
+ char hostmask_buffer[NICKLEN+USERLEN+HOSTLEN+3];
+ char usermask[NICKLEN+USERLEN+HOSTLEN+3];
+ int match_count = 0;
if(db_canban == -1) {
- if(!neonserv_cmd_mode_botwar_detect(client, user, chan, &botwar_detect_executed))
+ if(!neonserv_cmd_mode_botwar_detect(client, user, chan, &botwar_detect_executed)) {
+ if(!add) {
+ //check if a user just removed a bot ban
+ for(chanuser = getChannelUsers(chan, NULL); chanuser; chanuser = getChannelUsers(chan, chanuser)) {
+ cuser = chanuser->user;
+ sprintf(usermask, "%s!%s@%s", cuser->nick, cuser->ident, cuser->host);
+ if(!match(carg, usermask) && isBot(cuser)) {
+ skip = 1;
+ break;
+ }
+ }
+ if(skip)
+ break;
+ }
modeBufferSet(modeBuf, !add, modes[i], carg);
+ }
if(uaccess < db_getop)
deop_user = 1;
break;
}
- char hostmask_buffer[NICKLEN+USERLEN+HOSTLEN+3];
- char usermask[NICKLEN+USERLEN+HOSTLEN+3];
- int match_count = 0;
carg = make_banmask(carg, hostmask_buffer);
if(add) {
for(chanuser = getChannelUsers(chan, NULL); chanuser; chanuser = getChannelUsers(chan, chanuser)) {