]> jfr.im git - irc/quakenet/newserv.git/blame - chanserv/authcmds/newpass.c
If you use nsmalloc() you need to use nsfree() as well...
[irc/quakenet/newserv.git] / chanserv / authcmds / newpass.c
CommitLineData
1dd6d55d 1/* Automatically generated by refactor.pl.
2 *
3 *
4 * CMDNAME: newpass
5 * CMDLEVEL: QCMD_AUTHED
6 * CMDARGS: 3
7 * CMDDESC: Change your password.
8 * CMDFUNC: csa_donewpw
9 * CMDPROTO: int csa_donewpw(void *source, int cargc, char **cargv);
10 */
11
12#include "../chanserv.h"
13#include "../authlib.h"
14#include "../../lib/irc_string.h"
15#include <stdio.h>
16#include <string.h>
17
18int csa_donewpw(void *source, int cargc, char **cargv) {
19 reguser *rup;
20 nick *sender=source;
21
22 if (cargc<3) {
23 chanservstdmessage(sender, QM_NOTENOUGHPARAMS, "newpass");
24 return CMD_ERROR;
25 }
26
27 if (!(rup=getreguserfromnick(sender)))
28 return CMD_ERROR;
29
30 if (!checkmasterpassword(rup, cargv[0])) {
31 chanservstdmessage(sender, QM_AUTHFAIL);
32 cs_log(sender,"NEWPASS FAIL username %s bad masterpassword %s",rup->username,cargv[0]);
33 return CMD_ERROR;
34 }
35
36 if (strcmp(cargv[1],cargv[2])) {
37 chanservstdmessage(sender, QM_PWDONTMATCH); /* Sorry, passwords do not match */
38 cs_log(sender,"NEWPASS FAIL username %s new passwords don't match (%s vs %s)",rup->username,cargv[1],cargv[2]);
39 return CMD_ERROR;
40 }
41
42 if (strlen(cargv[1]) < 6) {
43 chanservstdmessage(sender, QM_PWTOSHORT); /* new password to short */
44 cs_log(sender,"NEWPASS FAIL username %s password to short %s (%d characters)",rup->username,cargv[1],strlen(cargv[1]));
45 return CMD_ERROR;
46 }
47
48 setpassword(rup, cargv[1]);
49 rup->lastauth=time(NULL);
50 chanservstdmessage(sender, QM_PWCHANGED);
51 cs_log(sender,"NEWPASS OK username %s", rup->username);
52 csdb_updateuser(rup);
53 csdb_createmail(rup, QMAIL_NEWPW);
54
55 return CMD_OK;
56}