IRC-Operatores are now ignored by Watchdog
authorNurPech <nurpech@nurpech.de>
Thu, 16 May 2013 21:06:59 +0000 (23:06 +0200)
committerNurPech <nurpech@nurpech.de>
Thu, 16 May 2013 21:06:59 +0000 (23:06 +0200)
src/mod-watchdog.c

index d9da25d63488c01ca5f4eacf6277089e416ea793..c70ab70233be1094e17cadbd6224e93cbe5e13d9 100644 (file)
@@ -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