7 /* $ModDesc: Allows locking of the server to stop all incoming connections till unlocked again */
10 * 988 <nick> <servername> :Closed for new connections
\r
11 * 989 <nick> <servername> :Open for new connections
15 class cmd_lockserv : public command_t
21 cmd_lockserv (InspIRCd* Instance, bool &lock)
22 : command_t(Instance, "LOCKSERV", 'o', 0), locked(lock)
24 this->source = "m_lockserv.so";
28 CmdResult Handle (const char** parameters, int pcnt, userrec *user)
31 user->WriteServ("988 %s %s :Closed for new connections", user->nick, user->server);
32 ServerInstance->WriteOpers("*** Oper %s used LOCKSERV to temporarily close for new connections", user->nick);
33 /* Dont send to the network */
38 class cmd_unlockserv : public command_t
44 cmd_unlockserv (InspIRCd* Instance, bool &lock)
45 : command_t(Instance, "UNLOCKSERV", 'o', 0), locked(lock)
47 this->source = "m_lockserv.so";
51 CmdResult Handle (const char** parameters, int pcnt, userrec *user)
54 user->WriteServ("989 %s %s :Open for new connections", user->nick, user->server);
55 ServerInstance->WriteOpers("*** Oper %s used UNLOCKSERV to allow for new connections", user->nick);
56 /* Dont send to the network */
61 class ModuleLockserv : public Module
65 cmd_lockserv* lockcommand;
66 cmd_unlockserv* unlockcommand;
68 virtual void ResetLocked()
74 ModuleLockserv(InspIRCd* Me) : Module::Module(Me)
77 lockcommand = new cmd_lockserv(ServerInstance, locked);
78 ServerInstance->AddCommand(lockcommand);
80 unlockcommand = new cmd_unlockserv(ServerInstance, locked);
81 ServerInstance->AddCommand(unlockcommand);
84 virtual ~ModuleLockserv()
88 void Implements(char* List)
90 List[I_OnUserRegister] = List[I_OnRehash] = List[I_OnCheckReady] = 1;
93 virtual void OnRehash(const std::string ¶meter)
98 virtual int OnUserRegister(userrec* user)
102 userrec::QuitUser(ServerInstance, user, "Server is temporarily closed. Please try again later.");
108 virtual bool OnCheckReady(userrec* user)
113 virtual Version GetVersion()
115 return Version(1,0,0,1,0, API_VERSION);
119 class ModuleLockservFactory : public ModuleFactory
122 ModuleLockservFactory()
126 ~ModuleLockservFactory()
130 virtual Module * CreateModule(InspIRCd* Me)
132 return new ModuleLockserv(Me);
136 extern "C" void * init_module( void )
138 return new ModuleLockservFactory;