static void addBan(Channel * c, time_t timeout, char *banmask) { char *av[3]; char *cb[2]; cb[0] = c->name; cb[1] = banmask; av[0] = sstrdup("+b"); av[1] = banmask; anope_cmd_mode(whosends(c->ci), c->name, "+b %s", av[1]); chan_set_modes(s_ChanServ, c, 2, av, 1); free(av[0]); moduleAddCallback("tban", time(NULL) + timeout, delBan, 2, cb); }
int AnopeInit(int argc, char **argv) { Command *c = NULL; EvtHook *hook = NULL; int status = 0; if (!moduleMinVersion(1,7,21,1341)) { alog("cs_autovoice: Your version of Anope isn't supported. This module require Anope-1.7.21 (1341) or later. Please upgrade to a newer release."); return MOD_STOP; } hook = createEventHook(EVENT_DB_SAVING, mSaveData); status = moduleAddEventHook(hook); if (status != MOD_ERR_OK) { alog("cs_autovoice: Cannot hook to EVENT_DB_SAVING."); return MOD_STOP; } hook = createEventHook(EVENT_DB_BACKUP, mBackupData); status = moduleAddEventHook(hook); if (status != MOD_ERR_OK) { alog("cs_autovoice: Cannot hook to EVENT_DB_BACKUP."); return MOD_STOP; } hook = createEventHook(EVENT_JOIN_CHANNEL, mEventJoin); status = moduleAddEventHook(hook); if (status != MOD_ERR_OK) { alog("cs_autovoice: Cannot hook to EVENT_JOIN_CHANNEL."); return MOD_STOP; } c = createCommand("AUTOVOICE", do_avoice, NULL, -1, -1, -1, -1, -1); moduleAddHelp(c, myChanServAvoiceHelp); moduleSetChanHelp(myChanServHelp); moduleAddCommand(CHANSERV, c, MOD_HEAD); if (status != MOD_ERR_OK) { alog("cs_autovoice: Something isn't init right!"); return MOD_STOP; } else { alog("cs_autovoice: New command: \2/msg %s HELP AUTOVOICE\2", s_ChanServ); alog("cs_autovoice: Module loaded successfully."); } mLoadConfig(); mAddLanguages(); moduleAddCallback("cs_autovoice: mLoadData", time(NULL) + 2, mLoadData, 0, NULL); moduleAddAuthor(AUTHOR); moduleAddVersion(VERSION); return MOD_CONT; }
int AnopeInit(int argc, char **argv) /* This will be executed when the module is loaded */ { Command *c; /* Pointer to a Command */ int status = 0; /* the status of our new command */ c = createCommand("moo", hs_moo_show, NULL, -1, -1, -1, -1, -1); /* Create a new command "moo" pointing to hs_moo */ moduleAddHelp(c,myHostServMooHelp); /* add help for all users to this command */ moduleAddRegHelp(c,myHostServMooRegHelp); /* add extra regular-user only help to this command */ moduleAddOperHelp(c,myHostServMooOperHelp); /* add extra oper only help to this command */ moduleAddAdminHelp(c,myHostServMooAdminHelp); /* add extra admin only help to this command */ moduleAddRootHelp(c,myHostServMooRootHelp); /* add extra root only help to this command */ moduleSetHostHelp(myHostServHelp); /* add us to the .hs help list */ status = moduleAddCommand(HOSTSERV, c, MOD_HEAD); /* Add the command to the HOSTSERV cmd table */ /* Check if we have any argv's */ if(argc>0) { /* we do, the first will be the nick of the person modload'ing us */ /* or NULL if we were auto-loaded */ if(argv[0]) { alog("hs_moo was modloaded by: [%s]",argv[0]); } else { alog("hs_moo was automatically loaded by anope"); } } alog("hs_moo.so: Add Command 'moo' Status: %d",status); /* Log the command being added */ moduleAddCallback("test",time(NULL)+dotime("15s"),test,0,NULL); /* set a call-back function to exec in 3 mins time */ moduleDelCallback("test"); moduleAddAuthor(AUTHOR); /* tell Anope about the author */ moduleAddVersion(VERSION); /* Tell Anope about the verison */ if(status!=MOD_ERR_OK) { return MOD_STOP; } return MOD_CONT; }
int do_resetpass(User * u) { char *buffer = NULL; char *nick = NULL; char *email = NULL; char passcode[PASSCODELEN]; char *callBackinfo[1]; NickAlias *na = NULL; if ((RestrictReset == 1) && !(is_oper(u))) { notice_lang(s_NickServ, u, ACCESS_DENIED); return MOD_CONT; } buffer = moduleGetLastBuffer(); nick = myStrGetToken(buffer, ' ', 0); email = myStrGetToken(buffer, ' ', 1); if (!nick) { moduleNoticeLang(s_NickServ, u, RESETPASS_SYNTAX); } else if (!anope_valid_nick(nick)) { notice_lang(s_NickServ, u, NICK_X_FORBIDDEN, nick); } else if (!(na = findnick(nick))) { notice_lang(s_NickServ, u, NICK_X_NOT_REGISTERED, nick); } else if (na->status & NS_VERBOTEN) { notice_lang(s_NickServ, u, NICK_X_FORBIDDEN, na->nick); } else if (na->nc->flags & NI_SUSPENDED) { notice_lang(s_NickServ, u, NICK_X_SUSPENDED, na->nick); } else if (!na->nc->email) { notice_user(s_NickServ, u, "%s has no email associated with their account.", na->nick); } else if (moduleGetData(&na->nc->moduleData, MODULEDATAKEY)) { moduleNoticeLang(s_NickServ, u, RESETPASS_ALREADY_REQUESTED1, na->nick); moduleNoticeLang(s_NickServ, u, RESETPASS_ALREADY_REQUESTED2); } else if (!email && !is_oper(u) && !is_helpop(u)) { notice(s_NickServ, u->nick, "You need to provide the e-mail address associated with the account you are trying to reset the password on."); notice(s_NickServ, u->nick, "Syntax: /ns resetpass <nickname> <e-mail>"); } else if (!is_oper(u) && !is_helpop(u) && strcasecmp(email, na->nc->email)) { notice(s_NickServ, u->nick, "The e-mail address %s does not match the one associated with account %s.", email, na->nc->display); } else { generatePassCode(passcode); moduleAddData(&na->nc->moduleData, MODULEDATAKEY, passcode); if (do_sendmail(u, na) != 0) { alog(LOG_COULDNT_SENDMAIL, MYNAME, na->nick); moduleDelData(&na->nc->moduleData, MODULEDATAKEY); } else { callBackinfo[0] = na->nick; moduleAddCallback(MYNAME, time(NULL) + ExpirePassCode, expirePassCode, 1, callBackinfo); alog(LOG_RESETPASS_REQUESTED, MYNAME, u->nick, na->nick); moduleNoticeLang(s_NickServ, u, RESETPASS_SUCCESS, na->nick); moduleNoticeLang(s_NickServ, u, RESETPASS_INSTRUC); } } if (nick) free(nick); if (email) free(email); return MOD_CONT; }