]> git.netwichtig.de Git - user/henk/code/inspircd.git/blob - src/coremods/core_user/cmd_userhost.cpp
Add the msgid tag to all outgoing messages.
[user/henk/code/inspircd.git] / src / coremods / core_user / cmd_userhost.cpp
1 /*
2  * InspIRCd -- Internet Relay Chat Daemon
3  *
4  *   Copyright (C) 2009 Daniel De Graaf <danieldg@inspircd.org>
5  *   Copyright (C) 2007 Robin Burchell <robin+git@viroteck.net>
6  *
7  * This file is part of InspIRCd.  InspIRCd is free software: you can
8  * redistribute it and/or modify it under the terms of the GNU General Public
9  * License as published by the Free Software Foundation, version 2.
10  *
11  * This program is distributed in the hope that it will be useful, but WITHOUT
12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
13  * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
14  * details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
18  */
19
20
21 #include "inspircd.h"
22 #include "core_user.h"
23
24 CmdResult CommandUserhost::Handle(User* user, const Params& parameters)
25 {
26         const bool has_privs = user->HasPrivPermission("users/auspex");
27
28         std::string retbuf;
29
30         unsigned int max = parameters.size();
31         if (max > 5)
32                 max = 5;
33
34         for (unsigned int i = 0; i < max; i++)
35         {
36                 User *u = ServerInstance->FindNickOnly(parameters[i]);
37
38                 if ((u) && (u->registered == REG_ALL))
39                 {
40                         retbuf += u->nick;
41
42                         if (u->IsOper())
43                         {
44                                 // XXX: +H hidden opers must not be shown as opers
45                                 if ((u == user) || (has_privs) || (!u->IsModeSet(hideopermode)))
46                                         retbuf += '*';
47                         }
48
49                         retbuf += '=';
50                         retbuf += (u->IsAway() ? '-' : '+');
51                         retbuf += u->ident;
52                         retbuf += '@';
53                         retbuf += u->GetHost(u == user || has_privs);
54                         retbuf += ' ';
55                 }
56         }
57
58         user->WriteNumeric(RPL_USERHOST, retbuf);
59
60         return CMD_SUCCESS;
61 }