summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2006-07-19 10:47:46 +0000
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2006-07-19 10:47:46 +0000
commitdeccd865922c6d6b61f2251ae32bb1d5e99ba4e0 (patch)
tree71198b64131fbf2f63473d1737d803e0a9026d8f
parent8f1f87ce10097e05419dda9d24419047e463daf9 (diff)
Special checking for muppet providers that make their reverse resolution resolve back to the same reverse resolution.
*WHY* DO PEOPLE IN CONTROL OF THE RDNS RECORDS EVEN *ALLOW* SUCH LUNACY?! git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@4436 e03df62e-2008-0410-955e-edbf42e46eb7
-rw-r--r--src/dnsqueue.cpp19
1 files changed, 10 insertions, 9 deletions
diff --git a/src/dnsqueue.cpp b/src/dnsqueue.cpp
index e1a856c34..a3a558823 100644
--- a/src/dnsqueue.cpp
+++ b/src/dnsqueue.cpp
@@ -112,17 +112,18 @@ public:
}
if ((hostname != "") && (usr->registered != 7))
{
- if ((std::string((char*)inet_ntoa(usr->ip4)) == ip) && (hostname.length() < 65))
+ if ((std::string(inet_ntoa(usr->ip4)) == ip) && (hostname.length() < 65))
{
- strlcpy(usr->host,hostname.c_str(),64);
- strlcpy(usr->dhost,hostname.c_str(),64);
- /*address_cache::iterator address = addrcache.find(usr->ip4);
- if (address == addrcache.end())
+ if ((hostname.find_last_of(".in-addr.arpa") == hostname.length() - 1) && (hostname.find_last_of(".in-addr.arpa") != std::string::npos))
{
- log(DEBUG,"Caching hostname %s -> %s",(char*)inet_ntoa(usr->ip4),hostname.c_str());
- addrcache[usr->ip4] = new std::string(hostname);
- }*/
- WriteServ(usr->fd,"NOTICE Auth :*** Found your hostname");
+ WriteServ(usr->fd,"NOTICE Auth :*** Your ISP are muppets -- reverse resolution resolves back to same reverse .arpa domain (!)");
+ }
+ else
+ {
+ strlcpy(usr->host,hostname.c_str(),64);
+ strlcpy(usr->dhost,hostname.c_str(),64);
+ WriteServ(usr->fd,"NOTICE Auth :*** Found your hostname");
+ }
}
usr->dns_done = true;
return true;