X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fcommands%2Fcmd_who.cpp;h=718eb20020b3078e6d0f24d1b214ffe99493d547;hb=7b6eae36661bc798f69b22393b85a4f06d533cf6;hp=4f44fd5182ed51605e7adcea4060c7be1ccd7c7e;hpb=43847ec9c7e1a195163eb4c529f1c92fd1ace0a4;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/commands/cmd_who.cpp b/src/commands/cmd_who.cpp index 4f44fd518..718eb2002 100644 --- a/src/commands/cmd_who.cpp +++ b/src/commands/cmd_who.cpp @@ -3,7 +3,7 @@ * +------------------------------------+ * * InspIRCd: (C) 2002-2009 InspIRCd Development Team - * See: http://www.inspircd.org/wiki/index.php/Credits + * See: http://wiki.inspircd.org/Credits * * This program is free but copyrighted software; see * the file COPYING for details. @@ -250,25 +250,30 @@ CmdResult CommandWho::Handle (const std::vector& parameters, User * opt_realname = true; break; case 'm': - opt_mode = true; + if (user->HasPrivPermission("users/auspex")) + opt_mode = true; break; case 'M': - opt_metadata = true; + if (user->HasPrivPermission("users/auspex")) + opt_metadata = true; break; case 'i': opt_ident = true; break; case 'p': - opt_port = true; + if (user->HasPrivPermission("users/auspex")) + opt_port = true; break; case 'a': opt_away = true; break; case 'l': - opt_local = true; + if (user->HasPrivPermission("users/auspex") || !*ServerInstance->Config->HideWhoisServer) + opt_local = true; break; case 'f': - opt_far = true; + if (user->HasPrivPermission("users/auspex") || !*ServerInstance->Config->HideWhoisServer) + opt_far = true; break; case 't': opt_time = true; @@ -286,10 +291,10 @@ CmdResult CommandWho::Handle (const std::vector& parameters, User * if (CanView(ch,user)) { bool inside = ch->HasUser(user); - + /* who on a channel. */ CUList *cu = ch->GetUsers(); - + for (CUList::iterator i = cu->begin(); i != cu->end(); i++) { /* None of this applies if we WHO ourselves */ @@ -298,12 +303,12 @@ CmdResult CommandWho::Handle (const std::vector& parameters, User * /* opers only, please */ if (opt_viewopersonly && !IS_OPER(i->first)) continue; - + /* If we're not inside the channel, hide +i users */ if (i->first->IsModeSet('i') && !inside && !user->HasPrivPermission("users/auspex")) continue; } - + SendWhoLine(user, initial, ch, i->first, whoresults); } } @@ -362,4 +367,3 @@ CmdResult CommandWho::Handle (const std::vector& parameters, User * return CMD_FAILURE; } } -