723f1a26cf13ed6f9c422fd4fceb8dae59a4c07f
[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_TIME 200
30
31 struct NeonSpamSettings {
32     unsigned int flags;
33     unsigned char spam_amount;
34     unsigned char flood_amount;
35     unsigned char flood_time;
36     
37 };
38 /* PENALTY SYSTEM
39 * user gets MAX_FLOOD_TIME points per message
40 * points get removed each loop
41 * pounts to be removed each second:
42 *  MAX_FLOOD_TIME/flood_time
43
44 * the floodlimit is reached, if the penalty points 
45 * are bigger than MAX_FLOOD_TIME * flood_amount
46 */
47
48 struct NeonSpamNode {
49     unsigned long lastmsg; //crc32 hash
50     unsigned char spamcount;
51     int floodpenalty;
52     time_t last_penalty_update;
53 };
54
55 void init_NeonSpam();
56 void loop_NeonSpam();
57 void free_NeonSpam();
58
59 #endif