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