00001 #ifndef __XLINE_H
00002 #define __XLINE_H
00003
00004
00005
00006 #include <typeinfo>
00007 #include <iostream>
00008 #include <string>
00009 #include <deque>
00010 #include <sstream>
00011 #include <vector>
00012 #include "users.h"
00013 #include "channels.h"
00014
00015
00018 class XLine : public classbase
00019 {
00020 public:
00021
00024 time_t set_time;
00025
00028 long duration;
00029
00032 char source[MAXBUF];
00033
00036 char reason[MAXBUF];
00037
00040 long n_matches;
00041
00042 };
00043
00046 class KLine : public XLine
00047 {
00048 public:
00052 char hostmask[MAXBUF];
00053 };
00054
00057 class GLine : public XLine
00058 {
00059 public:
00063 char hostmask[MAXBUF];
00064 };
00065
00068 class ZLine : public XLine
00069 {
00070 public:
00074 char ipaddr[MAXBUF];
00075 };
00076
00079 class QLine : public XLine
00080 {
00081 public:
00085 char nick[MAXBUF];
00086 };
00087
00088 void read_xline_defaults();
00089
00090 void add_gline(long duration, char* source, char* reason, char* hostmask);
00091 void add_qline(long duration, char* source, char* reason, char* nickname);
00092 void add_zline(long duration, char* source, char* reason, char* ipaddr);
00093 void add_kline(long duration, char* source, char* reason, char* hostmask);
00094
00095 bool del_gline(char* hostmask);
00096 bool del_qline(char* nickname);
00097 bool del_zline(char* ipaddr);
00098 bool del_kline(char* hostmask);
00099
00100 char* matches_qline(const char* nick);
00101 char* matches_gline(const char* host);
00102 char* matches_zline(const char* ipaddr);
00103 char* matches_kline(const char* host);
00104
00105 void expire_lines();
00106 void apply_lines();
00107
00108 void stats_k(userrec* user);
00109 void stats_g(userrec* user);
00110 void stats_q(userrec* user);
00111 void stats_z(userrec* user);
00112
00113 void gline_set_creation_time(char* host, time_t create_time);
00114 void qline_set_creation_time(char* nick, time_t create_time);
00115 void zline_set_creation_time(char* ip, time_t create_time);
00116
00117 #endif
00118