Allow multiple allowmasks in link blocks, #679

This commit is contained in:
Adam 2013-11-21 15:52:38 -05:00
parent d96b9715d1
commit cc01e2144c
3 changed files with 8 additions and 5 deletions

View File

@ -29,7 +29,7 @@
# allowmask: Range of IP addresses to allow for this link.
# Can be a CIDR (see example).
allowmask="69.58.44.0/24"
allowmask="69.58.44.0/24 127.0.0.0/8"
# timeout: If defined, this option defines how long the server
# will wait to consider the connect attempt failed and try the

View File

@ -30,7 +30,7 @@ class Link : public refcountbase
std::string SendPass;
std::string RecvPass;
std::string Fingerprint;
std::string AllowMask;
std::vector<std::string> AllowMasks;
bool HiddenFromStats;
std::string Hook;
int Timeout;

View File

@ -227,8 +227,7 @@ void SpanningTreeUtilities::RefreshIPCache()
continue;
}
if (L->AllowMask.length())
ValidIPs.push_back(L->AllowMask);
std::copy(L->AllowMasks.begin(), L->AllowMasks.end(), std::back_inserter(ValidIPs));
irc::sockets::sockaddrs dummy;
bool ipvalid = irc::sockets::aptosa(L->IPAddr, L->Port, dummy);
@ -277,7 +276,11 @@ void SpanningTreeUtilities::ReadConfiguration()
reference<Link> L = new Link(tag);
std::string linkname = tag->getString("name");
L->Name = linkname.c_str();
L->AllowMask = tag->getString("allowmask");
irc::spacesepstream sep = tag->getString("allowmask");
for (std::string s; sep.GetToken(s);)
L->AllowMasks.push_back(s);
L->IPAddr = tag->getString("ipaddr");
L->Port = tag->getInt("port");
L->SendPass = tag->getString("sendpass", tag->getString("password"));