diff options
author | special <special@e03df62e-2008-0410-955e-edbf42e46eb7> | 2009-09-13 19:26:55 +0000 |
---|---|---|
committer | special <special@e03df62e-2008-0410-955e-edbf42e46eb7> | 2009-09-13 19:26:55 +0000 |
commit | 933c31331b9fe4fc8921019f605330be656baa27 (patch) | |
tree | b91d6d720d03e3da6c750def7c96deaaf76afadd /src | |
parent | dc88f5153a3bb32b707f31f55960b262fd74798e (diff) |
Don't allow /who to match servers when HideWhoisServer is enabled (unless the user has the privilege)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11692 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src')
-rw-r--r-- | src/commands/cmd_who.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/commands/cmd_who.cpp b/src/commands/cmd_who.cpp index 1e7c7d6aa..61b5a0f60 100644 --- a/src/commands/cmd_who.cpp +++ b/src/commands/cmd_who.cpp @@ -54,7 +54,7 @@ class CommandWho : public Command * @return A value from CmdResult to indicate command success or failure. */ CmdResult Handle(const std::vector<std::string>& parameters, User *user); - bool whomatch(User* user, const char* matchtext); + bool whomatch(User* cuser, User* user, const char* matchtext); }; #endif @@ -74,7 +74,7 @@ static const std::string& get_first_visible_channel(User *u) return star; } -bool CommandWho::whomatch(User* user, const char* matchtext) +bool CommandWho::whomatch(User* cuser, User* user, const char* matchtext) { bool match = false; bool positive = false; @@ -157,7 +157,8 @@ bool CommandWho::whomatch(User* user, const char* matchtext) if (!match) match = InspIRCd::Match(user->nick, matchtext); - if (!match) + /* Don't allow server name matches if HideWhoisServer is enabled, unless the command user has the priv */ + if (!match && (!*ServerInstance->Config->HideWhoisServer || cuser->HasPrivPermission("users/auspex"))) match = InspIRCd::Match(user->server, matchtext); return match; @@ -364,7 +365,7 @@ CmdResult CommandWho::Handle (const std::vector<std::string>& parameters, User * { User* oper = *i; - if (whomatch(oper, matchtext)) + if (whomatch(user, oper, matchtext)) { if (!user->SharesChannelWith(oper)) { @@ -380,7 +381,7 @@ CmdResult CommandWho::Handle (const std::vector<std::string>& parameters, User * { for (user_hash::iterator i = ServerInstance->Users->clientlist->begin(); i != ServerInstance->Users->clientlist->end(); i++) { - if (whomatch(i->second, matchtext)) + if (whomatch(user, i->second, matchtext)) { if (!user->SharesChannelWith(i->second)) { |