From 0afcb5ce884359d7b9dded7b7ff47b262a7a5335 Mon Sep 17 00:00:00 2001 From: Jackmcbarn Date: Thu, 23 Dec 2010 14:50:11 -0500 Subject: Fix bug #113 --- include/configreader.h | 2 +- src/configreader.cpp | 2 +- src/whois.cpp | 13 ++++++++++--- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/include/configreader.h b/include/configreader.h index d2f5d2610..8748e57f9 100644 --- a/include/configreader.h +++ b/include/configreader.h @@ -216,7 +216,7 @@ class CoreExport ServerConfig /** Used to indicate who we announce invites to on a channel */ enum InviteAnnounceState { INVITE_ANNOUNCE_NONE, INVITE_ANNOUNCE_ALL, INVITE_ANNOUNCE_OPS, INVITE_ANNOUNCE_DYNAMIC }; - enum OperSpyWhoisState { SPYWHOIS_NONE, SPYWHOIS_NEWLINE, SPYWHOIS_SPLITMSG }; + enum OperSpyWhoisState { SPYWHOIS_NONE, SPYWHOIS_SINGLEMSG, SPYWHOIS_SPLITMSG }; /** This holds all the information in the config file, * it's indexed by tag name to a vector of key/values. diff --git a/src/configreader.cpp b/src/configreader.cpp index d6b479874..6435d43bd 100644 --- a/src/configreader.cpp +++ b/src/configreader.cpp @@ -591,7 +591,7 @@ void ServerConfig::Fill() if (v == "splitmsg") OperSpyWhois = SPYWHOIS_SPLITMSG; else if (v == "on" || v == "yes") - OperSpyWhois = SPYWHOIS_NEWLINE; + OperSpyWhois = SPYWHOIS_SINGLEMSG; else OperSpyWhois = SPYWHOIS_NONE; diff --git a/src/whois.cpp b/src/whois.cpp index 4aa5e4726..27b07c944 100644 --- a/src/whois.cpp +++ b/src/whois.cpp @@ -22,14 +22,21 @@ void InspIRCd::DoWhois(User* user, User* dest,unsigned long signon, unsigned lon } std::string cl = dest->ChannelList(user, false); + const ServerConfig::OperSpyWhoisState state = user->HasPrivPermission("users/auspex") ? ServerInstance->Config->OperSpyWhois : ServerConfig::SPYWHOIS_NONE; + + if (state == ServerConfig::SPYWHOIS_SINGLEMSG) + cl.append(dest->ChannelList(user, true)); user->SplitChanList(dest,cl); - if (user->HasPrivPermission("users/auspex") && ServerInstance->Config->OperSpyWhois != ServerConfig::SPYWHOIS_NONE) + + if (state == ServerConfig::SPYWHOIS_SPLITMSG) { std::string scl = dest->ChannelList(user, true); - if (scl.length() && ServerInstance->Config->OperSpyWhois == ServerConfig::SPYWHOIS_SPLITMSG) + if (scl.length()) + { SendWhoisLine(user, dest, 336, "%s %s :is on private/secret channels:",user->nick.c_str(), dest->nick.c_str()); - user->SplitChanList(dest,scl); + user->SplitChanList(dest,scl); + } } if (user != dest && !this->Config->HideWhoisServer.empty() && !user->HasPrivPermission("servers/auspex")) { -- cgit v1.2.3