]> git.netwichtig.de Git - user/henk/code/inspircd.git/blob - src/modules/m_chgident.cpp
Add m_sqlutils - Currently provides ID->chan/user lookups
[user/henk/code/inspircd.git] / src / modules / m_chgident.cpp
1 #include <string>
2 #include "users.h"
3 #include "modules.h"
4 #include "message.h"
5 #include "helperfuncs.h"
6
7 /* $ModDesc: Provides support for the CHGIDENT command */
8
9 class cmd_chgident : public command_t
10 {
11         Server* Srv;
12  public:
13         cmd_chgident(Server* serv) : command_t("CHGIDENT", 'o', 2)
14         {
15                 this->source = "m_chgident.so";
16                 Srv = serv;
17         }
18         
19         void Handle(const char** parameters, int pcnt, userrec *user)
20         {
21                 userrec* dest = Srv->FindNick(std::string(parameters[0]));
22                 
23                 if(dest)
24                 {
25                         if(!isident(parameters[1]))
26                         {
27                                 WriteServ(user->fd, "NOTICE %s :*** Invalid characters in ident", user->nick);
28                                 return;
29                         }
30                 
31                         WriteOpers("%s used CHGIDENT to change %s's ident from '%s' to '%s'", user->nick, dest->nick, dest->ident, parameters[1]);
32                         strlcpy(dest->ident, parameters[1], IDENTMAX+2);
33                 }
34                 else
35                 {
36                         WriteServ(user->fd, "401 %s %s :No such nick/channel", user->nick, parameters[0]);
37                 }
38         }
39 };
40
41
42 class ModuleChgIdent : public Module
43 {
44         cmd_chgident* mycommand;
45         
46 public:
47         ModuleChgIdent(Server* Me) : Module::Module(Me)
48         {
49                 mycommand = new cmd_chgident(Me);
50                 Me->AddCommand(mycommand);
51         }
52         
53         virtual ~ModuleChgIdent()
54         {
55         }
56         
57         virtual Version GetVersion()
58         {
59                 return Version(1,0,0,0,VF_VENDOR);
60         }
61         
62 };
63
64 // stuff down here is the module-factory stuff. For basic modules you can ignore this.
65
66 class ModuleChgIdentFactory : public ModuleFactory
67 {
68  public:
69         ModuleChgIdentFactory()
70         {
71         }
72         
73         ~ModuleChgIdentFactory()
74         {
75         }
76         
77         virtual Module * CreateModule(Server* Me)
78         {
79                 return new ModuleChgIdent(Me);
80         }
81         
82 };
83
84
85 extern "C" void * init_module( void )
86 {
87         return new ModuleChgIdentFactory;
88 }
89