00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __XLINE_H
00018 #define __XLINE_H
00019
00020
00021
00022 #include <typeinfo>
00023 #include <iostream>
00024 #include <string>
00025 #include <deque>
00026 #include <sstream>
00027 #include <vector>
00028 #include "users.h"
00029 #include "channels.h"
00030
00031
00034 class XLine : public classbase
00035 {
00036 public:
00037
00040 time_t set_time;
00041
00044 long duration;
00045
00048 char source[MAXBUF];
00049
00052 char reason[MAXBUF];
00053
00056 long n_matches;
00057
00058 };
00059
00062 class KLine : public XLine
00063 {
00064 public:
00068 char hostmask[MAXBUF];
00069 };
00070
00073 class GLine : public XLine
00074 {
00075 public:
00079 char hostmask[MAXBUF];
00080 };
00081
00082 class ELine : public XLine
00083 {
00084 public:
00088 char hostmask[MAXBUF];
00089 };
00090
00093 class ZLine : public XLine
00094 {
00095 public:
00099 char ipaddr[MAXBUF];
00103 bool is_global;
00104 };
00105
00108 class QLine : public XLine
00109 {
00110 public:
00114 char nick[MAXBUF];
00118 bool is_global;
00119 };
00120
00121 void read_xline_defaults();
00122
00123 void add_gline(long duration, const char* source, const char* reason, const char* hostmask);
00124 void add_qline(long duration, const char* source, const char* reason, const char* nickname);
00125 void add_zline(long duration, const char* source, const char* reason, const char* ipaddr);
00126 void add_kline(long duration, const char* source, const char* reason, const char* hostmask);
00127 void add_eline(long duration, const char* source, const char* reason, const char* hostmask);
00128
00129 bool del_gline(const char* hostmask);
00130 bool del_qline(const char* nickname);
00131 bool del_zline(const char* ipaddr);
00132 bool del_kline(const char* hostmask);
00133 bool del_eline(const char* hostmask);
00134
00135 char* matches_qline(const char* nick);
00136 char* matches_gline(const char* host);
00137 char* matches_zline(const char* ipaddr);
00138 char* matches_kline(const char* host);
00139 char* matches_exception(const char* host);
00140
00141 void expire_lines();
00142 void apply_lines();
00143
00144 void stats_k(userrec* user);
00145 void stats_g(userrec* user);
00146 void stats_q(userrec* user);
00147 void stats_z(userrec* user);
00148 void stats_e(userrec* user);
00149
00150 void gline_set_creation_time(char* host, time_t create_time);
00151 void qline_set_creation_time(char* nick, time_t create_time);
00152 void zline_set_creation_time(char* ip, time_t create_time);
00153
00154 bool zline_make_global(const char* ipaddr);
00155 bool qline_make_global(const char* nickname);
00156
00157 void sync_xlines(serverrec* serv, char* tcp_host);
00158
00159 #endif