]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/xline.cpp
Passing invalid instance to dns isnt a good idea
[user/henk/code/inspircd.git] / src / xline.cpp
index 3401ca4418e8d630f46a4cd52cea27cd1aced00e..d3821b528147c2a66b05c43782823d4064379c41 100644 (file)
@@ -39,14 +39,11 @@ using namespace std;
 #include "configreader.h"
 #include "cull_list.h"
 
-extern ServerConfig *Config;
+extern InspIRCd* ServerInstance;
 
 extern int MODCOUNT;
 extern std::vector<Module*> modules;
 extern std::vector<ircd_module*> factory;
-extern ServerConfig* Config;
-extern user_hash clientlist;
-extern std::vector<userrec*> local_users;
 
 /* Version two, now with optimized expiry!
  *
@@ -98,18 +95,18 @@ bool KSortComparison ( const KLine one, const KLine two );
 // this way these days, such as qlines against 
 // services nicks, etc.
 
-bool InitXLine(const char* tag)
+bool InitXLine(ServerConfig* conf, const char* tag)
 {
        return true;
 }
 
-bool DoneXLine(const char* tag)
+bool DoneXLine(ServerConfig* conf, const char* tag)
 {
        apply_lines(APPLY_ALL);
        return true;
 }
 
-bool DoZLine(const char* tag, char** entries, void** values, int* types)
+bool DoZLine(ServerConfig* conf, const char* tag, char** entries, void** values, int* types)
 {
        char* reason = (char*)values[0];
        char* ipmask = (char*)values[1];
@@ -119,7 +116,7 @@ bool DoZLine(const char* tag, char** entries, void** values, int* types)
        return true;
 }
 
-bool DoQLine(const char* tag, char** entries, void** values, int* types)
+bool DoQLine(ServerConfig* conf, const char* tag, char** entries, void** values, int* types)
 {
        char* reason = (char*)values[0];
        char* nick = (char*)values[1];
@@ -129,7 +126,7 @@ bool DoQLine(const char* tag, char** entries, void** values, int* types)
        return true;
 }
 
-bool DoKLine(const char* tag, char** entries, void** values, int* types)
+bool DoKLine(ServerConfig* conf, const char* tag, char** entries, void** values, int* types)
 {
        char* reason = (char*)values[0];
        char* host = (char*)values[1];
@@ -139,7 +136,7 @@ bool DoKLine(const char* tag, char** entries, void** values, int* types)
        return true;
 }
 
-bool DoELine(const char* tag, char** entries, void** values, int* types)
+bool DoELine(ServerConfig* conf, const char* tag, char** entries, void** values, int* types)
 {
        char* reason = (char*)values[0];
        char* host = (char*)values[1];
@@ -443,10 +440,10 @@ char* matches_gline(const char* host)
        if ((glines.empty()) && (pglines.empty()))
                return NULL;
        for (std::vector<GLine>::iterator i = glines.begin(); i != glines.end(); i++)
-               if (match(host,i->hostmask))
+               if (match(host,i->hostmask, true))
                        return i->reason;
        for (std::vector<GLine>::iterator i = pglines.begin(); i != pglines.end(); i++)
-               if (match(host,i->hostmask))
+               if (match(host,i->hostmask, true))
                        return i->reason;
        return NULL;
 }
@@ -458,10 +455,10 @@ char* matches_exception(const char* host)
        char host2[MAXBUF];
        snprintf(host2,MAXBUF,"*@%s",host);
        for (std::vector<ELine>::iterator i = elines.begin(); i != elines.end(); i++)
-               if ((match(host,i->hostmask)) || (match(host2,i->hostmask)))
+               if ((match(host,i->hostmask)) || (match(host2,i->hostmask, true)))
                        return i->reason;
        for (std::vector<ELine>::iterator i = pelines.begin(); i != pelines.end(); i++)
-               if ((match(host,i->hostmask)) || (match(host2,i->hostmask)))
+               if ((match(host,i->hostmask)) || (match(host2,i->hostmask, true)))
                        return i->reason;
        return NULL;
 }
@@ -558,10 +555,10 @@ char* matches_zline(const char* ipaddr)
        if ((zlines.empty()) && (pzlines.empty()))
                return NULL;
        for (std::vector<ZLine>::iterator i = zlines.begin(); i != zlines.end(); i++)
-               if (match(ipaddr,i->ipaddr))
+               if (match(ipaddr,i->ipaddr, true))
                        return i->reason;
        for (std::vector<ZLine>::iterator i = pzlines.begin(); i != pzlines.end(); i++)
-               if (match(ipaddr,i->ipaddr))
+               if (match(ipaddr,i->ipaddr, true))
                        return i->reason;
        return NULL;
 }
@@ -573,10 +570,10 @@ char* matches_kline(const char* host)
        if ((klines.empty()) && (pklines.empty()))
                return NULL;
        for (std::vector<KLine>::iterator i = klines.begin(); i != klines.end(); i++)
-               if (match(host,i->hostmask))
+               if (match(host,i->hostmask, true))
                        return i->reason;
        for (std::vector<KLine>::iterator i = pklines.begin(); i != pklines.end(); i++)
-               if (match(host,i->hostmask))
+               if (match(host,i->hostmask, true))
                        return i->reason;
        return NULL;
 }
@@ -667,7 +664,7 @@ void apply_lines(const int What)
 
        CullList* Goners = new CullList();
        char* check = NULL;
-       for (std::vector<userrec*>::const_iterator u2 = local_users.begin(); u2 != local_users.end(); u2++)
+       for (std::vector<userrec*>::const_iterator u2 = ServerInstance->local_users.begin(); u2 != ServerInstance->local_users.end(); u2++)
        {
                userrec* u = (userrec*)(*u2);
                u->MakeHost(host);
@@ -703,7 +700,7 @@ void apply_lines(const int What)
                }
                if ((What & APPLY_ZLINES) && (zlines.size() || pzlines.size()))
                {
-                       if ((check = matches_zline((char*)inet_ntoa(u->ip4))))
+                       if ((check = matches_zline(u->GetIPString())))
                        {
                                snprintf(reason,MAXBUF,"Z-Lined: %s",check);
                                Goners->AddItem(u,reason);
@@ -717,7 +714,7 @@ void apply_lines(const int What)
 
 void stats_k(userrec* user, string_list &results)
 {
-       std::string sn = Config->ServerName;
+       std::string sn = ServerInstance->Config->ServerName;
        for (std::vector<KLine>::iterator i = klines.begin(); i != klines.end(); i++)
                results.push_back(sn+" 216 "+user->nick+" :"+i->hostmask+" "+ConvToStr(i->set_time)+" "+ConvToStr(i->duration)+" "+i->source+" :"+i->reason);
        for (std::vector<KLine>::iterator i = pklines.begin(); i != pklines.end(); i++)
@@ -726,7 +723,7 @@ void stats_k(userrec* user, string_list &results)
 
 void stats_g(userrec* user, string_list &results)
 {
-       std::string sn = Config->ServerName;
+       std::string sn = ServerInstance->Config->ServerName;
        for (std::vector<GLine>::iterator i = glines.begin(); i != glines.end(); i++)
                results.push_back(sn+" 223 "+user->nick+" :"+i->hostmask+" "+ConvToStr(i->set_time)+" "+ConvToStr(i->duration)+" "+i->source+" :"+i->reason);
        for (std::vector<GLine>::iterator i = pglines.begin(); i != pglines.end(); i++)
@@ -735,7 +732,7 @@ void stats_g(userrec* user, string_list &results)
 
 void stats_q(userrec* user, string_list &results)
 {
-       std::string sn = Config->ServerName;
+       std::string sn = ServerInstance->Config->ServerName;
        for (std::vector<QLine>::iterator i = qlines.begin(); i != qlines.end(); i++)
                results.push_back(sn+" 217 "+user->nick+" :"+i->nick+" "+ConvToStr(i->set_time)+" "+ConvToStr(i->duration)+" "+i->source+" :"+i->reason);
        for (std::vector<QLine>::iterator i = pqlines.begin(); i != pqlines.end(); i++)
@@ -744,7 +741,7 @@ void stats_q(userrec* user, string_list &results)
 
 void stats_z(userrec* user, string_list &results)
 {
-       std::string sn = Config->ServerName;
+       std::string sn = ServerInstance->Config->ServerName;
        for (std::vector<ZLine>::iterator i = zlines.begin(); i != zlines.end(); i++)
                results.push_back(sn+" 223 "+user->nick+" :"+i->ipaddr+" "+ConvToStr(i->set_time)+" "+ConvToStr(i->duration)+" "+i->source+" :"+i->reason);
        for (std::vector<ZLine>::iterator i = pzlines.begin(); i != pzlines.end(); i++)
@@ -753,7 +750,7 @@ void stats_z(userrec* user, string_list &results)
 
 void stats_e(userrec* user, string_list &results)
 {
-       std::string sn = Config->ServerName;
+       std::string sn = ServerInstance->Config->ServerName;
        for (std::vector<ELine>::iterator i = elines.begin(); i != elines.end(); i++)
                results.push_back(sn+" 223 "+user->nick+" :"+i->hostmask+" "+ConvToStr(i->set_time)+" "+ConvToStr(i->duration)+" "+i->source+" :"+i->reason);
        for (std::vector<ELine>::iterator i = pelines.begin(); i != pelines.end(); i++)