]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_dnsbl.cpp
This one too, grr
[user/henk/code/inspircd.git] / src / modules / m_dnsbl.cpp
index 5de6f2063218edd7e2e5429d9301ebe4d11d5281..cd37b6895e74af3fef6fc87334e93162876008eb 100644 (file)
 
 #include "inspircd.h"
 #include "xline.h"
-#include "dns.h"
-#include "users.h"
-#include "channels.h"
-#include "modules.h"
 
 #ifndef WINDOWS
 #include <sys/types.h>
@@ -50,12 +46,12 @@ class DNSBLConfEntry
 class DNSBLResolver : public Resolver
 {
        int theirfd;
-       userrec* them;
+       User* them;
        DNSBLConfEntry *ConfEntry;
 
  public:
 
-       DNSBLResolver(Module *me, InspIRCd *ServerInstance, const std::string &hostname, userrec* u, int userfd, DNSBLConfEntry *conf, bool &cached)
+       DNSBLResolver(Module *me, InspIRCd *ServerInstance, const std::string &hostname, User* u, int userfd, DNSBLConfEntry *conf, bool &cached)
                : Resolver(ServerInstance, hostname, DNS_QUERY_A, cached, me)
        {
                theirfd = userfd;
@@ -112,33 +108,46 @@ class DNSBLResolver : public Resolver
                                        {
                                                case DNSBLConfEntry::I_KILL:
                                                {
-                                                       userrec::QuitUser(ServerInstance, them, std::string("Killed (") + reason + ")");
+                                                       User::QuitUser(ServerInstance, them, std::string("Killed (") + reason + ")");
                                                        break;
                                                }
                                                case DNSBLConfEntry::I_KLINE:
                                                {
-                                                       std::string ban = std::string("*@") + them->GetIPString();
-                                                       if (show)
-                                                               ServerInstance->XLines->apply_lines(APPLY_KLINES);                                                              
-                                                       show = ServerInstance->XLines->add_kline(ConfEntry->duration, ServerInstance->Config->ServerName, reason.c_str(), ban.c_str());
-                                                       FOREACH_MOD(I_OnAddKLine,OnAddKLine(ConfEntry->duration, NULL, reason, ban));
+                                                       KLine* kl = new KLine(ServerInstance, ServerInstance->Time(), ConfEntry->duration, ServerInstance->Config->ServerName, reason.c_str(),
+                                                                       "*", them->GetIPString());
+                                                       if (ServerInstance->XLines->AddLine(kl))
+                                                       {
+                                                               ServerInstance->XLines->ApplyLines();
+                                                               FOREACH_MOD(I_OnAddKLine,OnAddKLine(ConfEntry->duration, NULL, reason, them->MakeHostIP()));
+                                                       }
+                                                       else
+                                                               delete kl;
                                                        break;
                                                }
                                                case DNSBLConfEntry::I_GLINE:
                                                {
-                                                       std::string ban = std::string("*@") + them->GetIPString();
-                                                       show = ServerInstance->XLines->add_gline(ConfEntry->duration, ServerInstance->Config->ServerName, reason.c_str(), ban.c_str());
-                                                       if (show)
-                                                               ServerInstance->XLines->apply_lines(APPLY_GLINES);
-                                                       FOREACH_MOD(I_OnAddGLine,OnAddGLine(ConfEntry->duration, NULL, reason, ban));
+                                                       GLine* gl = new GLine(ServerInstance, ServerInstance->Time(), ConfEntry->duration, ServerInstance->Config->ServerName, reason.c_str(),
+                                                                       "*", them->GetIPString());
+                                                       if (ServerInstance->XLines->AddLine(gl))
+                                                       {
+                                                               ServerInstance->XLines->ApplyLines();
+                                                               FOREACH_MOD(I_OnAddGLine,OnAddGLine(ConfEntry->duration, NULL, reason, them->MakeHostIP()));
+                                                       }
+                                                       else
+                                                               delete gl;
                                                        break;
                                                }
                                                case DNSBLConfEntry::I_ZLINE:
                                                {
-                                                       show = ServerInstance->XLines->add_zline(ConfEntry->duration, ServerInstance->Config->ServerName, reason.c_str(), them->GetIPString());
-                                                       if (show)
-                                                               ServerInstance->XLines->apply_lines(APPLY_ZLINES);
-                                                       FOREACH_MOD(I_OnAddZLine,OnAddZLine(ConfEntry->duration, NULL, reason, them->GetIPString()));
+                                                       ZLine* zl = new ZLine(ServerInstance, ServerInstance->Time(), ConfEntry->duration, ServerInstance->Config->ServerName, reason.c_str(),
+                                                                       them->GetIPString());
+                                                       if (ServerInstance->XLines->AddLine(zl))
+                                                       {
+                                                               ServerInstance->XLines->ApplyLines();
+                                                               FOREACH_MOD(I_OnAddZLine,OnAddZLine(ConfEntry->duration, NULL, reason, them->GetIPString()));
+                                                       }
+                                                       else 
+                                                               delete zl;
                                                        break;
                                                }
                                                case DNSBLConfEntry::I_UNKNOWN:
@@ -294,12 +303,12 @@ class ModuleDNSBL : public Module
                delete MyConf;
        }
 
-       virtual void OnRehash(userrec* user, const std::string &parameter)
+       virtual void OnRehash(User* user, const std::string &parameter)
        {
                ReadConf();
        }
 
-       virtual int OnUserRegister(userrec* user)
+       virtual int OnUserRegister(User* user)
        {
                /* only do lookups on local users */
                if (IS_LOCAL(user))
@@ -358,7 +367,7 @@ class ModuleDNSBL : public Module
                return 0;
        }
        
-       virtual int OnStats(char symbol, userrec* user, string_list &results)
+       virtual int OnStats(char symbol, User* user, string_list &results)
        {
                if (symbol != 'd')
                        return 0;