summaryrefslogtreecommitdiff
path: root/src/whois.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/whois.cpp')
-rw-r--r--src/whois.cpp18
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);