]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/xline.cpp
Remove check that very rarely equates to true
[user/henk/code/inspircd.git] / src / xline.cpp
index 86a6081f226ca2878c793f3043d30210145ca03a..830f6d7c6c58478acb6ededda74e9c4fc63be170 100644 (file)
@@ -36,6 +36,7 @@ using namespace std;
 #include "helperfuncs.h"
 #include "hashcomp.h"
 #include "typedefs.h"
+#include "configreader.h"
 #include "cull_list.h"
 
 extern ServerConfig *Config;
@@ -53,8 +54,8 @@ extern std::vector<userrec*> local_users;
  * very efficient. I have improved the efficiency of the algorithm in two ways:
  *
  * (1) There are now two lists of items for each linetype. One list holds temporary
- *     items, and the other list holds permenant items (ones which will expire).
- *     Items which are on the permenant list are NEVER checked at all by the
+ *     items, and the other list holds permanent items (ones which will expire).
+ *     Items which are on the permanent list are NEVER checked at all by the
  *     expire_lines() function.
  * (2) The temporary xline lists are always kept in strict numerical order, keyed by 
  *     current time + duration. This means that the line which is due to expire the
@@ -442,10 +443,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;
 }
@@ -457,16 +458,16 @@ 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;
 }
 
 
-void gline_set_creation_time(char* host, time_t create_time)
+void gline_set_creation_time(const char* host, time_t create_time)
 {
        for (std::vector<GLine>::iterator i = glines.begin(); i != glines.end(); i++)
        {
@@ -487,7 +488,7 @@ void gline_set_creation_time(char* host, time_t create_time)
        return ;        
 }
 
-void eline_set_creation_time(char* host, time_t create_time)
+void eline_set_creation_time(const char* host, time_t create_time)
 {
        for (std::vector<ELine>::iterator i = elines.begin(); i != elines.end(); i++)
        {
@@ -508,7 +509,7 @@ void eline_set_creation_time(char* host, time_t create_time)
        return;
 }
 
-void qline_set_creation_time(char* nick, time_t create_time)
+void qline_set_creation_time(const char* nick, time_t create_time)
 {
        for (std::vector<QLine>::iterator i = qlines.begin(); i != qlines.end(); i++)
        {
@@ -529,7 +530,7 @@ void qline_set_creation_time(char* nick, time_t create_time)
        return;
 }
 
-void zline_set_creation_time(char* ip, time_t create_time)
+void zline_set_creation_time(const char* ip, time_t create_time)
 {
        for (std::vector<ZLine>::iterator i = zlines.begin(); i != zlines.end(); i++)
        {
@@ -557,10 +558,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;
 }
@@ -572,10 +573,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;
 }
@@ -702,7 +703,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);
@@ -711,45 +712,50 @@ void apply_lines(const int What)
        }
 
        Goners->Apply();
-       delete Goners;
+       DELETE(Goners);
 }
 
-void stats_k(userrec* user)
+void stats_k(userrec* user, string_list &results)
 {
+       std::string sn = Config->ServerName;
        for (std::vector<KLine>::iterator i = klines.begin(); i != klines.end(); i++)
-               WriteServ(user->fd,"216 %s :%s %d %d %s :%s",user->nick,i->hostmask,i->set_time,i->duration,i->source,i->reason);
+               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++)
-               WriteServ(user->fd,"216 %s :%s %d %d %s :%s",user->nick,i->hostmask,i->set_time,i->duration,i->source,i->reason);
+               results.push_back(sn+" 216 "+user->nick+" :"+i->hostmask+" "+ConvToStr(i->set_time)+" "+ConvToStr(i->duration)+" "+i->source+" :"+i->reason);
 }
 
-void stats_g(userrec* user)
+void stats_g(userrec* user, string_list &results)
 {
+       std::string sn = Config->ServerName;
        for (std::vector<GLine>::iterator i = glines.begin(); i != glines.end(); i++)
-               WriteServ(user->fd,"223 %s :%s %d %d %s :%s",user->nick,i->hostmask,i->set_time,i->duration,i->source,i->reason);
+               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++)
-               WriteServ(user->fd,"223 %s :%s %d %d %s :%s",user->nick,i->hostmask,i->set_time,i->duration,i->source,i->reason);
+               results.push_back(sn+" 223 "+user->nick+" :"+i->hostmask+" "+ConvToStr(i->set_time)+" "+ConvToStr(i->duration)+" "+i->source+" :"+i->reason);
 }
 
-void stats_q(userrec* user)
+void stats_q(userrec* user, string_list &results)
 {
+       std::string sn = Config->ServerName;
        for (std::vector<QLine>::iterator i = qlines.begin(); i != qlines.end(); i++)
-               WriteServ(user->fd,"217 %s :%s %d %d %s :%s",user->nick,i->nick,i->set_time,i->duration,i->source,i->reason);
+               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++)
-               WriteServ(user->fd,"217 %s :%s %d %d %s :%s",user->nick,i->nick,i->set_time,i->duration,i->source,i->reason);
+               results.push_back(sn+" 217 "+user->nick+" :"+i->nick+" "+ConvToStr(i->set_time)+" "+ConvToStr(i->duration)+" "+i->source+" :"+i->reason);
 }
 
-void stats_z(userrec* user)
+void stats_z(userrec* user, string_list &results)
 {
+       std::string sn = Config->ServerName;
        for (std::vector<ZLine>::iterator i = zlines.begin(); i != zlines.end(); i++)
-               WriteServ(user->fd,"223 %s :%s %d %d %s :%s",user->nick,i->ipaddr,i->set_time,i->duration,i->source,i->reason);
+               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++)
-               WriteServ(user->fd,"223 %s :%s %d %d %s :%s",user->nick,i->ipaddr,i->set_time,i->duration,i->source,i->reason);
+               results.push_back(sn+" 223 "+user->nick+" :"+i->ipaddr+" "+ConvToStr(i->set_time)+" "+ConvToStr(i->duration)+" "+i->source+" :"+i->reason);
 }
 
-void stats_e(userrec* user)
+void stats_e(userrec* user, string_list &results)
 {
+       std::string sn = Config->ServerName;
        for (std::vector<ELine>::iterator i = elines.begin(); i != elines.end(); i++)
-               WriteServ(user->fd,"223 %s :%s %d %d %s :%s",user->nick,i->hostmask,i->set_time,i->duration,i->source,i->reason);
+               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++)
-               WriteServ(user->fd,"223 %s :%s %d %d %s :%s",user->nick,i->hostmask,i->set_time,i->duration,i->source,i->reason);
+               results.push_back(sn+" 223 "+user->nick+" :"+i->hostmask+" "+ConvToStr(i->set_time)+" "+ConvToStr(i->duration)+" "+i->source+" :"+i->reason);
 }