]> git.netwichtig.de Git - user/henk/code/inspircd.git/blob - include/xline.h
Added 'Extensible' class which allows modules to store custom data in objects
[user/henk/code/inspircd.git] / include / xline.h
1 #ifndef __XLINE_H
2 #define __XLINE_H
3
4 // include the common header files
5
6 #include <typeinfo>
7 #include <iostream>
8 #include <string>
9 #include <deque>
10 #include <sstream>
11 #include <vector>
12 #include "users.h"
13 #include "channels.h"
14
15
16 /** XLine is the base class for ban lines such as G lines and K lines.
17  */
18 class XLine : public classbase
19 {
20   public:
21
22         /** The time the line was added.
23          */
24         time_t set_time;
25         
26         /** The duration of the ban, or 0 if permenant
27          */
28         long duration;
29         
30         /** Source of the ban. This can be a servername or an oper nickname
31          */
32         char source[MAXBUF];
33         
34         /** Reason for the ban
35          */
36         char reason[MAXBUF];
37         
38         /** Number of times the core matches the ban, for statistics
39          */
40         long n_matches;
41         
42 };
43
44 /** KLine class
45  */
46 class KLine : public XLine
47 {
48   public:
49         /** Hostmask (ident@host) to match against
50          * May contain wildcards.
51          */
52         char hostmask[MAXBUF];
53 };
54
55 /** GLine class
56  */
57 class GLine : public XLine
58 {
59   public:
60         /** Hostmask (ident@host) to match against
61          * May contain wildcards.
62          */
63         char hostmask[MAXBUF];
64 };
65
66 /** ZLine class
67  */
68 class ZLine : public XLine
69 {
70   public:
71         /** IP Address (xx.yy.zz.aa) to match against
72          * May contain wildcards.
73          */
74         char ipaddr[MAXBUF];
75         /** Set if this is a global Z:line
76          * (e.g. it came from another server)
77          */
78         bool is_global;
79 };
80
81 /** QLine class
82  */
83 class QLine : public XLine
84 {
85   public:
86         /** Nickname to match against.
87          * May contain wildcards.
88          */
89         char nick[MAXBUF];
90         /** Set if this is a global Z:line
91          * (e.g. it came from another server)
92          */
93         bool is_global;
94 };
95
96 void read_xline_defaults();
97
98 void add_gline(long duration, char* source, char* reason, char* hostmask);
99 void add_qline(long duration, char* source, char* reason, char* nickname);
100 void add_zline(long duration, char* source, char* reason, char* ipaddr);
101 void add_kline(long duration, char* source, char* reason, char* hostmask);
102
103 bool del_gline(char* hostmask);
104 bool del_qline(char* nickname);
105 bool del_zline(char* ipaddr);
106 bool del_kline(char* hostmask);
107
108 char* matches_qline(const char* nick);
109 char* matches_gline(const char* host);
110 char* matches_zline(const char* ipaddr);
111 char* matches_kline(const char* host);
112
113 void expire_lines();
114 void apply_lines();
115
116 void stats_k(userrec* user);
117 void stats_g(userrec* user);
118 void stats_q(userrec* user);
119 void stats_z(userrec* user);
120
121 void gline_set_creation_time(char* host, time_t create_time);
122 void qline_set_creation_time(char* nick, time_t create_time);
123 void zline_set_creation_time(char* ip, time_t create_time);
124
125 bool zline_make_global(char* ipaddr);
126 bool qline_make_global(char* nickname);
127
128 void sync_xlines(serverrec* serv, char* tcp_host);
129
130 #endif
131
132