]>
jfr.im git - irc/quakenet/newserv.git/blob - chanserv/authcmds/reset.c
1 /* Automatically generated by refactor.pl.
5 * CMDLEVEL: QCMD_NOTAUTHED
7 * CMDDESC: Restores the old details on an account after a change.
9 * CMDPROTO: int csa_doreset(void *source, int cargc, char **cargv);
10 * CMDHELP: Usage: RESET <username> <code>
11 * CMDHELP: Restores your old email address and password if any of these
12 * CMDHELP: have recently changed, where the following parameters are:
13 * CMDHELP: username - your username
14 * CMDHELP: code - the code received in the RESET email.
17 #include "../chanserv.h"
18 #include "../authlib.h"
19 #include "../../lib/irc_string.h"
20 #include "../../lib/hmac.h"
25 int csa_doreset(void *source
, int cargc
, char **cargv
) {
28 char newpassword
[PASSLEN
+1];
32 chanservstdmessage(sender
, QM_NOTENOUGHPARAMS
, "reset");
36 if (!(rup
=findreguser(sender
, cargv
[0])))
40 if(UHasStaffPriv(rup
) || (!rup
->lockuntil
|| rup
->lockuntil
<= t
)) {
41 chanservstdmessage(sender
, QM_ACCOUNTNOTLOCKED
);
45 if(hmac_strcmp(cargv
[1], csc_generateresetcode(rup
->lockuntil
, rup
->username
))) {
46 chanservstdmessage(sender
, QM_BADRESETCODE
);
50 csa_createrandompw(newpassword
, PASSLEN
);
53 csdb_accounthistory_insert(sender
, rup
->password
, newpassword
, rup
->email
?rup
->email
->content
:NULL
, rup
->lastemail
->content
);
55 freesstring(rup
->email
);
56 rup
->email
=rup
->lastemail
;
59 csdb_accounthistory_insert(sender
, rup
->password
, newpassword
, NULL
, NULL
);
61 setpassword(rup
, newpassword
);
64 rup
->lastpasschange
=t
;
66 cs_log(sender
,"RESET OK username %s", rup
->username
);
68 csdb_createmail(rup
, QMAIL_RESET
);
69 chanservstdmessage(sender
, QM_RESETOK
);