*** VERSION 5.2.0 ***
[NeonServV5.git] / src / bot_NeonSpam.h
index 77fb4eefc07da03771581e14480a60fe7ab85be8..30bd136ddc6a15cae349456710c63c3c621af7bb 100644 (file)
@@ -1,4 +1,4 @@
-/* bot_NeonSpam.h - NeonServ v5.1
+/* bot_NeonSpam.h - NeonServ v5.2
  * Copyright (C) 2011  Philipp Kreil (pk910)
  * 
  * This program is free software: you can redistribute it and/or modify
 
 #include "main.h"
 
-#define SPAMSETTINGS_SPAMSCAN       0x0001
-#define SPAMSETTINGS_FLOODSCAN      0x0002
-#define SPAMSETTINGS_JOINSCAN       0x0004
-#define SPAMSETTINGS_SCANOPS        0x0008
-#define SPAMSETTINGS_SCANVOICE      0x0010
-#define SPAMSETTINGS_BOTNETSCAN     0x0020
-#define SPAMSETTINGS_KICKEDBOTQUEUE 0x0040
+//SPAMSCAN
+#define SPAMSETTINGS_SPAMSCAN           0x000001
+#define SPAMSETTINGS_SPAMSCAN_OPS       0x000002
+#define SPAMSETTINGS_SPAMSCAN_VOICE     0x000004
+#define SPAMSETTINGS_SPAMCHARS          "abc"
+#define SPAMSETTINGS_SPAMEXCINDEX       0
+
+//FLOODSCAN
+#define SPAMSETTINGS_FLOODSCAN          0x000008
+#define SPAMSETTINGS_FLOODSCAN_OPS      0x000010
+#define SPAMSETTINGS_FLOODSCAN_VOICE    0x000020
+#define SPAMSETTINGS_FLOODCHARS         "def"
+#define SPAMSETTINGS_FLOODEXCINDEX      1
+#define SPAMSETTINGS_FLOODSENINDEX      0
+
+//JOINSCAN
+#define SPAMSETTINGS_JOINSCAN           0x000040
+#define SPAMSETTINGS_JOINSCAN_OPS       0x000080
+#define SPAMSETTINGS_JOINSCAN_VOICE     0x000100
+#define SPAMSETTINGS_JOINCHARS          "ghi"
+#define SPAMSETTINGS_JOINEXCINDEX       2
+#define SPAMSETTINGS_JOINSENINDEX       1
+
+//BOTNET SCAN
+#define SPAMSETTINGS_BOTNETSCAN         0x000200
+#define SPAMSETTINGS_BOTNETSCAN_OPS     0x000400
+#define SPAMSETTINGS_BOTNETSCAN_VOICE   0x000800
+#define SPAMSETTINGS_BOTNETSCAN_STRIPCC 0x001000
+#define SPAMSETTINGS_BOTNETCHARS        "jklm"
+#define SPAMSETTINGS_BOTNETEXCINDEX     3
+
+//CAPSSCAN
+#define SPAMSETTINGS_CAPSSCAN           0x002000
+#define SPAMSETTINGS_CAPSSCAN_OPS       0x004000
+#define SPAMSETTINGS_CAPSSCAN_VOICE     0x008000
+#define SPAMSETTINGS_CAPSCHARS          "nop"
+#define SPAMSETTINGS_CAPSEXCINDEX       4
+#define SPAMSETTINGS_CAPSPERCENTINDEX   0
+
+//DIGITSCAN
+#define SPAMSETTINGS_DIGITSCAN          0x010000
+#define SPAMSETTINGS_DIGITSCAN_OPS      0x020000
+#define SPAMSETTINGS_DIGITSCAN_VOICE    0x040000
+#define SPAMSETTINGS_DIGITCHARS         "qrs"
+#define SPAMSETTINGS_DIGITEXCINDEX      5
+#define SPAMSETTINGS_DIGITPERCENTINDEX  1
+
+
+#define SPAMSETTINGS_CHARS     SPAMSETTINGS_SPAMCHARS SPAMSETTINGS_FLOODCHARS SPAMSETTINGS_JOINCHARS SPAMSETTINGS_BOTNETCHARS SPAMSETTINGS_CAPSCHARS SPAMSETTINGS_DIGITCHARS
+#define SPAMSETTINGS_FLAGS              0x07ffff /* all flags that can be stored in the database */
+#define SPAMSETTINGS_EXCEPTINDEXES      6
+#define SPAMSETTINGS_SENSIBILITYINDEXES 2
+#define SPAMSETTINGS_PERCENTINDEXES     2
+
+//SCRIPT FLAGS
+#define SPAMSETTINGS_KICKEDBOTQUEUE     0x080000
+#define SPAMSETTINGS_ISTIMEBAN          0x100000
+#define SPAMSETTINGS_SETTIMEBAN         0x200000
 
 #define MAX_FLOOD_AMOUNT 300
 #define MIN_FLOOD_AMOUNT 2
 struct NeonSpamSettings {
     unsigned int flags;
     unsigned char spam_amount;
-    unsigned char flood_amount;
-    unsigned char flood_time;
-    unsigned char join_amount;
-    unsigned char join_time;
-    unsigned int exceptlevel : 10;
+    unsigned char sensibility_amount[SPAMSETTINGS_SENSIBILITYINDEXES];
+    unsigned char sensibility_time[SPAMSETTINGS_SENSIBILITYINDEXES];
+    unsigned int exceptlevel[SPAMSETTINGS_EXCEPTINDEXES];
+    unsigned char percent[SPAMSETTINGS_PERCENTINDEXES];
     
     //joinflood
     struct NeonSpamJoinNode *join_nodes;
@@ -68,11 +118,15 @@ struct NeonSpamSettings {
 * are bigger than MAX_FLOOD_TIME * flood_amount
 */
 
+#define NEONSPAMNODE_FLAG_CAPSSCAN_WARNED  0x01
+#define NEONSPAMNODE_FLAG_DIGITSCAN_WARNED 0x02
+
 struct NeonSpamNode {
     unsigned long lastmsg; //crc32 hash
     unsigned char spamcount;
     int floodpenalty;
     time_t last_penalty_update;
+    unsigned char flags;
 };
 
 struct NeonSpamJoinNode {
@@ -88,5 +142,6 @@ void loop_NeonSpam();
 void free_NeonSpam();
 
 void freeNeonSpamSettings(struct NeonSpamSettings *settings);
+char* convertNeonSpamSettingsToString(unsigned int flags, char *buffer);
 
 #endif
\ No newline at end of file