X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_dnsbl.cpp;h=becc7a6e85d59762b01886b1d0c544d8386d1d4a;hb=6d39615998dee7b30565d34a9f209b569678fb6a;hp=9e0b89fc398b0787eb5648d64c17dd862aac7e07;hpb=8790551dc182cd8804ee7d8ef89ccb31067cc2a4;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_dnsbl.cpp b/src/modules/m_dnsbl.cpp index 9e0b89fc3..becc7a6e8 100644 --- a/src/modules/m_dnsbl.cpp +++ b/src/modules/m_dnsbl.cpp @@ -25,8 +25,6 @@ #include "xline.h" #include "modules/dns.h" -/* $ModDesc: Provides handling of DNS blacklists */ - /* Class holding data for a single entry */ class DNSBLConfEntry { @@ -61,7 +59,7 @@ class DNSBLResolver : public DNS::Request } /* Note: This may be called multiple times for multiple A record results */ - void OnLookupComplete(const DNS::Query *r) + void OnLookupComplete(const DNS::Query *r) CXX11_OVERRIDE { /* Check the user still exists */ LocalUser* them = (LocalUser*)ServerInstance->FindUUID(theiruid); @@ -120,13 +118,13 @@ class DNSBLResolver : public DNS::Request if (!ConfEntry->ident.empty()) { them->WriteServ("304 " + them->nick + " :Your ident has been set to " + ConfEntry->ident + " because you matched " + reason); - them->ChangeIdent(ConfEntry->ident.c_str()); + them->ChangeIdent(ConfEntry->ident); } if (!ConfEntry->host.empty()) { them->WriteServ("304 " + them->nick + " :Your host has been set to " + ConfEntry->host + " because you matched " + reason); - them->ChangeDisplayedHost(ConfEntry->host.c_str()); + them->ChangeDisplayedHost(ConfEntry->host); } nameExt.set(them, ConfEntry->name); @@ -188,7 +186,7 @@ class DNSBLResolver : public DNS::Request ConfEntry->stats_misses++; } - void OnError(const DNS::Query *q) + void OnError(const DNS::Query *q) CXX11_OVERRIDE { LocalUser* them = (LocalUser*)ServerInstance->FindUUID(theiruid); if (!them) @@ -231,21 +229,19 @@ class ModuleDNSBL : public Module public: ModuleDNSBL() : DNS(this, "DNS"), nameExt("dnsbl_match", this), countExt("dnsbl_pending", this) { } - void init() + void init() CXX11_OVERRIDE { ReadConf(); ServerInstance->Modules->AddService(nameExt); ServerInstance->Modules->AddService(countExt); - Implementation eventlist[] = { I_OnRehash, I_OnSetUserIP, I_OnStats, I_OnSetConnectClass, I_OnCheckReady }; - ServerInstance->Modules->Attach(eventlist, this, sizeof(eventlist)/sizeof(Implementation)); } - virtual ~ModuleDNSBL() + ~ModuleDNSBL() { ClearEntries(); } - Version GetVersion() + Version GetVersion() CXX11_OVERRIDE { return Version("Provides handling of DNS blacklists", VF_VENDOR); } @@ -293,7 +289,7 @@ class ModuleDNSBL : public Module } e->banaction = str2banaction(tag->getString("action")); - e->duration = InspIRCd::Duration(tag->getString("duration", "60")); + e->duration = tag->getDuration("duration", 60, 1); /* Use portparser for record replies */ @@ -318,11 +314,6 @@ class ModuleDNSBL : public Module std::string location = tag->getTagLocation(); ServerInstance->SNO->WriteGlobalSno('a', "DNSBL(%s): Invalid banaction", location.c_str()); } - else if (e->duration <= 0) - { - std::string location = tag->getTagLocation(); - ServerInstance->SNO->WriteGlobalSno('a', "DNSBL(%s): Invalid duration", location.c_str()); - } else { if (e->reason.empty()) @@ -342,12 +333,12 @@ class ModuleDNSBL : public Module } } - void OnRehash(User* user) + void OnRehash(User* user) CXX11_OVERRIDE { ReadConf(); } - void OnSetUserIP(LocalUser* user) + void OnSetUserIP(LocalUser* user) CXX11_OVERRIDE { if ((user->exempt) || (user->client_sa.sa.sa_family != AF_INET) || !DNS) return; @@ -358,19 +349,15 @@ class ModuleDNSBL : public Module return; } else - ServerInstance->Logs->Log("m_dnsbl", LOG_DEBUG, "User has no connect class in OnSetUserIP"); - - unsigned char a, b, c, d; - char reversedipbuf[128]; - std::string reversedip; + ServerInstance->Logs->Log(MODNAME, LOG_DEBUG, "User has no connect class in OnSetUserIP"); - d = (unsigned char) (user->client_sa.in4.sin_addr.s_addr >> 24) & 0xFF; - c = (unsigned char) (user->client_sa.in4.sin_addr.s_addr >> 16) & 0xFF; - b = (unsigned char) (user->client_sa.in4.sin_addr.s_addr >> 8) & 0xFF; - a = (unsigned char) user->client_sa.in4.sin_addr.s_addr & 0xFF; + unsigned int a, b, c, d; + d = (unsigned int) (user->client_sa.in4.sin_addr.s_addr >> 24) & 0xFF; + c = (unsigned int) (user->client_sa.in4.sin_addr.s_addr >> 16) & 0xFF; + b = (unsigned int) (user->client_sa.in4.sin_addr.s_addr >> 8) & 0xFF; + a = (unsigned int) user->client_sa.in4.sin_addr.s_addr & 0xFF; - snprintf(reversedipbuf, 128, "%d.%d.%d.%d", d, c, b, a); - reversedip = std::string(reversedipbuf); + const std::string reversedip = ConvToStr(d) + "." + ConvToStr(c) + "." + ConvToStr(b) + "." + ConvToStr(a); countExt.set(user, DNSBLConfEntries.size()); @@ -389,7 +376,7 @@ class ModuleDNSBL : public Module catch (DNS::Exception &ex) { delete r; - ServerInstance->Logs->Log("m_dnsbl", LOG_DEBUG, std::string(ex.GetReason())); + ServerInstance->Logs->Log(MODNAME, LOG_DEBUG, std::string(ex.GetReason())); } if (user->quitting) @@ -397,7 +384,7 @@ class ModuleDNSBL : public Module } } - ModResult OnSetConnectClass(LocalUser* user, ConnectClass* myclass) + ModResult OnSetConnectClass(LocalUser* user, ConnectClass* myclass) CXX11_OVERRIDE { std::string dnsbl; if (!myclass->config->readString("dnsbl", dnsbl)) @@ -409,14 +396,14 @@ class ModuleDNSBL : public Module return MOD_RES_DENY; } - ModResult OnCheckReady(LocalUser *user) + ModResult OnCheckReady(LocalUser *user) CXX11_OVERRIDE { if (countExt.get(user)) return MOD_RES_DENY; return MOD_RES_PASSTHRU; } - ModResult OnStats(char symbol, User* user, string_list &results) + ModResult OnStats(char symbol, User* user, string_list &results) CXX11_OVERRIDE { if (symbol != 'd') return MOD_RES_PASSTHRU;