use channel settings for spam/flood scanner
[NeonServV5.git] / src / bot_NeonSpam.h
1 /* bot_NeonSpam.h - NeonServ v5.1
2  * Copyright (C) 2011  Philipp Kreil (pk910)
3  * 
4  * This program is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  * 
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  * 
14  * You should have received a copy of the GNU General Public License 
15  * along with this program. If not, see <http://www.gnu.org/licenses/>. 
16  */
17
18 #ifndef _bot_NeonSpam_h
19 #define _bot_NeonSpam_h
20
21 #include "main.h"
22
23 #define SPAMSETTINGS_SPAMSCAN  0x01
24 #define SPAMSETTINGS_FLOODSCAN 0x02
25 #define SPAMSETTINGS_JOINSCAN  0x04
26 #define SPAMSETTINGS_SCANOPS   0x08
27 #define SPAMSETTINGS_SCANVOICE 0x10
28
29 #define MAX_FLOOD_AMOUNT 300
30 #define MIN_FLOOD_AMOUNT 2
31 #define MAX_FLOOD_TIME   200
32
33 #define MAX_JOIN_AMOUNT 300
34 #define MIN_JOIN_AMOUNT 2
35 #define MAX_JOIN_TIME   200
36
37 struct NeonSpamSettings {
38     unsigned int flags;
39     unsigned char spam_amount;
40     unsigned char flood_amount;
41     unsigned char flood_time;
42     unsigned char join_amount;
43     unsigned char join_time;
44     
45 };
46 /* PENALTY SYSTEM
47 * user gets MAX_FLOOD_TIME points per message
48 * points get removed each loop
49 * pounts to be removed each second:
50 *  MAX_FLOOD_TIME/flood_time
51
52 * the floodlimit is reached, if the penalty points 
53 * are bigger than MAX_FLOOD_TIME * flood_amount
54 */
55
56 struct NeonSpamNode {
57     unsigned long lastmsg; //crc32 hash
58     unsigned char spamcount;
59     int floodpenalty;
60     time_t last_penalty_update;
61 };
62
63 void init_NeonSpam();
64 void loop_NeonSpam();
65 void free_NeonSpam();
66
67 #endif