diff options
Diffstat (limited to 'src/whois.cpp')
-rw-r--r-- | src/whois.cpp | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/whois.cpp b/src/whois.cpp index 341c8389f..b967fac25 100644 --- a/src/whois.cpp +++ b/src/whois.cpp @@ -21,7 +21,7 @@ void InspIRCd::DoWhois(User* user, User* dest,unsigned long signon, unsigned lon this->SendWhoisLine(user, dest, 378, "%s %s :is connecting from %s@%s %s", user->nick.c_str(), dest->nick.c_str(), dest->ident.c_str(), dest->host.c_str(), dest->GetIPString()); } - std::string cl = dest->ChannelList(user); + std::string cl = dest->ChannelList(user, false); if (cl.length()) { @@ -34,6 +34,22 @@ void InspIRCd::DoWhois(User* user, User* dest,unsigned long signon, unsigned lon this->SendWhoisLine(user, dest, 319, "%s %s :%s",user->nick.c_str(), dest->nick.c_str(), cl.c_str()); } } + if (IS_OPER(user) && ServerInstance->Config->OperSpyWhois) + { + std::string scl = dest->ChannelList(user, true); + if (scl.length()) + { + this->SendWhoisLine(user, dest, 336, "%s %s :is on private/secret channels:",user->nick.c_str(), dest->nick.c_str()); + if (scl.length() > 400) + { + user->SplitChanList(dest,scl); + } + else + { + this->SendWhoisLine(user, dest, 319, "%s %s :%s",user->nick.c_str(), dest->nick.c_str(), scl.c_str()); + } + } + } if (user != dest && *this->Config->HideWhoisServer && !user->HasPrivPermission("servers/auspex")) { this->SendWhoisLine(user, dest, 312, "%s %s %s :%s",user->nick.c_str(), dest->nick.c_str(), this->Config->HideWhoisServer, this->Config->Network); |