summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/configreader.h2
-rw-r--r--include/inspircd.h2
-rw-r--r--include/xline.h95
3 files changed, 66 insertions, 33 deletions
diff --git a/include/configreader.h b/include/configreader.h
index b95cdede5..a63e31d71 100644
--- a/include/configreader.h
+++ b/include/configreader.h
@@ -84,6 +84,8 @@ class ServerConfig : public Extensible
bool CheckOnce(char* tag, bool bail, userrec* user);
public:
+
+ InspIRCd* GetInstance();
/** This holds all the information in the config file,
* it's indexed by tag name to a vector of key/values.
diff --git a/include/inspircd.h b/include/inspircd.h
index 7808ad4e6..699d910dc 100644
--- a/include/inspircd.h
+++ b/include/inspircd.h
@@ -77,6 +77,7 @@ class serverstats : public classbase
}
};
+class XLineManager;
class InspIRCd : public classbase
{
@@ -132,6 +133,7 @@ class InspIRCd : public classbase
DNS* Res;
TimerManager* Timers;
command_table cmdlist;
+ XLineManager* XLines;
ModuleList modules;
FactoryList factory;
diff --git a/include/xline.h b/include/xline.h
index b04d2224d..f393abc76 100644
--- a/include/xline.h
+++ b/include/xline.h
@@ -124,6 +124,7 @@ class QLine : public XLine
};
class ServerConfig;
+class InspIRCd;
bool InitXLine(ServerConfig* conf, const char* tag);
bool DoneXLine(ServerConfig* conf, const char* tag);
@@ -133,39 +134,67 @@ bool DoQLine(ServerConfig* conf, const char* tag, char** entries, void** values,
bool DoKLine(ServerConfig* conf, const char* tag, char** entries, void** values, int* types);
bool DoELine(ServerConfig* conf, const char* tag, char** entries, void** values, int* types);
-bool add_gline(long duration, const char* source, const char* reason, const char* hostmask);
-bool add_qline(long duration, const char* source, const char* reason, const char* nickname);
-bool add_zline(long duration, const char* source, const char* reason, const char* ipaddr);
-bool add_kline(long duration, const char* source, const char* reason, const char* hostmask);
-bool add_eline(long duration, const char* source, const char* reason, const char* hostmask);
-
-bool del_gline(const char* hostmask);
-bool del_qline(const char* nickname);
-bool del_zline(const char* ipaddr);
-bool del_kline(const char* hostmask);
-bool del_eline(const char* hostmask);
-
-char* matches_qline(const char* nick);
-char* matches_gline(const char* host);
-char* matches_zline(const char* ipaddr);
-char* matches_kline(const char* host);
-char* matches_exception(const char* host);
-
-void expire_lines();
-void apply_lines(const int What);
-
-void stats_k(userrec* user, string_list &results);
-void stats_g(userrec* user, string_list &results);
-void stats_q(userrec* user, string_list &results);
-void stats_z(userrec* user, string_list &results);
-void stats_e(userrec* user, string_list &results);
-
-void gline_set_creation_time(const char* host, time_t create_time);
-void qline_set_creation_time(const char* nick, time_t create_time);
-void zline_set_creation_time(const char* ip, time_t create_time);
-void eline_set_creation_time(const char* host, time_t create_time);
+class XLineManager
+{
+ protected:
+ InspIRCd* ServerInstance;
+
+ static bool XLineManager::GSortComparison ( const GLine one, const GLine two );
+ static bool XLineManager::ESortComparison ( const ELine one, const ELine two );
+ static bool XLineManager::ZSortComparison ( const ZLine one, const ZLine two );
+ static bool XLineManager::KSortComparison ( const KLine one, const KLine two );
+ static bool XLineManager::QSortComparison ( const QLine one, const QLine two );
+ public:
+ /* Lists for temporary lines with an expiry time */
+ std::vector<KLine> klines;
+ std::vector<GLine> glines;
+ std::vector<ZLine> zlines;
+ std::vector<QLine> qlines;
+ std::vector<ELine> elines;
+
+ /* Seperate lists for perm XLines that isnt checked by expiry functions */
+ std::vector<KLine> pklines;
+ std::vector<GLine> pglines;
+ std::vector<ZLine> pzlines;
+ std::vector<QLine> pqlines;
+ std::vector<ELine> pelines;
+
+ XLineManager(InspIRCd* Instance);
+
+ bool add_gline(long duration, const char* source, const char* reason, const char* hostmask);
+ bool add_qline(long duration, const char* source, const char* reason, const char* nickname);
+ bool add_zline(long duration, const char* source, const char* reason, const char* ipaddr);
+ bool add_kline(long duration, const char* source, const char* reason, const char* hostmask);
+ bool add_eline(long duration, const char* source, const char* reason, const char* hostmask);
+
+ bool del_gline(const char* hostmask);
+ bool del_qline(const char* nickname);
+ bool del_zline(const char* ipaddr);
+ bool del_kline(const char* hostmask);
+ bool del_eline(const char* hostmask);
+
+ char* matches_qline(const char* nick);
+ char* matches_gline(const char* host);
+ char* matches_zline(const char* ipaddr);
+ char* matches_kline(const char* host);
+ char* matches_exception(const char* host);
+
+ void expire_lines();
+ void apply_lines(const int What);
+
+ void stats_k(userrec* user, string_list &results);
+ void stats_g(userrec* user, string_list &results);
+ void stats_q(userrec* user, string_list &results);
+ void stats_z(userrec* user, string_list &results);
+ void stats_e(userrec* user, string_list &results);
+
+ void gline_set_creation_time(const char* host, time_t create_time);
+ void qline_set_creation_time(const char* nick, time_t create_time);
+ void zline_set_creation_time(const char* ip, time_t create_time);
+ void eline_set_creation_time(const char* host, time_t create_time);
-bool zline_make_global(const char* ipaddr);
-bool qline_make_global(const char* nickname);
+ bool zline_make_global(const char* ipaddr);
+ bool qline_make_global(const char* nickname);
+};
#endif