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 const int APPLY_GLINES = 1;
00032 const int APPLY_KLINES = 2;
00033 const int APPLY_QLINES = 4;
00034 const int APPLY_ZLINES = 8;
00035 const int APPLY_ALL = APPLY_GLINES | APPLY_KLINES | APPLY_QLINES | APPLY_ZLINES;
00036
00039 class XLine : public classbase
00040 {
00041 public:
00042
00045 time_t set_time;
00046
00049 long duration;
00050
00053 char source[256];
00054
00057 char reason[MAXBUF];
00058
00061 long n_matches;
00062
00063 };
00064
00067 class KLine : public XLine
00068 {
00069 public:
00073 char hostmask[200];
00074 };
00075
00078 class GLine : public XLine
00079 {
00080 public:
00084 char hostmask[200];
00085 };
00086
00087 class ELine : public XLine
00088 {
00089 public:
00093 char hostmask[200];
00094 };
00095
00098 class ZLine : public XLine
00099 {
00100 public:
00104 char ipaddr[40];
00108 bool is_global;
00109 };
00110
00113 class QLine : public XLine
00114 {
00115 public:
00119 char nick[64];
00123 bool is_global;
00124 };
00125
00126 void read_xline_defaults();
00127
00128 void add_gline(long duration, const char* source, const char* reason, const char* hostmask);
00129 void add_qline(long duration, const char* source, const char* reason, const char* nickname);
00130 void add_zline(long duration, const char* source, const char* reason, const char* ipaddr);
00131 void add_kline(long duration, const char* source, const char* reason, const char* hostmask);
00132 void add_eline(long duration, const char* source, const char* reason, const char* hostmask);
00133
00134 bool del_gline(const char* hostmask);
00135 bool del_qline(const char* nickname);
00136 bool del_zline(const char* ipaddr);
00137 bool del_kline(const char* hostmask);
00138 bool del_eline(const char* hostmask);
00139
00140 char* matches_qline(const char* nick);
00141 char* matches_gline(const char* host);
00142 char* matches_zline(const char* ipaddr);
00143 char* matches_kline(const char* host);
00144 char* matches_exception(const char* host);
00145
00146 void expire_lines();
00147 void apply_lines(const int What);
00148
00149 void stats_k(userrec* user);
00150 void stats_g(userrec* user);
00151 void stats_q(userrec* user);
00152 void stats_z(userrec* user);
00153 void stats_e(userrec* user);
00154
00155 void gline_set_creation_time(char* host, time_t create_time);
00156 void qline_set_creation_time(char* nick, time_t create_time);
00157 void zline_set_creation_time(char* ip, time_t create_time);
00158 void eline_set_creation_time(char* host, time_t create_time);
00159
00160 bool zline_make_global(const char* ipaddr);
00161 bool qline_make_global(const char* nickname);
00162
00163 #endif