added cmd_set for NeonSpam
[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     
43 };
44 /* PENALTY SYSTEM
45 * user gets MAX_FLOOD_TIME points per message
46 * points get removed each loop
47 * pounts to be removed each second:
48 *  MAX_FLOOD_TIME/flood_time
49
50 * the floodlimit is reached, if the penalty points 
51 * are bigger than MAX_FLOOD_TIME * flood_amount
52 */
53
54 struct NeonSpamNode {
55     unsigned long lastmsg; //crc32 hash
56     unsigned char spamcount;
57     int floodpenalty;
58     time_t last_penalty_update;
59 };
60
61 void init_NeonSpam();
62 void loop_NeonSpam();
63 void free_NeonSpam();
64
65 #endif