]> git.netwichtig.de Git - user/henk/code/inspircd.git/blob - src/modules/m_sanick.cpp
mass tidyup, change A LOT of stuff to const char** which was char** (such as paramete...
[user/henk/code/inspircd.git] / src / modules / m_sanick.cpp
1 /*       +------------------------------------+
2  *       | Inspire Internet Relay Chat Daemon |
3  *       +------------------------------------+
4  *
5  *  InspIRCd is copyright (C) 2002-2006 ChatSpike-Dev.
6  *                     E-mail:
7  *              <brain@chatspike.net>
8  *                <Craig@chatspike.net>
9  *     
10  * Written by Craig Edwards, Craig McLure, and others.
11  * This program is free but copyrighted software; see
12  *          the file COPYING for details.
13  *
14  * ---------------------------------------------------
15  */
16
17 using namespace std;
18
19 #include <stdio.h>
20 #include <string>
21 #include "users.h"
22 #include "channels.h"
23 #include "modules.h"
24
25 /* $ModDesc: Provides support for SANICK command */
26
27 static Server *Srv;
28
29 class cmd_sanick : public command_t
30 {
31  public:
32         cmd_sanick () : command_t("SANICK", 'o', 2)
33         {
34                 this->source = "m_sanick.so";
35         }
36
37         void Handle (const char** parameters, int pcnt, userrec *user)
38         {
39                 userrec* source = Srv->FindNick(std::string(parameters[0]));
40                 if (source)
41                 {
42                         if (Srv->IsUlined(source->server))
43                         {
44                                 WriteServ(user->fd,"990 %s :Cannot use an SA command on a u-lined client",user->nick);
45                                 return;
46                         }
47                         if (Srv->IsNick(std::string(parameters[1])))
48                         {
49                                 // FIX by brain: Cant use source->nick here because if it traverses a server link then
50                                 // source->nick becomes invalid as the object data moves in memory.
51                                 Srv->SendOpers(std::string(user->nick)+" used SANICK to change "+std::string(parameters[0])+" to "+parameters[1]);
52                                 Srv->ChangeUserNick(source,std::string(parameters[1]));
53                         }
54                 }
55         }
56 };
57
58
59 class ModuleSanick : public Module
60 {
61         cmd_sanick*     mycommand;
62  public:
63         ModuleSanick(Server* Me)
64                 : Module::Module(Me)
65         {
66                 Srv = Me;
67                 mycommand = new cmd_sanick();
68                 Srv->AddCommand(mycommand);
69         }
70         
71         virtual ~ModuleSanick()
72         {
73         }
74         
75         virtual Version GetVersion()
76         {
77                 return Version(1,0,0,1,VF_VENDOR);
78         }
79         
80 };
81
82 // stuff down here is the module-factory stuff. For basic modules you can ignore this.
83
84 class ModuleSanickFactory : public ModuleFactory
85 {
86  public:
87         ModuleSanickFactory()
88         {
89         }
90         
91         ~ModuleSanickFactory()
92         {
93         }
94         
95         virtual Module * CreateModule(Server* Me)
96         {
97                 return new ModuleSanick(Me);
98         }
99         
100 };
101
102
103 extern "C" void * init_module( void )
104 {
105         return new ModuleSanickFactory;
106 }
107