summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorcyberbotx <cyberbotx@5417fbe8-f217-4b02-8779-1006273d7864>2009-02-09 23:13:36 +0000
committercyberbotx <cyberbotx@5417fbe8-f217-4b02-8779-1006273d7864>2009-02-09 23:13:36 +0000
commitd931ce809629e07636740b07c2087ffc80fa8029 (patch)
tree42b7336a80accd2de8a50513c7a99acd123800e1 /src
parentfc0deb2181cfae35eb186c73289131924fd258f6 (diff)
Changed cs_sendpass to use new command API.
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@1965 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src')
-rw-r--r--src/core/cs_sendpass.c147
1 files changed, 74 insertions, 73 deletions
diff --git a/src/core/cs_sendpass.c b/src/core/cs_sendpass.c
index 932b246ca..49eff6419 100644
--- a/src/core/cs_sendpass.c
+++ b/src/core/cs_sendpass.c
@@ -15,103 +15,104 @@
#include "module.h"
-int do_sendpass(User * u);
-void myChanServHelp(User * u);
+void myChanServHelp(User *u);
-class CSSendPass : public Module
+class CommandCSSendPass : public Command
{
public:
- CSSendPass(const std::string &modname, const std::string &creator) : Module(modname, creator)
+ CommandCSSendPass() : Command("SENDPASS", 1, 1)
{
+ }
- Command *c;
+ CommandResult Execute(User *u, std::vector<std::string> &params)
+ {
+ const char *chan = params[0].c_str();
+ ChannelInfo *ci;
+ NickCore *founder;
+
+ if (RestrictMail && !is_services_oper(u))
+ notice_lang(s_ChanServ, u, PERMISSION_DENIED);
+ else if (!(ci = cs_findchan(chan)) || !(founder = ci->founder))
+ notice_lang(s_ChanServ, u, CHAN_X_NOT_REGISTERED, chan);
+ else if (ci->flags & CI_VERBOTEN)
+ notice_lang(s_ChanServ, u, CHAN_X_FORBIDDEN, chan);
+ else
+ {
+ char buf[BUFSIZE];
+ char tmp_pass[PASSMAX];
+ if (enc_decrypt(ci->founderpass, tmp_pass, PASSMAX - 1) == 1)
+ {
+ MailInfo *mail;
+
+ snprintf(buf, sizeof(buf), getstring2(founder, CHAN_SENDPASS_SUBJECT), ci->name);
+ mail = MailBegin(u, founder, buf, s_ChanServ);
+ if (!mail)
+ return MOD_CONT;
+
+ fprintf(mail->pipe, getstring2(founder, CHAN_SENDPASS_HEAD));
+ fprintf(mail->pipe, "\n\n");
+ fprintf(mail->pipe, getstring2(founder, CHAN_SENDPASS_LINE_1),
+ ci->name);
+ fprintf(mail->pipe, "\n\n");
+ fprintf(mail->pipe, getstring2(founder, CHAN_SENDPASS_LINE_2),
+ tmp_pass);
+ fprintf(mail->pipe, "\n\n");
+ fprintf(mail->pipe, getstring2(founder, CHAN_SENDPASS_LINE_3));
+ fprintf(mail->pipe, "\n\n");
+ fprintf(mail->pipe, getstring2(founder, CHAN_SENDPASS_LINE_4));
+ fprintf(mail->pipe, "\n\n");
+ fprintf(mail->pipe, getstring2(founder, CHAN_SENDPASS_LINE_5),
+ NetworkName);
+ fprintf(mail->pipe, "\n.\n");
+
+ MailEnd(mail);
+
+ alog("%s: %s!%s@%s used SENDPASS on %s", s_ChanServ, u->nick, u->GetIdent().c_str(), u->host, chan);
+ notice_lang(s_ChanServ, u, CHAN_SENDPASS_OK, chan);
+ }
+ else
+ notice_lang(s_ChanServ, u, CHAN_SENDPASS_UNAVAILABLE);
+ }
+ return MOD_CONT;
+ }
+ bool OnHelp(User *u, const std::string &subcommand)
+ {
+ notice_lang(s_ChanServ, u, CHAN_HELP_SENDPASS);
+ return true;
+ }
+
+ void OnSyntaxError(User *u)
+ {
+ syntax_error(s_ChanServ, u, "SENDPASS", CHAN_SENDPASS_SYNTAX);
+ }
+};
+
+class CSSendPass : public Module
+{
+ public:
+ CSSendPass(const std::string &modname, const std::string &creator) : Module(modname, creator)
+ {
this->SetAuthor("Anope");
this->SetVersion("$Id$");
this->SetType(CORE);
- c = createCommand("SENDPASS", do_sendpass, NULL, CHAN_HELP_SENDPASS,
- -1, -1, -1, -1);
- this->AddCommand(CHANSERV, c, MOD_UNIQUE);
+ this->AddCommand(CHANSERV, new CommandCSSendPass(), MOD_UNIQUE);
this->SetChanHelp(myChanServHelp);
if (!UseMail)
- {
throw ModuleException("sendpass may not be loaded if UseMail is loaded");
- }
}
};
-
-
/**
* Add the help response to anopes /cs help output.
* @param u The user who is requesting help
**/
-void myChanServHelp(User * u)
+void myChanServHelp(User *u)
{
notice_lang(s_ChanServ, u, CHAN_HELP_CMD_SENDPASS);
}
-/**
- * The /cs sendpass command.
- * @param u The user who issued the command
- * @param MOD_CONT to continue processing other modules, MOD_STOP to stop processing.
- **/
-int do_sendpass(User * u)
-{
-
- char *chan = strtok(NULL, " ");
- ChannelInfo *ci;
- NickCore *founder;
-
- if (!chan) {
- syntax_error(s_ChanServ, u, "SENDPASS", CHAN_SENDPASS_SYNTAX);
- } else if (RestrictMail && !is_services_oper(u)) {
- notice_lang(s_ChanServ, u, PERMISSION_DENIED);
- } else if (!(ci = cs_findchan(chan)) || !(founder = ci->founder)) {
- notice_lang(s_ChanServ, u, CHAN_X_NOT_REGISTERED, chan);
- } else if (ci->flags & CI_VERBOTEN) {
- notice_lang(s_ChanServ, u, CHAN_X_FORBIDDEN, chan);
- } else {
- char buf[BUFSIZE];
- char tmp_pass[PASSMAX];
- if(enc_decrypt(ci->founderpass,tmp_pass,PASSMAX - 1)==1) {
- MailInfo *mail;
-
- snprintf(buf, sizeof(buf),
- getstring2(founder, CHAN_SENDPASS_SUBJECT), ci->name);
- mail = MailBegin(u, founder, buf, s_ChanServ);
- if (!mail)
- return MOD_CONT;
-
- fprintf(mail->pipe, getstring2(founder, CHAN_SENDPASS_HEAD));
- fprintf(mail->pipe, "\n\n");
- fprintf(mail->pipe, getstring2(founder, CHAN_SENDPASS_LINE_1),
- ci->name);
- fprintf(mail->pipe, "\n\n");
- fprintf(mail->pipe, getstring2(founder, CHAN_SENDPASS_LINE_2),
- tmp_pass);
- fprintf(mail->pipe, "\n\n");
- fprintf(mail->pipe, getstring2(founder, CHAN_SENDPASS_LINE_3));
- fprintf(mail->pipe, "\n\n");
- fprintf(mail->pipe, getstring2(founder, CHAN_SENDPASS_LINE_4));
- fprintf(mail->pipe, "\n\n");
- fprintf(mail->pipe, getstring2(founder, CHAN_SENDPASS_LINE_5),
- NetworkName);
- fprintf(mail->pipe, "\n.\n");
-
- MailEnd(mail);
-
- alog("%s: %s!%s@%s used SENDPASS on %s", s_ChanServ, u->nick,
- u->GetIdent().c_str(), u->host, chan);
- notice_lang(s_ChanServ, u, CHAN_SENDPASS_OK, chan);
- } else {
- notice_lang(s_ChanServ, u, CHAN_SENDPASS_UNAVAILABLE);
- }
- }
- return MOD_CONT;
-}
-
MODULE_INIT("cs_sendpass", CSSendPass)