]>
jfr.im git - irc/quakenet/newserv.git/blob - chanserv/authcmds/email.c
1 /* Automatically generated by refactor.pl.
5 * CMDLEVEL: QCMD_AUTHED
7 * CMDDESC: Change your email address.
9 * CMDPROTO: int csa_doemail(void *source, int cargc, char **cargv);
12 #include "../chanserv.h"
13 #include "../authlib.h"
14 #include "../../lib/irc_string.h"
18 int csa_doemail(void *source
, int cargc
, char **cargv
) {
21 maildomain
*mdp
, *smdp
;
26 chanservstdmessage(sender
, QM_NOTENOUGHPARAMS
, "email");
30 if (!(rup
=getreguserfromnick(sender
)))
33 if (!checkmasterpassword(rup
, cargv
[0])) {
34 chanservstdmessage(sender
, QM_AUTHFAIL
);
35 cs_log(sender
,"EMAIL FAIL username %s bad masterpass %s",rup
->username
,cargv
[0]);
39 if (strcmp(cargv
[1],cargv
[2])) {
40 chanservstdmessage(sender
, QM_EMAILDONTMATCH
);
41 cs_log(sender
,"EMAIL FAIL username %s email don't match (%s vs %s)",rup
->username
,cargv
[1],cargv
[2]);
45 if (csa_checkeboy(sender
, cargv
[1]))
48 mdp
=findorcreatemaildomain(cargv
[1]);
49 for(smdp
=mdp
; smdp
; smdp
=smdp
->parent
) {
50 if((smdp
->count
>= smdp
->limit
) && (smdp
->limit
> 0)) {
51 chanservstdmessage(sender
, QM_DOMAINLIMIT
);
56 csdb_createmail(rup
, QMAIL_NEWEMAIL
);
57 csdb_accounthistory_insert(sender
, NULL
, NULL
, rup
->email
, getsstring(cargv
[1], EMAILLEN
));
58 delreguserfrommaildomain(rup
,rup
->domain
);
59 freesstring(rup
->email
);
60 rup
->email
=getsstring(cargv
[1],EMAILLEN
);
61 rup
->lastemailchange
=time(NULL
);
62 rup
->domain
=findorcreatemaildomain(rup
->email
->content
);
63 addregusertomaildomain(rup
, rup
->domain
);
64 dupemail
= strdup(rup
->email
->content
);
65 if((local
=strchr(dupemail
, '@'))) {
67 rup
->localpart
=getsstring(local
,EMAILLEN
);
73 chanservstdmessage(sender
, QM_EMAILCHANGED
, cargv
[1]);
74 cs_log(sender
,"EMAIL OK username %s",rup
->username
);