#include "module.h" #define MYNAME "bs_secure_add" #define AUTHOR "HiroP" #define VERSION "0.1" int m_bs_secure_add(User * u); int AnopeInit(int argc, char **argv) { Command *c; int status = 0; c = createCommand("BOT", m_bs_secure_add, NULL,-1,-1,-1,-1,-1); status += moduleAddCommand(BOTSERV, c, MOD_HEAD); if (status == 0) { alog("[%s.so] Loaded successfully", MYNAME); } else { alog("[%s.so] FAILED to load, status %d", MYNAME, status); } moduleAddAuthor(AUTHOR); moduleAddVersion(VERSION); return MOD_CONT; } void AnopeFini(void) { alog("[%s.so] Unloaded", MYNAME); } int m_bs_secure_add(User * u) { char *argv[5], **ap, *args, *nick, *user, *host, *real, *cmd; char *tmp = moduleGetLastBuffer(); int k; /* get parameters of BOT command */ if (tmp != NULL) { args = sstrdup(tmp); for (ap = argv, k = 0; (*ap = strsep(&args, " \t")) != NULL && k <= 4; k++) if (**ap != '\0') ++ap; cmd = argv[0]; nick = argv[1]; user = argv[2]; host = argv[3]; real = argv[4]; } else { syntax_error(s_BotServ, u, "BOT", BOT_BOT_SYNTAX); return MOD_STOP; } if (!stricmp(cmd, "ADD")) { if (!nick || !user || !host || !real) { syntax_error(s_BotServ, u, "BOT", BOT_BOT_SYNTAX); return MOD_STOP; } else if (readonly) { notice_lang(s_BotServ, u, BOT_BOT_READONLY); return MOD_STOP; } else if (findbot(nick)) { notice_lang(s_BotServ, u, BOT_BOT_ALREADY_EXISTS, nick); return MOD_STOP; } else { NickAlias *na; if ((na = findnick(nick))) { if (NSSecureAdmins && nick_is_services_admin(na->nc)) { /* notice_lang(s_BotServ, u, PERMISSION_DENIED); */ notice(s_BotServ, u->nick, "Unable to add bot, nick is used by an SA or SRA"); return MOD_STOP; } else { return MOD_CONT; } } } } else { return MOD_CONT; } }