]> git.netwichtig.de Git - user/henk/code/inspircd.git/blob - src/modules/m_spanningtree/svsnick.cpp
f13385fc2c4f9721e29bb4227e651fee7ff2438f
[user/henk/code/inspircd.git] / src / modules / m_spanningtree / svsnick.cpp
1 /*       +------------------------------------+
2  *       | Inspire Internet Relay Chat Daemon |
3  *       +------------------------------------+
4  *
5  *  InspIRCd: (C) 2002-2010 InspIRCd Development Team
6  * See: http://wiki.inspircd.org/Credits
7  *
8  * This program is free but copyrighted software; see
9  *            the file COPYING for details.
10  *
11  * ---------------------------------------------------
12  */
13
14 #include "inspircd.h"
15
16 #include "main.h"
17 #include "utils.h"
18 #include "commands.h"
19
20 CmdResult CommandSVSNick::Handle(const std::vector<std::string>& parameters, User *user)
21 {
22         User* u = ServerInstance->FindNick(parameters[0]);
23
24         if (u && IS_LOCAL(u))
25         {
26                 parameterlist par;
27                 par.push_back(parameters[1]);
28
29                 if (!u->ForceNickChange(parameters[1].c_str()))
30                 {
31                         /* buh. UID them */
32                         if (!u->ForceNickChange(u->uuid.c_str()))
33                         {
34                                 ServerInstance->Users->QuitUser(u, "Nickname collision");
35                                 return CMD_SUCCESS;
36                         }
37                 }
38
39                 u->age = atoi(parameters[2].c_str());
40         }
41
42         return CMD_SUCCESS;
43 }
44
45 RouteDescriptor CommandSVSNick::GetRouting(User* user, const std::vector<std::string>& parameters)
46 {
47         User* u = ServerInstance->FindNick(parameters[0]);
48         if (u)
49                 return ROUTE_OPT_UCAST(u->server);
50         return ROUTE_LOCALONLY;
51 }