From d6fcf2726e4075fb323010e067964c84044cbf08 Mon Sep 17 00:00:00 2001 From: brain Date: Fri, 27 Apr 2007 17:55:08 +0000 Subject: Add support for hiding listmode lists such as +beI from unprivileged users. See bug #258 git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@6849 e03df62e-2008-0410-955e-edbf42e46eb7 --- src/configreader.cpp | 3 ++- src/mode.cpp | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/configreader.cpp b/src/configreader.cpp index dbed24ae5..2ebc21233 100644 --- a/src/configreader.cpp +++ b/src/configreader.cpp @@ -30,7 +30,7 @@ ServerConfig::ServerConfig(InspIRCd* Instance) : ServerInstance(Instance) *UserStats = *ModPath = *MyExecutable = *DisabledCommands = *PID = *SuffixQuit = '\0'; WhoWasGroupSize = WhoWasMaxGroups = WhoWasMaxKeep = 0; log_file = NULL; - NoUserDns = forcedebug = OperSpyWhois = nofork = HideBans = HideSplits = UndernetMsgPrefix = false; + HideModeLists = NoUserDns = forcedebug = OperSpyWhois = nofork = HideBans = HideSplits = UndernetMsgPrefix = false; CycleHosts = writelog = AllowHalfop = true; dns_timeout = DieDelay = 5; MaxTargets = 20; @@ -602,6 +602,7 @@ void ServerConfig::Read(bool bail, userrec* user) {"options", "ircumsgprefix","0", new ValueContainerBool (&this->UndernetMsgPrefix), DT_BOOLEAN, NoValidation}, {"options", "announceinvites", "1", new ValueContainerBool (&this->AnnounceInvites), DT_BOOLEAN, NoValidation}, {"options", "hostintopic", "1", new ValueContainerBool (&this->FullHostInTopic), DT_BOOLEAN, NoValidation}, + {"options", "hidemodes", "0", new ValueContainerBool (&this->HideModeLists), DT_BOOLEAN, NoValidation}, {"pid", "file", "", new ValueContainerChar (this->PID), DT_CHARPTR, NoValidation}, {"whowas", "groupsize", "10", new ValueContainerInt (&this->WhoWasGroupSize), DT_INTEGER, NoValidation}, {"whowas", "maxgroups", "10240", new ValueContainerInt (&this->WhoWasMaxGroups), DT_INTEGER, NoValidation}, diff --git a/src/mode.cpp b/src/mode.cpp index ef3801ab6..5e384ad9a 100644 --- a/src/mode.cpp +++ b/src/mode.cpp @@ -294,6 +294,12 @@ void ModeParser::Process(const char** parameters, int pcnt, userrec *user, bool continue; } + if (ServerInstance->Config->HideModeLists && (targetchannel->GetStatus(user) < STATUS_HOP)) + { + user->WriteServ("482 %s %s :Only half-operators and above may view the +%c list",user->nick, targetchannel->name, *mode++); + continue; + } + ModeHandler *mh = this->FindMode(*mode, MODETYPE_CHANNEL); bool display = true; -- cgit v1.2.3