mirror of
https://github.com/inspircd/inspircd.git
synced 2025-03-10 11:09:04 -04:00
Change <security:operspywhois> to a tristate
This commit is contained in:
parent
13d719fe4c
commit
b01c718405
@ -686,10 +686,11 @@
|
||||
# the ircd. This may be set for security reasons or vanity reasons.
|
||||
customversion=""
|
||||
|
||||
# operspywhois: If this is set to yes, when a oper /whois 's a user,
|
||||
# it will show all channels the user is in including +s and +p
|
||||
# channels.
|
||||
operspywhois="no"
|
||||
# operspywhois: show opers (users/auspex) the +s channels a user is in. Values:
|
||||
# splitmsg Split with an explanatory message
|
||||
# yes Split with no explanatory message
|
||||
# no Do not show
|
||||
operspywhois="no"
|
||||
|
||||
# runasuser: If this is set, InspIRCd will attempt to setuid
|
||||
# to run as this user- allows binding of ports under 1024.
|
||||
|
@ -213,6 +213,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 };
|
||||
|
||||
/** This holds all the information in the config file,
|
||||
* it's indexed by tag name to a vector of key/values.
|
||||
@ -401,7 +402,7 @@ class CoreExport ServerConfig
|
||||
/** If this is enabled then operators will
|
||||
* see invisible (+i) channels in /whois.
|
||||
*/
|
||||
bool OperSpyWhois;
|
||||
OperSpyWhoisState OperSpyWhois;
|
||||
|
||||
/** True if raw I/O is being logged */
|
||||
bool RawLog;
|
||||
|
@ -21,7 +21,7 @@
|
||||
ServerConfig::ServerConfig()
|
||||
{
|
||||
WhoWasGroupSize = WhoWasMaxGroups = WhoWasMaxKeep = 0;
|
||||
RawLog = NoUserDns = OperSpyWhois = HideBans = HideSplits = UndernetMsgPrefix = NameOnlyModes = false;
|
||||
RawLog = NoUserDns = HideBans = HideSplits = UndernetMsgPrefix = NameOnlyModes = false;
|
||||
WildcardIPv6 = CycleHosts = InvBypassModes = true;
|
||||
dns_timeout = 5;
|
||||
MaxTargets = 20;
|
||||
@ -417,7 +417,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");
|
||||
@ -519,6 +518,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();
|
||||
}
|
||||
|
||||
|
@ -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"))
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user