]> git.netwichtig.de Git - user/henk/code/inspircd.git/blob - src/modules/m_noctcp.cpp
bf7cb8d627b41f908a0c937292c5dc4696377565
[user/henk/code/inspircd.git] / src / modules / m_noctcp.cpp
1 #include <stdio.h>
2
3 #include "users.h"
4 #include "channels.h"
5 #include "modules.h"
6
7 /* $ModDesc: Provides support for unreal-style channel mode +c */
8
9 class ModuleNoCTCP : public Module
10 {
11         Server *Srv;
12         
13  public:
14  
15         ModuleNoCTCP()
16         {
17                 Srv = new Server;
18                 Srv->AddExtendedMode('C',MT_CHANNEL,false,0,0);
19         }
20         
21         virtual int OnUserPreMessage(userrec* user,void* dest,int target_type, std::string text)
22         {
23                 if (target_type == TYPE_CHANNEL)
24                 {
25                         chanrec* c = (chanrec*)dest;
26                         if (c->IsCustomModeSet('C'))
27                         {
28                                 if ((text.length()) && (text[0] == '\1'))
29                                 {
30                                         WriteServ(user->fd,"492 %s %s :Can't send CTCP to channel (+C set)",user->nick, c->name);
31                                         return 1;
32                                 }
33                         }
34                 }
35                 return 0;
36         }
37         
38         virtual int OnUserPreNotice(userrec* user,void* dest,int target_type, std::string text)
39         {
40                 if (target_type == TYPE_CHANNEL)
41                 {
42                         chanrec* c = (chanrec*)dest;
43                         if (c->IsCustomModeSet('C'))
44                         {
45                                 if ((text.length()) && (text[0] == '\1'))
46                                 {
47                                         WriteServ(user->fd,"492 %s %s :Can't send CTCP to channel (+C set)",user->nick, c->name);
48                                         return 1;
49                                 }
50                         }
51                 }
52                 return 0;
53         }
54         
55         virtual ~ModuleNoCTCP()
56         {
57                 delete Srv;
58         }
59         
60         virtual Version GetVersion()
61         {
62                 return Version(1,0,0,0);
63         }
64 };
65
66
67 class ModuleNoCTCPFactory : public ModuleFactory
68 {
69  public:
70         ModuleNoCTCPFactory()
71         {
72         }
73         
74         ~ModuleNoCTCPFactory()
75         {
76         }
77         
78         virtual Module * CreateModule()
79         {
80                 return new ModuleNoCTCP;
81         }
82         
83 };
84
85
86 extern "C" void * init_module( void )
87 {
88         return new ModuleNoCTCPFactory;
89 }
90