X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_dnsbl.cpp;h=7ff0fcdc35458b4056995d7b6e252a1f27e52cd9;hb=02c6ce1ad09a7471a6b03dc00bac4b843d157489;hp=3c6260a72465305b6998245f87dac284de2f65c7;hpb=9e8368cd8be5b6174a298124b40d47b70ce6d6c6;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_dnsbl.cpp b/src/modules/m_dnsbl.cpp index 3c6260a72..7ff0fcdc3 100644 --- a/src/modules/m_dnsbl.cpp +++ b/src/modules/m_dnsbl.cpp @@ -11,11 +11,6 @@ * --------------------------------------------------- */ -#include -#include -#include -#include -#include #include "inspircd.h" #include "xline.h" #include "dns.h" @@ -23,6 +18,13 @@ #include "channels.h" #include "modules.h" +#ifndef WINDOWS +#include +#include +#include +#include +#endif + /* $ModDesc: Provides handling of DNS blacklists */ /* Class holding data for a single entry */ @@ -48,7 +50,8 @@ class DNSBLResolver : public Resolver userrec* them; DNSBLConfEntry *ConfEntry; - public: + public: + DNSBLResolver(Module *me, InspIRCd *ServerInstance, const std::string &hostname, userrec* u, int userfd, DNSBLConfEntry *conf, bool &cached) : Resolver(ServerInstance, hostname, DNS_QUERY_A, cached, me) { @@ -101,6 +104,8 @@ class DNSBLResolver : public Resolver 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)); break; @@ -109,12 +114,16 @@ class DNSBLResolver : public Resolver { 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)); 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())); break; } @@ -126,7 +135,9 @@ class DNSBLResolver : public Resolver } if (show) + { ServerInstance->WriteOpers("*** Connecting user %s detected as being on a DNS blacklist (%s) with result %d", them->GetFullRealHost(), ConfEntry->name.c_str(), bitmask); + } } else ConfEntry->stats_misses++; @@ -167,7 +178,7 @@ class ModuleDNSBL : public Module return DNSBLConfEntry::I_UNKNOWN; } public: - ModuleDNSBL(InspIRCd *Me) : Module::Module(Me) + ModuleDNSBL(InspIRCd *Me) : Module(Me) { ReadConf(); } @@ -212,7 +223,7 @@ class ModuleDNSBL : public Module e->reason = MyConf->ReadValue("dnsbl", "reason", i); e->domain = MyConf->ReadValue("dnsbl", "domain", i); e->banaction = str2banaction(MyConf->ReadValue("dnsbl", "action", i)); - e->duration = ServerInstance->Duration(MyConf->ReadValue("dnsbl", "duration", i).c_str()); + e->duration = ServerInstance->Duration(MyConf->ReadValue("dnsbl", "duration", i)); e->bitmask = MyConf->ReadInteger("dnsbl", "bitmask", i, false); /* yeah, logic here is a little messy */ @@ -220,11 +231,11 @@ class ModuleDNSBL : public Module { ServerInstance->WriteOpers("*** DNSBL(#%d): invalid bitmask",i); } - else if (e->name == "") + else if (e->name.empty()) { ServerInstance->WriteOpers("*** DNSBL(#%d): Invalid name",i); } - else if (e->domain == "") + else if (e->domain.empty()) { ServerInstance->WriteOpers("*** DNSBL(#%d): Invalid domain",i); } @@ -234,7 +245,7 @@ class ModuleDNSBL : public Module } else { - if (e->reason == "") + if (e->reason.empty()) { ServerInstance->WriteOpers("*** DNSBL(#%d): empty reason, using defaults",i); e->reason = "Your IP has been blacklisted."; @@ -360,7 +371,7 @@ class ModuleDNSBLFactory : public ModuleFactory }; -extern "C" void * init_module( void ) +extern "C" DllExport void * init_module( void ) { return new ModuleDNSBLFactory; }