X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_dnsbl.cpp;h=7fb652cf715ffa8ee7cd012398fa975dcc45b4b3;hb=b5e220008782b2d538cb8e6e3b1923af0c13fb99;hp=4598d62699bbad433864fbefe1d1f7a518a2e85d;hpb=b6dbd6caab62bc2c0d11ce5a45d511611eb9c2ef;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_dnsbl.cpp b/src/modules/m_dnsbl.cpp index 4598d6269..7fb652cf7 100644 --- a/src/modules/m_dnsbl.cpp +++ b/src/modules/m_dnsbl.cpp @@ -60,12 +60,8 @@ class DNSBLResolver : public Resolver } /* Note: This may be called multiple times for multiple A record results */ - virtual void OnLookupComplete(const std::string &result, unsigned int ttl, bool cached, int resultnum = 0) + virtual void OnLookupComplete(const std::string &result, unsigned int ttl, bool cached) { - /* for bitmask reply types, we arent interested in any but the first result (number 0) */ - if ((ConfEntry->type == DNSBLConfEntry::A_BITMASK) && (resultnum)) - return; - /* Check the user still exists */ if ((them) && (them == ServerInstance->SE->GetRef(theirfd))) { @@ -73,7 +69,7 @@ class DNSBLResolver : public Resolver if(result.length()) { unsigned int bitmask = 0, record = 0; - bool show = false, match = false; + bool match = false; in_addr resultip; inet_aton(result.c_str(), &resultip); @@ -117,6 +113,8 @@ class DNSBLResolver : public Resolver "*", them->GetIPString()); if (ServerInstance->XLines->AddLine(kl,NULL)) { + ServerInstance->SNO->WriteToSnoMask('x',"m_dnsbl added K:line on *@%s to expire on %s (%s).", + them->GetIPString(), ServerInstance->TimeString(kl->expiry).c_str(), reason.c_str()); ServerInstance->XLines->ApplyLines(); } else @@ -129,6 +127,8 @@ class DNSBLResolver : public Resolver "*", them->GetIPString()); if (ServerInstance->XLines->AddLine(gl,NULL)) { + ServerInstance->SNO->WriteToSnoMask('x',"m_dnsbl added G:line on *@%s to expire on %s (%s).", + them->GetIPString(), ServerInstance->TimeString(gl->expiry).c_str(), reason.c_str()); ServerInstance->XLines->ApplyLines(); } else @@ -141,6 +141,8 @@ class DNSBLResolver : public Resolver them->GetIPString()); if (ServerInstance->XLines->AddLine(zl,NULL)) { + ServerInstance->SNO->WriteToSnoMask('x',"m_dnsbl added Z:line on *@%s to expire on %s (%s).", + them->GetIPString(), ServerInstance->TimeString(zl->expiry).c_str(), reason.c_str()); ServerInstance->XLines->ApplyLines(); } else @@ -154,10 +156,7 @@ class DNSBLResolver : public Resolver break; } - if (show) - { - ServerInstance->SNO->WriteToSnoMask('A', "Connecting user %s detected as being on a DNS blacklist (%s) with result %d", them->GetFullRealHost().c_str(), ConfEntry->name.c_str(), bitmask); - } + ServerInstance->SNO->WriteGlobalSno('a', "Connecting user %s detected as being on a DNS blacklist (%s) with result %d", them->GetFullRealHost().c_str(), ConfEntry->name.c_str(), (ConfEntry->type==DNSBLConfEntry::A_BITMASK) ? bitmask : record); } else ConfEntry->stats_misses++; @@ -256,32 +255,36 @@ class ModuleDNSBL : public Module } e->banaction = str2banaction(MyConf->ReadValue("dnsbl", "action", i)); - e->duration = ServerInstance->Duration(MyConf->ReadValue("dnsbl", "duration", i)); + e->duration = ServerInstance->Duration(MyConf->ReadValue("dnsbl", "duration", "60", i)); /* Use portparser for record replies */ /* yeah, logic here is a little messy */ if ((e->bitmask <= 0) && (DNSBLConfEntry::A_BITMASK == e->type)) { - ServerInstance->SNO->WriteToSnoMask('A', "DNSBL(#%d): invalid bitmask",i); + ServerInstance->SNO->WriteGlobalSno('a', "DNSBL(#%d): invalid bitmask",i); } else if (e->name.empty()) { - ServerInstance->SNO->WriteToSnoMask('A', "DNSBL(#%d): Invalid name",i); + ServerInstance->SNO->WriteGlobalSno('a', "DNSBL(#%d): Invalid name",i); } else if (e->domain.empty()) { - ServerInstance->SNO->WriteToSnoMask('A', "DNSBL(#%d): Invalid domain",i); + ServerInstance->SNO->WriteGlobalSno('a', "DNSBL(#%d): Invalid domain",i); } else if (e->banaction == DNSBLConfEntry::I_UNKNOWN) { - ServerInstance->SNO->WriteToSnoMask('A', "DNSBL(#%d): Invalid banaction", i); + ServerInstance->SNO->WriteGlobalSno('a', "DNSBL(#%d): Invalid banaction", i); + } + else if (e->duration <= 0) + { + ServerInstance->SNO->WriteGlobalSno('a', "DNSBL(#%d): Invalid duration", i); } else { if (e->reason.empty()) { - ServerInstance->SNO->WriteToSnoMask('A', "DNSBL(#%d): empty reason, using defaults",i); + ServerInstance->SNO->WriteGlobalSno('a', "DNSBL(#%d): empty reason, using defaults",i); e->reason = "Your IP has been blacklisted."; } @@ -297,7 +300,7 @@ class ModuleDNSBL : public Module delete MyConf; } - virtual void OnRehash(User* user, const std::string ¶meter) + virtual void OnRehash(User* user) { ReadConf(); }