X-Git-Url: https://jfr.im/git/irc/quakenet/newserv.git/blobdiff_plain/c832ca9bdf12d49d05b52318a908c605577af1c0..0914614786d5c7654ef65dd76b8313b80fc6f77e:/noperserv/noperserv.c diff --git a/noperserv/noperserv.c b/noperserv/noperserv.c index cd8f17dd..e2d56a7e 100644 --- a/noperserv/noperserv.c +++ b/noperserv/noperserv.c @@ -8,6 +8,8 @@ #include "../localuser/localuser.h" #include "../lib/irc_string.h" +#include "../lib/strlfunc.h" +#include "../lib/version.h" #include "noperserv.h" #include "noperserv_db.h" #include "noperserv_hooks.h" @@ -17,6 +19,8 @@ #include #include +MODULE_VERSION("$Id: noperserv.c 786 2007-05-13 20:22:35Z newserv $") + #define FLAGBUFLEN 100 #define NO_FOUND_NICKNAME 1 @@ -47,8 +51,8 @@ const flag no_userflags[] = { const flag no_noticeflags[] = { { 'm', NL_MANAGEMENT }, /* hello, password, userflags, noticeflags */ { 't', NL_TRUSTS }, /* trust stuff... */ - { 'k', NL_KICKS }, /* KICK command */ - { 'K', NL_KILLS }, /* KILL command */ + { 'k', NL_KICKKILLS }, /* KICK/KILL commands */ + { 'I', NL_MISC }, /* misc commands */ { 'g', NL_GLINES }, /* GLINE commands */ { 'h', NL_HITS }, /* Where a gline or kill is set automatically by the bot */ { 'c', NL_CLONING }, /* Clone detection */ @@ -69,37 +73,58 @@ int noperserv_deluser(void *sender, int cargc, char **cargv); void noperserv_oper_detection(int hooknum, void *arg); void noperserv_reply(nick *np, char *format, ...); +int init = 0; + void _init() { - noperserv_ext = registernickext("noperserv"); + if(!noperserv_load_db()) + return; - noperserv_load_db(); + noperserv_ext = registernickext("noperserv"); noperserv_setup_hooks(); registercontrolhelpcmd("hello", NO_OPERED | NO_AUTHED, 1, &noperserv_hello, "Syntax: HELLO ?nickname|#authname?\nCreates an account on the service for the specified nick, or if one isn't supplied, your nickname."); - registercontrolhelpcmd("userflags", NO_ACCOUNT, 2, &noperserv_userflags, "Syntax: USERFLAGS ?modifications?\nViews and modifies user permissions.\nIf no nickname or authname is supplied, you are substituted for it.\nIf no flags are supplied, flags are just displayed instead of modified."); + registercontrolhelpcmd("userflags", NO_ACCOUNT, 2, &noperserv_userflags, + "Syntax: USERFLAGS ?modifications?\n" + " Views and modifies user permissions.\n" + " If no nickname or authname is supplied, you are substituted for it.\n" + " If no flags are supplied, flags are just displayed instead of modified." + " Flags:\n" + " +o: Operator\n" + " +s: Staff member\n" + " +S: Security team member\n" + " +d: NOperserv developer\n" + " +t: Trust queue worker\n" + " Additional flags may show up in SHOWCOMMANDS but are not userflags as such:\n" + " +r: Authed user\n" + " +R: Registered NOperserv user\n" + " +O: Must be /OPER'ed\n" + " +L: Legacy command\n" + ); registercontrolhelpcmd("noticeflags", NO_ACCOUNT, 1, &noperserv_noticeflags, "Syntax: NOTICEFLAGS ?(nickname|#authname)|flags?\n" " This command can view and modify your own notice flags, and view that of other users.\n" " Flags:\n" " +m: Management (hello, password, userflags, noticeflags)\n" " +t: Trusts\n" - " +k: KICK command\n" - " +K: KILL command\n" + " +k: KICK/KILL commands\n" " +g: GLINE commands\n" " +h: Shows when glines are played automatically (hits)\n" " +c: Clone information\n" " +C: CLEARCHAN command\n" - " +f: FAKEUSER command\n" + " +f: FAKEUSER commands\n" " +b: BROADCAST commands\n" " +o: Operation commands, such as insmod, rmmod, die, etc\n" " +O: /OPER\n" + " +I: Misc commands (resync, etc)\n" " +n: Sends notices instead of privmsgs\n" - " +A: Every single command sent to the service\n" + " +A: Every single command sent to the service (spammy)\n" ); registercontrolhelpcmd("deluser", NO_OPERED | NO_ACCOUNT, 2, &noperserv_deluser, "Syntax: DELUSER \nDeletes the specified user."); registerhook(HOOK_NICK_MODEOPER, &noperserv_oper_detection); + + init = 1; } #ifdef BROKEN_DLCLOSE @@ -107,6 +132,9 @@ void __fini() { #else void _fini() { #endif + if(!init) + return; + deregisterhook(HOOK_NICK_MODEOPER, &noperserv_oper_detection); deregistercontrolcmd("noticeflags", &noperserv_noticeflags); @@ -122,7 +150,7 @@ void _fini() { /* @test */ int noperserv_hello(void *sender, int cargc, char **cargv) { - char *newaccount; + char *newaccount = NULL; no_autheduser *au; int i; nick *np = (nick *)sender, *np2, *target = NULL;