]> jfr.im git - irc/evilnet/x3.git/blobdiff - src/spamserv.h
Fix for crash bug during burst where X3 sends a B (BURST) message with a channel...
[irc/evilnet/x3.git] / src / spamserv.h
index ff0d0ab7f23f9634d88b73fcdc9dd08ed1643d52..ab540f91e41329a5e603d3adf40c154ab86075bc 100644 (file)
@@ -3,7 +3,7 @@
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
+ * the Free Software Foundation; either version 3 of the License, or
  * (at your option) any later version.  Important limitations are
  * listed in the COPYING file that accompanies this software.
  *
 enum channelinfo
 {
     ci_SpamLimit = 0,
-    ci_AdvReaction,
-    ci_WarnReaction,
-    ci_BadReaction,
+    ci_AdvReaction = 1,
+    ci_WarnReaction = 2,
+    ci_BadReaction = 3,
+    ci_CapsReaction = 4,
     ci_Max
 };
 
 #define CHAN_INFO_SIZE         (ci_Max + 1)
-#define CHAN_INFO_DEFAULT      "blss"
+#define CHAN_INFO_DEFAULT      "blssss"
 
 #define CHAN_SPAMSCAN          0x00000001
 #define CHAN_CHANFLOODSCAN     0x00000002
 #define CHAN_JOINFLOOD         0x00000004
 #define CHAN_ADV_SCAN          0x00000008
-#define CHAN_SCAN_CHANOPS      0x00000010
-#define CHAN_SCAN_HALFOPS      0x00000020
-#define CHAN_SCAN_VOICED       0x00000040
-#define CHAN_SUSPENDED         0x00000080
-#define CHAN_BADWORDSCAN       0x00000100
+#define CHAN_SUSPENDED         0x00000010
+#define CHAN_BADWORDSCAN       0x00000020
+#define CHAN_CAPSSCAN          0x00000040
 
 #define CHAN_FLAGS_DEFAULT     (CHAN_SPAMSCAN | CHAN_CHANFLOODSCAN | CHAN_JOINFLOOD)
 
@@ -59,11 +58,9 @@ enum channelinfo
 #define CHECK_FLOOD(x)         ((x)->flags & CHAN_CHANFLOODSCAN)
 #define CHECK_JOINFLOOD(x)     ((x)->flags & CHAN_JOINFLOOD)
 #define CHECK_ADV(x)           ((x)->flags & CHAN_ADV_SCAN)
-#define CHECK_CHANOPS(x)       ((x)->flags & CHAN_SCAN_CHANOPS)
-#define CHECK_HALFOPS(x)       ((x)->flags & CHAN_SCAN_HALFOPS)
-#define CHECK_VOICED(x)                ((x)->flags & CHAN_SCAN_VOICED)
 #define CHECK_SUSPENDED(x)     ((x)->flags & CHAN_SUSPENDED)
 #define CHECK_BADWORDSCAN(x)   ((x)->flags & CHAN_BADWORDSCAN)
+#define CHECK_CAPSSCAN(x)      ((x)->flags & CHAN_CAPSSCAN)
 
 struct chanInfo
 {
@@ -71,8 +68,15 @@ struct chanInfo
     struct string_list     *exceptions;
     struct string_list     *badwords;
     unsigned int           exceptlevel;
+    unsigned int           exceptadvlevel;
+    unsigned int           exceptbadwordlevel;
+    unsigned int           exceptcapslevel;
+    unsigned int           exceptfloodlevel;
+    unsigned int           exceptspamlevel;
     unsigned int           flags : 30;
-    char                   info[CHAN_INFO_SIZE];
+    int           capsmin;
+    int           capspercent;
+    char                   info[CHAN_INFO_SIZE+1];
     time_t                 suspend_expiry;
 };
 
@@ -90,6 +94,7 @@ struct chanInfo
 #define USER_KILLED         0x00000080
 #define USER_ADV_WARNED     0x00000100
 #define USER_BAD_WARNED     0x00000200
+#define USER_CAPS_WARNED    0x00000400
 
 #define CHECK_KICK(x)          ((x)->flags & USER_KICK)
 #define CHECK_KICKBAN(x)       ((x)->flags & USER_KICKBAN)
@@ -101,6 +106,7 @@ struct chanInfo
 #define CHECK_KILLED(x)                ((x)->flags & USER_KILLED)
 #define CHECK_ADV_WARNED(x)    ((x)->flags & USER_ADV_WARNED)
 #define CHECK_BAD_WARNED(x)    ((x)->flags & USER_BAD_WARNED)
+#define CHECK_CAPS_WARNED(x)   ((x)->flags & USER_CAPS_WARNED)
 
 #define SPAM_WARNLEVEL          1
 
@@ -122,6 +128,10 @@ struct chanInfo
 #define BAD_EXPIRE              900
 #define BAD_WARNLEVEL           2
 
+#define CAPS_TIMEQ_FREQ          300
+#define CAPS_EXPIRE              900
+#define CAPS_WARNLEVEL           2
+
 #define WARNLEVEL_TIMEQ_FREQ    1800
 #define MAX_WARNLEVEL           6
 
@@ -164,6 +174,7 @@ struct userInfo
        unsigned int            warnlevel;
        time_t                  lastadv;
        time_t                  lastbad;
+       time_t                  lastcaps;
 };
 
 /***********************************************/