#include "module.h" #define AUTHOR "n00bie" #define VERSION "$Id: bs_restrict_kb.c v1.0.0 19-02-2007 n00bie $" /* ------------------------------------------------------------------------------------ * Name : bs_restrict_kb * Author : n00bie * Version : 1.0.0 * Date : 19th February, 2007 * ------------------------------------------------------------------------------------ * This program is free software; you can redistribute it and/or modify it under the * terms of the GNU General Public License as published by the Free Software * Foundation; either version 1, or (at your option) any later version. * ------------------------------------------------------------------------------------ * Tested : Anope-1.7.17, 1.7.18 * * This module is requested by thermometer. * ------------------------------------------------------------------------------------ * Description: * * This module will restrict the use of BotServ fantasy commands !kick, !k, !kickban !kb * against identified/opered Services Operator and above. * ------------------------------------------------------------------------------------ * This module have no configurable option. */ int do_fantasy(int argc, char **argv); int AnopeInit(int argc, char **argv) { EvtHook *hook = NULL; int status = 0; hook = createEventHook(EVENT_BOT_FANTASY, do_fantasy); status = moduleAddEventHook(hook); if (status != MOD_ERR_OK) { alog("bs_restrict_kb%s: Unable to bind to EVENT_BOT_FANTASY.", MODULE_EXT); alog("bs_restrict_kb%s: Unloading module.", MODULE_EXT); return MOD_STOP; } else { alog("bs_restrict_kb%s: Successfully hooked to EVENT_BOT_FANTASY.", MODULE_EXT); alog("bs_restrict_kb%s: Module loaded and active.", MODULE_EXT); } moduleAddAuthor(AUTHOR); moduleAddVersion(VERSION); return MOD_CONT; } void AnopeFini(void) { alog("bs_restrict_kb%s: Module Unloaded.", MODULE_EXT); } int do_fantasy(int argc, char **argv) { User *u, *u2; ChannelInfo *ci; char *target = NULL; //NickAlias *na; //NickCore *nc = NULL; int i = 0; if (argc >= 4) { target = myStrGetToken(argv[3], ' ', 0); } if (!(ci = cs_findchan(argv[2]))) return MOD_CONT; if (!(u = finduser(argv[1]))) return MOD_CONT; u2 = finduser(target); if (stricmp(argv[0], "k") == 0) { if (!target || !u2) { return MOD_CONT; } else { if (is_services_oper(u2)) { if (target) free(target); return MOD_STOP; } } /* for (i = 0; i < RootNumber; i++) { if (stristr(target, ServicesRoots[i])) { return MOD_STOP; } } for (i = 0; i < servadmins.count && (nc = servadmins.list[i]); i++) { if (stristr(target, nc->display)) { return MOD_STOP; } } for (i = 0; i < servopers.count && (nc = servopers.list[i]); i++) { if (stristr(target, nc->display)) { return MOD_STOP; } } */ } else if (stricmp(argv[0], "kick") == 0) { if (!target || !u2) { return MOD_CONT; } else { if (is_services_oper(u2)) { if (target) free(target); return MOD_STOP; } } } else if (stricmp(argv[0], "kb") == 0) { if (!target || !u2) { return MOD_CONT; } else { if (is_services_oper(u2)) { if (target) free(target); return MOD_STOP; } } } else if (stricmp(argv[0], "kickban") == 0) { if (!target || !u2) { return MOD_CONT; } else { if (is_services_oper(u2)) { if (target) free(target); return MOD_STOP; } } } if (target) free(target); return MOD_CONT; } /* EOF */