From: NurPech Date: Thu, 16 May 2013 21:06:59 +0000 (+0200) Subject: IRC-Operatores are now ignored by Watchdog X-Git-Url: http://git.pk910.de/?p=srvx.git;a=commitdiff_plain;h=ba891f830590ca957720345fd9dd66dfccc54c1f IRC-Operatores are now ignored by Watchdog --- diff --git a/src/mod-watchdog.c b/src/mod-watchdog.c index d9da25d..c70ab70 100644 --- a/src/mod-watchdog.c +++ b/src/mod-watchdog.c @@ -367,37 +367,39 @@ watchdog_detected_badword(struct userNode *user, struct chanNode *chan, struct b char *hostmask; char *reason = watchdog_conf.punishment_reason; char mask[IRC_NTOP_MAX_SIZE+3] = { '*', '@', '\0' }; - switch(badword->action) { - case BADACTION_BAN: - hostmask = generate_hostmask(user, GENMASK_STRICT_HOST | GENMASK_ANY_IDENT); - sanitize_ircmask(hostmask); - if(chan->channel_info) { - //registered channel - add_channel_ban(chan->channel_info, hostmask, watchdog->nick, now, now, now + watchdog_conf.ban_duration, reason); - } - struct mod_chanmode change; - mod_chanmode_init(&change); - change.argc = 1; - change.args[0].mode = MODE_BAN; - change.args[0].u.hostmask = hostmask; - mod_chanmode_announce(watchdog, chan, &change); - free(hostmask); - - case BADACTION_KICK: - if(GetUserMode(chan, user)) - KickChannelUser(user, chan, watchdog, reason); - break; - case BADACTION_KILL: - DelUser(user, watchdog, 1, reason); - break; - case BADACTION_GLINE: - irc_ntop(mask + 2, sizeof(mask) - 2, &user->ip); - gline_add(watchdog->nick, mask, watchdog_conf.gline_duration, reason, now, now, 0, 1); - break; - default: - //error? - break; - } + if(!IsOper(user)) { + switch(badword->action) { + case BADACTION_BAN: + hostmask = generate_hostmask(user, GENMASK_STRICT_HOST | GENMASK_ANY_IDENT); + sanitize_ircmask(hostmask); + if(chan->channel_info) { + //registered channel + add_channel_ban(chan->channel_info, hostmask, watchdog->nick, now, now, now + watchdog_conf.ban_duration, reason); + } + struct mod_chanmode change; + mod_chanmode_init(&change); + change.argc = 1; + change.args[0].mode = MODE_BAN; + change.args[0].u.hostmask = hostmask; + mod_chanmode_announce(watchdog, chan, &change); + free(hostmask); + + case BADACTION_KICK: + if(GetUserMode(chan, user)) + KickChannelUser(user, chan, watchdog, reason); + break; + case BADACTION_KILL: + DelUser(user, watchdog, 1, reason); + break; + case BADACTION_GLINE: + irc_ntop(mask + 2, sizeof(mask) - 2, &user->ip); + gline_add(watchdog->nick, mask, watchdog_conf.gline_duration, reason, now, now, 0, 1); + break; + default: + //error? + break; + } + } } static void