]> git.netwichtig.de Git - user/henk/code/inspircd.git/blob - src/modules/m_samode.cpp
a563a3de560ac7bafe25d0a003baf9049bc34328
[user/henk/code/inspircd.git] / src / modules / m_samode.cpp
1 /*
2  * SAMODE module for InspIRCd
3  *  Co authored by Brain and w00t
4  *
5  *  Syntax: /SAMODE <#chan/nick> +/-<modes> [parameters for modes]
6  * 
7  */
8
9 /* $ModDesc: Povides more advanced UnrealIRCd SAMODE command */
10
11 /*
12  * ToDo:
13  *   Err... not a lot really.
14  */ 
15
16 #include <stdio.h>
17 #include "users.h"
18 #include "channels.h"
19 #include "modules.h"
20
21 Server *Srv;
22          
23
24 void handle_samode(char **parameters, int pcnt, userrec *user)
25 {
26         /*
27          * Handles an SAMODE request. Notifies all +s users.
28          */
29         int n=0;
30         std::string result;
31         Srv->Log(DEBUG,"SAMODE: Being handled");
32         Srv->SendMode(parameters,pcnt,user);
33         Srv->Log(DEBUG,"SAMODE: Modechange handled");
34         result = std::string(user->nick) + std::string(" used SAMODE ");
35         while (n<pcnt)
36         {
37                 result=result + std::string(" ") + std::string(parameters[n]);
38                 n++;
39         }
40         Srv->SendOpers(result);
41 }
42
43 class ModuleSaMode : public Module
44 {
45  public:
46         ModuleSaMode()
47         {
48                 Srv = new Server;
49                 Srv->Log(DEBUG,"SAMODE: Pre-add cmd");
50                 Srv->AddCommand("SAMODE",handle_samode,'o',2);
51                 Srv->Log(DEBUG,"SAMODE: Post-add cmd");
52         }
53         
54         virtual ~ModuleSaMode()
55         {
56                 delete Srv;
57         }
58         
59         virtual Version GetVersion()
60         {
61                 return Version(1,0,2,1);
62         }
63         
64         virtual void OnUserConnect(userrec* user)
65         {
66         }
67
68 };
69
70
71 class ModuleSaModeFactory : public ModuleFactory
72 {
73  public:
74         ModuleSaModeFactory()
75         {
76         }
77         
78         ~ModuleSaModeFactory()
79         {
80         }
81         
82         virtual Module * CreateModule()
83         {
84                 return new ModuleSaMode;
85         }
86         
87 };
88
89
90 extern "C" void * init_module( void )
91 {
92         return new ModuleSaModeFactory;
93 }