summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/modules/m_dnsbl.cpp29
1 files changed, 20 insertions, 9 deletions
diff --git a/src/modules/m_dnsbl.cpp b/src/modules/m_dnsbl.cpp
index b9e4545b5..a2964a0bd 100644
--- a/src/modules/m_dnsbl.cpp
+++ b/src/modules/m_dnsbl.cpp
@@ -27,9 +27,9 @@
class DNSBLConfEntry : public classbase
{
public:
- enum EnumBanaction { I_UNKNOWN, I_KILL, I_ZLINE, I_KLINE, I_GLINE, I_CIDENT };
+ enum EnumBanaction { I_UNKNOWN, I_KILL, I_ZLINE, I_KLINE, I_GLINE, I_MARK };
enum EnumType { A_RECORD, A_BITMASK };
- std::string name, domain, reason;
+ std::string name, ident, host, domain, reason;
EnumBanaction banaction;
EnumType type;
long duration;
@@ -107,10 +107,20 @@ class DNSBLResolver : public Resolver
ServerInstance->Users->QuitUser(them, std::string("Killed (") + reason + ")");
break;
}
- case DNSBLConfEntry::I_CIDENT:
+ case DNSBLConfEntry::I_MARK:
{
- them->WriteServ("304 " + them->nick + " :Your ident has been set to " + ConfEntry->name + " because you matched " + reason);
- them->ChangeIdent(ConfEntry->name.c_str());
+ 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());
+ }
+
+ 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());
+ }
+
break;
}
case DNSBLConfEntry::I_KLINE:
@@ -162,7 +172,7 @@ class DNSBLResolver : public Resolver
break;
}
- 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);
+ ServerInstance->SNO->WriteGlobalSno('a', "Connecting user %s detected as being on a DNS blacklist (%s) with result %d", them->GetFullRealHost().c_str(), ConfEntry->domain.c_str(), (ConfEntry->type==DNSBLConfEntry::A_BITMASK) ? bitmask : record);
}
else
ConfEntry->stats_misses++;
@@ -199,9 +209,8 @@ class ModuleDNSBL : public Module
return DNSBLConfEntry::I_ZLINE;
if(action.compare("GLINE")==0)
return DNSBLConfEntry::I_GLINE;
- if(action.compare("IDENT")==0)
- return DNSBLConfEntry::I_CIDENT;
-
+ if(action.compare("MARK")==0)
+ return DNSBLConfEntry::I_MARK;
return DNSBLConfEntry::I_UNKNOWN;
}
@@ -245,6 +254,8 @@ class ModuleDNSBL : public Module
DNSBLConfEntry *e = new DNSBLConfEntry();
e->name = MyConf->ReadValue("dnsbl", "name", i);
+ e->ident = MyConf->ReadValue("dnsbl", "ident", i);
+ e->host = MyConf->ReadValue("dnsbl", "host", i);
e->reason = MyConf->ReadValue("dnsbl", "reason", i);
e->domain = MyConf->ReadValue("dnsbl", "domain", i);