os_restart.c

Go to the documentation of this file.
00001 /* OperServ core functions
00002  *
00003  * (C) 2003-2008 Anope Team
00004  * Contact us at info@anope.org
00005  *
00006  * Please read COPYING and README for further details.
00007  *
00008  * Based on the original code of Epona by Lara.
00009  * Based on the original code of Services by Andy Church. 
00010  * 
00011  * $Id: os_restart.c 1345 2008-01-13 12:54:14Z geniusdex $
00012  *
00013  */
00014 /*************************************************************************/
00015 
00016 #include "module.h"
00017 
00018 #ifdef _WIN32
00019 /* OperServ restart needs access to this if were gonna avoid sending ourself a signal */
00020 extern MDE void do_restart_services(void);
00021 #endif
00022 
00023 int do_restart(User * u);
00024 void myOperServHelp(User * u);
00025 
00032 int AnopeInit(int argc, char **argv)
00033 {
00034     Command *c;
00035 
00036     moduleAddAuthor("Anope");
00037     moduleAddVersion("$Id: os_restart.c 1345 2008-01-13 12:54:14Z geniusdex $");
00038     moduleSetType(CORE);
00039     c = createCommand("RESTART", do_restart, is_services_root,
00040                       OPER_HELP_RESTART, -1, -1, -1, -1);
00041     moduleAddCommand(OPERSERV, c, MOD_UNIQUE);
00042 
00043     moduleSetOperHelp(myOperServHelp);
00044 
00045     return MOD_CONT;
00046 }
00047 
00051 void AnopeFini(void)
00052 {
00053 
00054 }
00055 
00056 
00061 void myOperServHelp(User * u)
00062 {
00063     if (is_services_root(u)) {
00064         notice_lang(s_OperServ, u, OPER_HELP_CMD_RESTART);
00065     }
00066 }
00067 
00073 int do_restart(User * u)
00074 {
00075 #ifdef SERVICES_BIN
00076     quitmsg = calloc(31 + strlen(u->nick), 1);
00077     if (!quitmsg)
00078         quitmsg = "RESTART command received, but out of memory!";
00079     else
00080         sprintf(quitmsg, "RESTART command received from %s", u->nick);
00081 
00082     if (GlobalOnCycle) {
00083         oper_global(NULL, "%s", GlobalOnCycleMessage);
00084     }
00085     /*    raise(SIGHUP); */
00086     do_restart_services();
00087 #else
00088     notice_lang(s_OperServ, u, OPER_CANNOT_RESTART);
00089 #endif
00090     return MOD_CONT;
00091 }

Generated on Sun Oct 5 09:06:55 2008 for Anope by  doxygen 1.5.7.1