]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Don't allow /who to match servers when HideWhoisServer is enabled (unless the user...
authorspecial <special@e03df62e-2008-0410-955e-edbf42e46eb7>
Sun, 13 Sep 2009 19:26:55 +0000 (19:26 +0000)
committerspecial <special@e03df62e-2008-0410-955e-edbf42e46eb7>
Sun, 13 Sep 2009 19:26:55 +0000 (19:26 +0000)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11692 e03df62e-2008-0410-955e-edbf42e46eb7

src/commands/cmd_who.cpp

index 1e7c7d6aa064a5c9747b4c8e5e92573c32ffd376..61b5a0f6032f19a0e56b03628f31c39e08a52401 100644 (file)
@@ -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))
                                        {