diff options
author | Adam <Adam@anope.org> | 2010-11-20 21:45:30 -0500 |
---|---|---|
committer | Adam <Adam@anope.org> | 2010-12-12 19:35:27 -0500 |
commit | 246f44b9888161aecefc81f0ff17ddd893287e3c (patch) | |
tree | b89607a9ad9c91914f292fc54cc32213a8d9f5c4 /src/operserv.cpp | |
parent | a85112172d842aa74aa5531788d383328d153e74 (diff) |
Added cs_mode, rewrote the old list mode code, and added CIDR support
Diffstat (limited to 'src/operserv.cpp')
-rw-r--r-- | src/operserv.cpp | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/operserv.cpp b/src/operserv.cpp index 5f6f8c2be..727432585 100644 --- a/src/operserv.cpp +++ b/src/operserv.cpp @@ -428,7 +428,18 @@ XLine *XLineManager::Check(User *u) if (!x->GetUser().empty() && !Anope::Match(u->GetIdent(), x->GetUser())) continue; - if (x->GetHost().empty() || (u->ip() && Anope::Match(u->ip.addr(), x->GetHost())) || Anope::Match(u->host, x->GetHost()) || (!u->chost.empty() && Anope::Match(u->chost, x->GetHost())) || (!u->vhost.empty() && Anope::Match(u->vhost, x->GetHost()))) + if (u->ip() && !x->GetHost().empty()) + { + try + { + cidr cidr_ip(x->GetHost()); + if (cidr_ip.match(u->ip)) + return x; + } + catch (const SocketException &) { } + } + + if (x->GetHost().empty() || (Anope::Match(u->host, x->GetHost()) || (!u->chost.empty() && Anope::Match(u->chost, x->GetHost())) || (!u->vhost.empty() && Anope::Match(u->vhost, x->GetHost())))) { OnMatch(u, x); return x; |