Răsfoiți Sursa

Properly log response to flood (#48)

Bryan Drewery 14 ani în urmă
părinte
comite
d7f3387942
3 a modificat fișierele cu 11 adăugiri și 8 ștergeri
  1. 2 2
      src/mod/irc.mod/chan.c
  2. 8 5
      src/mod/irc.mod/irc.c
  3. 1 1
      src/mod/irc.mod/irc.h

+ 2 - 2
src/mod/irc.mod/chan.c

@@ -730,8 +730,8 @@ static bool detect_chan_flood(memberlist* m, const char *from, struct chanset_t
           char *s1 = quickban(chan, from);
           u_addmask('b', chan, s1, conf.bot->nick, "channel flood", now + (60 * chan->ban_time), 0);
         } else {
-          putlog(LOG_MODES, chan->dname, "Channel flood from %s -- kicking", m->nick);
-          punish_flooder(chan, m);
+          const char *response = punish_flooder(chan, m);
+          putlog(LOG_MODES, chan->dname, "Channel flood from %s -- %s", m->nick, response);
         }
       }
       return 1;

+ 8 - 5
src/mod/irc.mod/irc.c

@@ -185,14 +185,14 @@ detect_offense(memberlist* m, struct chanset_t *chan, char *msg)
   if (chan->capslimit && caps_count) {
     caps_percentage = (caps_count)/(double(tot));
     if (caps_percentage >= caps_limit) {
-      putlog(LOG_MODES, chan->name, "Caps flood (%d%%) from %s -- kicking", int(caps_percentage * 100), m->nick);
-      punish_flooder(chan, m);
+      const char *response = punish_flooder(chan, m);
+      putlog(LOG_MODES, chan->name, "Caps flood (%d%%) from %s -- %s", int(caps_percentage * 100), m->nick, response);
       return 1;
     }
   } else if (chan->colorlimit && color_count) {
     if (color_count >= chan->colorlimit) {
-      putlog(LOG_MODES, chan->name, "Color flood (%d) from %s -- kicking", color_count, m->nick);
-      punish_flooder(chan, m);
+      const char *response = punish_flooder(chan, m);
+      putlog(LOG_MODES, chan->name, "Color flood (%d) from %s -- %s", color_count, m->nick, response);
       return 1;
     }
   }
@@ -206,15 +206,18 @@ void set_devoice(struct chanset_t *chan, memberlist* m) {
   }
 }
 
-void punish_flooder(struct chanset_t* chan, memberlist* m, const char *reason) {
+const char* punish_flooder(struct chanset_t* chan, memberlist* m, const char *reason) {
   if (channel_voice(chan) && chan->voice_moderate && !chan_sentdevoice(m)) {
     add_mode(chan, '-', 'v', m->nick);
     m->flags |= SENTDEVOICE;
     set_devoice(chan, m);
+    return "devoicing";
   } else if (!chan_sentkick(m)) {
     dprintf(DP_SERVER, "KICK %s %s :%s%s\n", chan->name, m->nick, kickprefix, reason ? reason : response(RES_FLOOD));
     m->flags |= SENTKICK;
+    return "kicking";
   }
+  return "ignoring";
 }
 
 void unlock_chan(struct chanset_t *chan)

+ 1 - 1
src/mod/irc.mod/irc.h

@@ -107,7 +107,7 @@ typedef struct resolvstruct resolv_member;
 void resolve_to_rbl(struct chanset_t *chan, const char *host, struct resolvstruct *r = NULL);
 static void do_mask(struct chanset_t *chan, masklist *m, char *mask, char Mode);
 static void get_channel_masks(struct chanset_t* chan);
-void punish_flooder(struct chanset_t* chan, memberlist* m, const char *reason = NULL);
+const char* punish_flooder(struct chanset_t* chan, memberlist* m, const char *reason = NULL);
 void set_devoice(struct chanset_t* chan, memberlist* m);
 
 #endif /* MAKING_IRC */