summaryrefslogtreecommitdiff
path: root/modules/m_dnsbl.cpp
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2017-05-17 08:51:57 -0400
committerAdam <Adam@anope.org>2017-05-17 08:51:57 -0400
commit087f1cb3596aeb05d08a6d9ea3b5afa2162b0029 (patch)
tree05b0358d9d75880037ee2ae51e7acb696ce7f766 /modules/m_dnsbl.cpp
parent010d20198e2b625461b1665b40b78853ffa6eeff (diff)
m_dnsbl: fix exempts, allow cidrs, default exempt 127.0.0.0/8
Diffstat (limited to 'modules/m_dnsbl.cpp')
-rw-r--r--modules/m_dnsbl.cpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/modules/m_dnsbl.cpp b/modules/m_dnsbl.cpp
index 6f315430d..900756694 100644
--- a/modules/m_dnsbl.cpp
+++ b/modules/m_dnsbl.cpp
@@ -99,7 +99,7 @@ class DNSBLResolver : public Request
class ModuleDNSBL : public Module
{
std::vector<Blacklist> blacklists;
- std::set<Anope::string> exempts;
+ std::set<cidr> exempts;
bool check_on_connect;
bool check_on_netburst;
bool add_to_akill;
@@ -146,7 +146,10 @@ class ModuleDNSBL : public Module
this->exempts.clear();
for (int i = 0; i < block->CountBlock("exempt"); ++i)
- this->exempts.insert(block->Get<Anope::string>("ip"));
+ {
+ Configuration::Block *bl = block->GetBlock("exempt", i);
+ this->exempts.insert(bl->Get<Anope::string>("ip"));
+ }
}
void OnUserConnect(User *user, bool &exempt) anope_override
@@ -162,8 +165,14 @@ class ModuleDNSBL : public Module
/* User doesn't have a valid IPv4 IP (ipv6/spoof/etc) */
return;
+ if (this->blacklists.empty())
+ return;
+
if (this->exempts.count(user->ip.addr()))
+ {
+ Log(LOG_DEBUG) << "User " << user->nick << " is exempt from dnsbl check - ip: " << user->ip.addr();
return;
+ }
const unsigned long &ip = user->ip.sa4.sin_addr.s_addr;
unsigned long reverse_ip = (ip << 24) | ((ip & 0xFF00) << 8) | ((ip & 0xFF0000) >> 8) | (ip >> 24);