From a068c47d71e9a922b145b7552b3a64d638c92171 Mon Sep 17 00:00:00 2001 From: danieldg Date: Fri, 18 Sep 2009 17:07:13 +0000 Subject: Separate spy channels [jackmcbarn] git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11747 e03df62e-2008-0410-955e-edbf42e46eb7 --- src/whois.cpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'src/whois.cpp') 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); -- cgit v1.2.3