]> git.netwichtig.de Git - user/henk/code/inspircd.git/blob - src/modules/m_operjoin.cpp
c334009544c103e00256fa3f8aa097caae68fdbe
[user/henk/code/inspircd.git] / src / modules / m_operjoin.cpp
1 // operjoin module by typobox43
2
3 using namespace std;
4
5 #include "users.h"
6 #include "channels.h"
7 #include "modules.h"
8 #include "helperfuncs.h"
9
10 /* $ModDesc: Forces opers to join a specified channel on oper-up */
11
12 class ModuleOperjoin : public Module
13 {
14         private:
15                 std::string operChan;
16                 ConfigReader* conf;
17                 Server* Srv;
18
19         public:
20                 ModuleOperjoin(Server* Me)
21                         : Module::Module(Me)
22                 {
23                         Srv = Me;
24                         conf = new ConfigReader;
25                         operChan = conf->ReadValue("operjoin", "channel", 0);
26                 }
27
28                 void Implements(char* List)
29                 {
30                         List[I_OnPostOper] = List[I_OnRehash] = 1;
31                 }
32
33                 virtual void OnRehash(const std::string &parameter)
34                 {
35                         DELETE(conf);
36                         conf = new ConfigReader;
37                 }
38
39                 virtual ~ModuleOperjoin()
40                 {
41                         DELETE(conf);
42                 }
43
44                 virtual Version GetVersion()
45                 {
46                         return Version(1,0,0,1,VF_VENDOR);
47                 }
48
49                 virtual void OnPostOper(userrec* user, const std::string &opertype)
50                 {
51                         if(operChan != "")
52                         {
53                                 Srv->JoinUserToChannel(user,operChan,"");
54                         }
55
56                 }
57
58 };
59
60 class ModuleOperjoinFactory : public ModuleFactory
61 {
62         public:
63                 ModuleOperjoinFactory()
64                 {
65                 }
66
67                 ~ModuleOperjoinFactory()
68                 {
69                 }
70
71                 virtual Module * CreateModule(Server* Me)
72                 {
73                         return new ModuleOperjoin(Me);
74                 }
75 };
76
77 extern "C" void * init_module( void )
78 {
79         return new ModuleOperjoinFactory;
80 }
81