00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #include "module.h"
00017
00018 int do_getpass(User * u);
00019 void myChanServHelp(User * u);
00020
00027 int AnopeInit(int argc, char **argv)
00028 {
00029 Command *c;
00030
00031 moduleAddAuthor("Anope");
00032 moduleAddVersion("$Id: cs_getpass.c 1265 2007-08-26 15:33:06Z geniusdex $");
00033 moduleSetType(CORE);
00034
00035 c = createCommand("GETPASS", do_getpass, is_services_admin, -1, -1, -1,
00036 CHAN_SERVADMIN_HELP_GETPASS,
00037 CHAN_SERVADMIN_HELP_GETPASS);
00038 moduleAddCommand(CHANSERV, c, MOD_UNIQUE);
00039
00040 moduleSetChanHelp(myChanServHelp);
00041
00042 return MOD_CONT;
00043 }
00044
00048 void AnopeFini(void)
00049 {
00050
00051 }
00052
00053
00054
00059 void myChanServHelp(User * u)
00060 {
00061 if (is_services_admin(u)) {
00062 notice_lang(s_ChanServ, u, CHAN_HELP_CMD_GETPASS);
00063 }
00064 }
00065
00072 int do_getpass(User * u)
00073 {
00074 char *chan = strtok(NULL, " ");
00075 char tmp_pass[PASSMAX];
00076 ChannelInfo *ci;
00077
00078 if (!chan) {
00079 syntax_error(s_ChanServ, u, "GETPASS", CHAN_GETPASS_SYNTAX);
00080 } else if (!(ci = cs_findchan(chan))) {
00081 notice_lang(s_ChanServ, u, CHAN_X_NOT_REGISTERED, chan);
00082 } else if (ci->flags & CI_VERBOTEN) {
00083 notice_lang(s_ChanServ, u, CHAN_X_FORBIDDEN, chan);
00084 } else if (CSRestrictGetPass && !is_services_root(u)) {
00085 notice_lang(s_ChanServ, u, PERMISSION_DENIED);
00086 } else {
00087 if(enc_decrypt(ci->founderpass,tmp_pass,PASSMAX)==1) {
00088 alog("%s: %s!%s@%s used GETPASS on %s",
00089 s_ChanServ, u->nick, u->username, u->host, ci->name);
00090 if (WallGetpass) {
00091 anope_cmd_global(s_ChanServ,
00092 "\2%s\2 used GETPASS on channel \2%s\2",
00093 u->nick, chan);
00094 }
00095 notice_lang(s_ChanServ, u, CHAN_GETPASS_PASSWORD_IS,
00096 chan, ci->founderpass);
00097 } else {
00098 notice_lang(s_ChanServ, u, CHAN_GETPASS_UNAVAILABLE);
00099 }
00100 }
00101 return MOD_CONT;
00102 }