]> git.netwichtig.de Git - user/henk/code/inspircd.git/blob - src/modules/m_setident.cpp
72878471cc213dfb02cf4bf1282ed1971a9b560e
[user/henk/code/inspircd.git] / src / modules / m_setident.cpp
1 /*
2  * InspIRCd -- Internet Relay Chat Daemon
3  *
4  *   Copyright (C) 2007 Dennis Friis <peavey@inspircd.org>
5  *   Copyright (C) 2007 John Brooks <john.brooks@dereferenced.net>
6  *   Copyright (C) 2007 Robin Burchell <robin+git@viroteck.net>
7  *   Copyright (C) 2006 Oliver Lupton <oliverlupton@gmail.com>
8  *
9  * This file is part of InspIRCd.  InspIRCd is free software: you can
10  * redistribute it and/or modify it under the terms of the GNU General Public
11  * License as published by the Free Software Foundation, version 2.
12  *
13  * This program is distributed in the hope that it will be useful, but WITHOUT
14  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15  * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
16  * details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
20  */
21
22
23 #include "inspircd.h"
24
25 /* $ModDesc: Provides support for the SETIDENT command */
26
27 /** Handle /SETIDENT
28  */
29 class CommandSetident : public Command
30 {
31  public:
32  CommandSetident(Module* Creator) : Command(Creator,"SETIDENT", 1)
33         {
34                 allow_empty_last_param = false;
35                 flags_needed = 'o'; syntax = "<new-ident>";
36         }
37
38         CmdResult Handle(const std::vector<std::string>& parameters, User *user)
39         {
40                 if (parameters[0].size() > ServerInstance->Config->Limits.IdentMax)
41                 {
42                         user->WriteNotice("*** SETIDENT: Ident is too long");
43                         return CMD_FAILURE;
44                 }
45
46                 if (!ServerInstance->IsIdent(parameters[0].c_str()))
47                 {
48                         user->WriteNotice("*** SETIDENT: Invalid characters in ident");
49                         return CMD_FAILURE;
50                 }
51
52                 user->ChangeIdent(parameters[0].c_str());
53                 ServerInstance->SNO->WriteGlobalSno('a', "%s used SETIDENT to change their ident to '%s'", user->nick.c_str(), user->ident.c_str());
54
55                 return CMD_SUCCESS;
56         }
57 };
58
59 class ModuleSetIdent : public Module
60 {
61         CommandSetident cmd;
62
63  public:
64         ModuleSetIdent() : cmd(this)
65         {
66         }
67
68         void init() CXX11_OVERRIDE
69         {
70                 ServerInstance->Modules->AddService(cmd);
71         }
72
73         Version GetVersion() CXX11_OVERRIDE
74         {
75                 return Version("Provides support for the SETIDENT command", VF_VENDOR);
76         }
77 };
78
79 MODULE_INIT(ModuleSetIdent)