summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>2010-03-22 22:30:21 +0000
committerdanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>2010-03-22 22:30:21 +0000
commit950b9e70437ea1fe3ee5aafe8672fe3cbbe479ec (patch)
tree20b14ee26c89eb54e9cde6daad4cf24c079e2826 /src
parent19963bd452eac3c9fc52b3ee60fbf1a81efed7d3 (diff)
Change <security:operspywhois> to a tristate
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@12653 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src')
-rw-r--r--src/configreader.cpp11
-rw-r--r--src/whois.cpp13
2 files changed, 14 insertions, 10 deletions
diff --git a/src/configreader.cpp b/src/configreader.cpp
index c93e37e1f..79c70405c 100644
--- a/src/configreader.cpp
+++ b/src/configreader.cpp
@@ -21,7 +21,7 @@
ServerConfig::ServerConfig()
{
WhoWasGroupSize = WhoWasMaxGroups = WhoWasMaxKeep = 0;
- RawLog = NoUserDns = OperSpyWhois = HideBans = HideSplits = UndernetMsgPrefix = false;
+ RawLog = NoUserDns = HideBans = HideSplits = UndernetMsgPrefix = false;
WildcardIPv6 = CycleHosts = InvBypassModes = true;
dns_timeout = 5;
MaxTargets = 20;
@@ -476,7 +476,6 @@ void ServerConfig::Fill()
HideBans = security->getBool("hidebans");
HideWhoisServer = security->getString("hidewhois");
HideKillsServer = security->getString("hidekills");
- OperSpyWhois = security->getBool("operspywhois");
RestrictBannedUsers = security->getBool("restrictbannedusers", true);
GenericOper = security->getBool("genericoper");
NoUserDns = ConfValue("performance")->getBool("nouserdns");
@@ -588,6 +587,14 @@ void ServerConfig::Fill()
else
AnnounceInvites = ServerConfig::INVITE_ANNOUNCE_NONE;
+ v = security->getString("operspywhois");
+ if (v == "splitmsg")
+ OperSpyWhois = SPYWHOIS_SPLITMSG;
+ else if (v == "on" || v == "yes")
+ OperSpyWhois = SPYWHOIS_NEWLINE;
+ else
+ OperSpyWhois = SPYWHOIS_NONE;
+
Limits.Finalise();
}
diff --git a/src/whois.cpp b/src/whois.cpp
index 8f85d86cc..4aa5e4726 100644
--- a/src/whois.cpp
+++ b/src/whois.cpp
@@ -23,16 +23,13 @@ void InspIRCd::DoWhois(User* user, User* dest,unsigned long signon, unsigned lon
std::string cl = dest->ChannelList(user, false);
- if (cl.length())
- user->SplitChanList(dest,cl);
- if (IS_OPER(user) && ServerInstance->Config->OperSpyWhois)
+ user->SplitChanList(dest,cl);
+ if (user->HasPrivPermission("users/auspex") && ServerInstance->Config->OperSpyWhois != ServerConfig::SPYWHOIS_NONE)
{
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());
- user->SplitChanList(dest,scl);
- }
+ if (scl.length() && ServerInstance->Config->OperSpyWhois == ServerConfig::SPYWHOIS_SPLITMSG)
+ SendWhoisLine(user, dest, 336, "%s %s :is on private/secret channels:",user->nick.c_str(), dest->nick.c_str());
+ user->SplitChanList(dest,scl);
}
if (user != dest && !this->Config->HideWhoisServer.empty() && !user->HasPrivPermission("servers/auspex"))
{