1
0
mirror of https://github.com/anope/anope.git synced 2026-07-06 15:13:13 +02:00

Make sockaddrs/cidr not throw on invalid ips to give us an easier/cheaper way to test for a valid IP

This commit is contained in:
Adam
2013-05-08 09:50:43 -04:00
parent 6859decfb8
commit 9b07e163c0
16 changed files with 212 additions and 244 deletions
+10 -8
View File
@@ -143,14 +143,15 @@ class BahamutIRCdProto : public IRCDProto
return;
/* ZLine if we can instead */
if (x->GetUser() == "*" && x->GetHost().find_first_not_of("0123456789:.") == Anope::string::npos)
try
if (x->GetUser() == "*")
{
sockaddrs a(x->GetHost());
if (a.valid())
{
sockaddrs(x->GetHost());
IRCD->SendSZLineDel(x);
return;
}
catch (const SocketException &) { }
}
UplinkSocket::Message() << "RAKILL " << x->GetHost() << " " << x->GetUser();
}
@@ -214,14 +215,15 @@ class BahamutIRCdProto : public IRCDProto
}
/* ZLine if we can instead */
if (x->GetUser() == "*" && x->GetHost().find_first_not_of("0123456789:.") == Anope::string::npos)
try
if (x->GetUser() == "*")
{
sockaddrs a(x->GetHost());
if (a.valid())
{
sockaddrs(x->GetHost());
IRCD->SendSZLine(u, x);
return;
}
catch (const SocketException &) { }
}
// Calculate the time left before this would expire, capping it at 2 days
time_t timeleft = x->expires - Anope::CurTime;
+10 -8
View File
@@ -80,14 +80,15 @@ class InspIRCdProto : public IRCDProto
return;
/* ZLine if we can instead */
if (x->GetUser() == "*" && x->GetHost().find_first_not_of("0123456789:.") == Anope::string::npos)
try
if (x->GetUser() == "*")
{
sockaddrs a(x->GetHost());
if (a.valid())
{
sockaddrs(x->GetHost());
IRCD->SendSZLineDel(x);
return;
}
catch (const SocketException &) { }
}
UplinkSocket::Message(OperServ) << "GLINE " << x->mask;
}
@@ -134,14 +135,15 @@ class InspIRCdProto : public IRCDProto
}
/* ZLine if we can instead */
if (x->GetUser() == "*" && x->GetHost().find_first_not_of("0123456789:.") == Anope::string::npos)
try
if (x->GetUser() == "*")
{
sockaddrs a(x->GetHost());
if (a.valid())
{
sockaddrs(x->GetHost());
IRCD->SendSZLine(u, x);
return;
}
catch (const SocketException &) { }
}
// Calculate the time left before this would expire, capping it at 2 days
time_t timeleft = x->expires - Anope::CurTime;
+5 -4
View File
@@ -180,14 +180,15 @@ class InspIRCd12Proto : public IRCDProto
}
/* ZLine if we can instead */
if (x->GetUser() == "*" && x->GetHost().find_first_not_of("0123456789:.") == Anope::string::npos)
try
if (x->GetUser() == "*")
{
sockaddrs addr(x->GetHost());
if (addr.valid())
{
sockaddrs(x->GetHost());
IRCD->SendSZLine(u, x);
return;
}
catch (const SocketException &) { }
}
SendAddLine("G", x->GetUser() + "@" + x->GetHost(), timeleft, x->by, x->GetReason());
}
+13 -15
View File
@@ -46,14 +46,15 @@ class UnrealIRCdProto : public IRCDProto
return;
/* ZLine if we can instead */
if (x->GetUser() == "*" && x->GetHost().find_first_not_of("0123456789:.") == Anope::string::npos)
try
if (x->GetUser() == "*")
{
sockaddrs a(x->GetHost());
if (a.valid())
{
sockaddrs(x->GetHost());
IRCD->SendSZLineDel(x);
return;
}
catch (const SocketException &) { }
}
UplinkSocket::Message() << "TKL - G " << x->GetUser() << " " << x->GetHost() << " " << x->by;
}
@@ -108,14 +109,15 @@ class UnrealIRCdProto : public IRCDProto
}
/* ZLine if we can instead */
if (x->GetUser() == "*" && x->GetHost().find_first_not_of("0123456789:.") == Anope::string::npos)
try
if (x->GetUser() == "*")
{
sockaddrs a(x->GetHost());
if (a.valid())
{
sockaddrs(x->GetHost());
IRCD->SendSZLine(u, x);
return;
}
catch (const SocketException &) { }
}
// Calculate the time left before this would expire, capping it at 2 days
time_t timeleft = x->expires - Anope::CurTime;
@@ -786,13 +788,9 @@ struct IRCDMessageNick : IRCDMessage
Anope::string decoded_ip;
Anope::B64Decode(params[9], decoded_ip);
try
{
sockaddrs ip_addr;
ip_addr.ntop(params[9].length() == 8 ? AF_INET : AF_INET6, decoded_ip.c_str());
ip = ip_addr.addr();
}
catch (const SocketException &ex) { }
sockaddrs ip_addr;
ip_addr.ntop(params[9].length() == 8 ? AF_INET : AF_INET6, decoded_ip.c_str());
ip = ip_addr.addr();
}
Anope::string vhost = params[8];