]> git.netwichtig.de Git - user/henk/code/inspircd.git/blob - src/modules/m_globops.cpp
Annotations
[user/henk/code/inspircd.git] / src / modules / m_globops.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 // Globops and +g support module by C.J.Edwards
20
21 #include <stdio.h>
22 #include <string>
23 #include "users.h"
24 #include "channels.h"
25 #include "modules.h"
26 #include "inspircd.h"
27
28 /* $ModDesc: Provides support for GLOBOPS and user mode +g */
29
30 /** Handle /GLOBOPS
31  */
32 class cmd_globops : public command_t
33 {
34  public:
35         cmd_globops (InspIRCd* Instance) : command_t(Instance,"GLOBOPS",'o',1)
36         {
37                 this->source = "m_globops.so";
38                 syntax = "<any-text>";
39         }
40
41         CmdResult Handle (const char** parameters, int pcnt, userrec *user)
42         {
43                 std::string line = "From " + std::string(user->nick) + ": ";
44                 for (int i = 0; i < pcnt; i++)
45                 {
46                         line = line + std::string(parameters[i]) + " ";
47                 }
48                 ServerInstance->SNO->WriteToSnoMask('g',line);
49
50                 return CMD_SUCCESS;
51         }
52 };
53
54 class ModuleGlobops : public Module
55 {
56         cmd_globops* mycommand;
57  public:
58         ModuleGlobops(InspIRCd* Me)
59                 : Module::Module(Me)
60         {
61                 mycommand = new cmd_globops(ServerInstance);
62                 ServerInstance->AddCommand(mycommand);
63                 ServerInstance->SNO->EnableSnomask('g',"GLOBOPS");
64         }
65         
66         virtual ~ModuleGlobops()
67         {
68                 ServerInstance->SNO->DisableSnomask('g');
69                 DELETE(mycommand);
70         }
71         
72         virtual Version GetVersion()
73         {
74                 return Version(1, 0, 0, 1, VF_COMMON | VF_VENDOR);
75         }
76
77         void Implements(char* List)
78         {
79         }
80 };
81
82 class ModuleGlobopsFactory : public ModuleFactory
83 {
84  public:
85         ModuleGlobopsFactory()
86         {
87         }
88         
89         ~ModuleGlobopsFactory()
90         {
91         }
92         
93         virtual Module * CreateModule(InspIRCd* Me)
94         {
95                 return new ModuleGlobops(Me);
96         }
97         
98 };
99
100
101 extern "C" void * init_module( void )
102 {
103         return new ModuleGlobopsFactory;
104 }
105