]> jfr.im git - irc/rqf/shadowircd.git/commitdiff
Move flood_attack_channel to channel.c so it can be used outside m_message.c
authorB.Greenham <redacted>
Sat, 11 Dec 2010 21:11:54 +0000 (16:11 -0500)
committerB.Greenham <redacted>
Sat, 11 Dec 2010 21:11:54 +0000 (16:11 -0500)
include/channel.h
modules/core/m_message.c
src/channel.c

index 22f9d533fe2174d5fec9db5bf137da28d9452d23..37751d79a84c1393bef2837551abfcedd5b9f360 100644 (file)
@@ -231,6 +231,8 @@ extern void destroy_channel(struct Channel *);
 
 extern int can_send(struct Channel *chptr, struct Client *who, 
                    struct membership *);
+extern int flood_attack_channel(int p_or_n, struct Client *source_p,
+                               struct Channel *chptr, char *chname);
 extern int is_banned(struct Channel *chptr, struct Client *who,
                     struct membership *msptr, const char *, const char *);
 extern int is_quieted(struct Channel *chptr, struct Client *who,
index 670a6097b89bfa5e0e5103b8732e40688761a7a3..506dc54477010c186f50e613db4742b6b1e71a12 100644 (file)
@@ -92,8 +92,6 @@ static int build_target_list(int p_or_n, const char *command,
                             struct Client *source_p, const char *nicks_channels, const char *text);
 
 static int flood_attack_client(int p_or_n, struct Client *source_p, struct Client *target_p);
-static int flood_attack_channel(int p_or_n, struct Client *source_p,
-                               struct Channel *chptr, char *chname);
 
 /* Fifteen seconds should be plenty for a client to reply a ctcp */
 #define LARGE_CTCP_TIME 15
@@ -969,63 +967,6 @@ flood_attack_client(int p_or_n, struct Client *source_p, struct Client *target_p
        return 0;
 }
 
-/*
- * flood_attack_channel
- * inputs       - flag 0 if PRIVMSG 1 if NOTICE. RFC
- *                says NOTICE must not auto reply
- *              - pointer to source Client 
- *             - pointer to target channel
- * output      - 1 if target is under flood attack
- * side effects        - check for flood attack on target chptr
- */
-static int
-flood_attack_channel(int p_or_n, struct Client *source_p, struct Channel *chptr, char *chname)
-{
-       int delta;
-
-       if(GlobalSetOptions.floodcount && MyClient(source_p) && (!IsOper(source_p) || !ConfigFileEntry.true_no_oper_flood))
-       {
-               if((chptr->first_received_message_time + 1) < rb_current_time())
-               {
-                       delta = rb_current_time() - chptr->first_received_message_time;
-                       chptr->received_number_of_privmsgs -= delta;
-                       chptr->first_received_message_time = rb_current_time();
-                       if(chptr->received_number_of_privmsgs <= 0)
-                       {
-                               chptr->received_number_of_privmsgs = 0;
-                               chptr->flood_noticed = 0;
-                       }
-               }
-
-               if((chptr->received_number_of_privmsgs >= GlobalSetOptions.floodcount)
-                  || chptr->flood_noticed)
-               {
-                       if(chptr->flood_noticed == 0)
-                       {
-                               sendto_realops_snomask(SNO_BOTS, *chptr->chname == '&' ? L_ALL : L_NETWIDE,
-                                                    "Possible Flooder %s[%s@%s] on %s target: %s",
-                                                    source_p->name, source_p->username,
-                                                    source_p->orighost,
-                                                    source_p->servptr->name, chptr->chname);
-                               chptr->flood_noticed = 1;
-
-                               /* Add a bit of penalty */
-                               chptr->received_number_of_privmsgs += 2;
-                       }
-                       if(MyClient(source_p) && (p_or_n != NOTICE))
-                               sendto_one(source_p,
-                                          ":%s NOTICE %s :*** Message to %s throttled due to flooding",
-                                          me.name, source_p->name, chptr->chname);
-                       return 1;
-               }
-               else
-                       chptr->received_number_of_privmsgs++;
-       }
-
-       return 0;
-}
-
-
 /*
  * handle_special
  *
index 88f187011d4a789a88161acc38b1741c879ae21d..a2e6fa60d66fa7e8a28eb4f3ec95fefb292cea42 100644 (file)
@@ -987,6 +987,62 @@ can_send(struct Channel *chptr, struct Client *source_p, struct membership *mspt
        return CAN_SEND_NONOP;
 }
 
+/*
+ * flood_attack_channel
+ * inputs       - flag 0 if PRIVMSG 1 if NOTICE. RFC
+ *                says NOTICE must not auto reply
+ *              - pointer to source Client 
+ *             - pointer to target channel
+ * output      - 1 if target is under flood attack
+ * side effects        - check for flood attack on target chptr
+ */
+int
+flood_attack_channel(int p_or_n, struct Client *source_p, struct Channel *chptr, char *chname)
+{
+       int delta;
+
+       if(GlobalSetOptions.floodcount && MyClient(source_p) && (!IsOper(source_p) || !ConfigFileEntry.true_no_oper_flood))
+       {
+               if((chptr->first_received_message_time + 1) < rb_current_time())
+               {
+                       delta = rb_current_time() - chptr->first_received_message_time;
+                       chptr->received_number_of_privmsgs -= delta;
+                       chptr->first_received_message_time = rb_current_time();
+                       if(chptr->received_number_of_privmsgs <= 0)
+                       {
+                               chptr->received_number_of_privmsgs = 0;
+                               chptr->flood_noticed = 0;
+                       }
+               }
+
+               if((chptr->received_number_of_privmsgs >= GlobalSetOptions.floodcount)
+                  || chptr->flood_noticed)
+               {
+                       if(chptr->flood_noticed == 0)
+                       {
+                               sendto_realops_snomask(SNO_BOTS, *chptr->chname == '&' ? L_ALL : L_NETWIDE,
+                                                    "Possible Flooder %s[%s@%s] on %s target: %s",
+                                                    source_p->name, source_p->username,
+                                                    source_p->orighost,
+                                                    source_p->servptr->name, chptr->chname);
+                               chptr->flood_noticed = 1;
+
+                               /* Add a bit of penalty */
+                               chptr->received_number_of_privmsgs += 2;
+                       }
+                       if(MyClient(source_p) && (p_or_n != 1))
+                               sendto_one(source_p,
+                                          ":%s NOTICE %s :*** Message to %s throttled due to flooding",
+                                          me.name, source_p->name, chptr->chname);
+                       return 1;
+               }
+               else
+                       chptr->received_number_of_privmsgs++;
+       }
+
+       return 0;
+}
+
 /* find_bannickchange_channel()
  * Input: client to check
  * Output: channel preventing nick change