From: Paul Date: Fri, 16 May 2008 17:29:29 +0000 (+0100) Subject: irc stats hook X-Git-Url: https://jfr.im/git/irc/quakenet/newserv.git/commitdiff_plain/0850681b4126177e7b01d120c4dae926f4ffaead irc stats hook --- diff --git a/irc/irc.c b/irc/irc.c index 250b0ac5..f4b19735 100644 --- a/irc/irc.c +++ b/irc/irc.c @@ -11,6 +11,7 @@ #include "../lib/base64.h" #include "../lib/splitline.h" #include "../lib/version.h" +#include "../lib/irc_string.h" #include #include #include @@ -31,6 +32,7 @@ MODULE_VERSION(""); #define MAX_NUMERIC 999 void irc_connect(void *arg); +void ircstats(int hooknum, void *arg); CommandTree *servercommands; Command *numericcommands[MAX_NUMERIC-MIN_NUMERIC]; @@ -70,6 +72,8 @@ void _init() { registerserverhandler("SE",&handlesettime,1); registerserverhandler("Z",&handlepingreply,1); registerserverhandler("SERVER",&irc_handleserver,8); + + registerhook(HOOK_CORE_STATSREQUEST,&ircstats); } void _fini() { @@ -82,6 +86,8 @@ void _fini() { deregisterserverhandler("SE",&handlesettime); deregisterserverhandler("Z",&handlepingreply); deregisterserverhandler("SERVER",&irc_handleserver); + + deregisterhook(HOOK_CORE_STATSREQUEST,&ircstats); deleteschedule(NULL,&sendping,NULL); deleteschedule(NULL,&irc_connect,NULL); @@ -449,3 +455,16 @@ int handlepingreply(void *sender, int cargc, char **cargv) { awaitingping=0; return CMD_OK; } + + +void ircstats(int hooknum, void *arg) { + long level=(long)arg; + char buf[100]; + + if (level>5) { + sprintf(buf,"irc : start time %lu (running %s)", starttime,longtoduration(time(NULL)-starttime,0)); + triggerhook(HOOK_CORE_STATSREPLY,buf); + sprintf(buf,"Time : %lu (current time is %lu, offset %ld)",getnettime(),time(NULL),timeoffset); + triggerhook(HOOK_CORE_STATSREPLY,buf); + } +}