]> jfr.im git - irc/quakenet/newserv.git/blame - chanserv/authcmds/setemail.c
Now accounthistory is updated in every function that touches email addresses or passw...
[irc/quakenet/newserv.git] / chanserv / authcmds / setemail.c
CommitLineData
1dd6d55d 1/* Automatically generated by refactor.pl.
2 *
3 *
4 * CMDNAME: setemail
5 * CMDLEVEL: QCMD_OPER
6 * CMDARGS: 2
7 * CMDDESC: Set the email address.
8 * CMDFUNC: csa_dosetmail
9 * CMDPROTO: int csa_dosetmail(void *source, int cargc, char **cargv);
85174237
CP
10 * CMDHELP: Usage: setemail <username> <email address>
11 * CMDHELP: Sets the email address for the specified username.
1dd6d55d 12 */
13
14#include "../chanserv.h"
15#include "../authlib.h"
16#include "../../lib/irc_string.h"
17#include <stdio.h>
18#include <string.h>
19
20int csa_dosetmail(void *source, int cargc, char **cargv) {
1dd6d55d 21 nick *sender=source;
30dd0aec 22 reguser *rup, *vrup = getreguserfromnick(sender);
bbc9e3a6 23 char *dupemail;
80d2de64 24 char *local;
1dd6d55d 25
26 if (cargc<2) {
27 chanservstdmessage(sender, QM_NOTENOUGHPARAMS, "setemail");
28 return CMD_ERROR;
29 }
30
31 if (!(rup=findreguser(sender, cargv[0])))
32 return CMD_ERROR;
33
e2792f61
CP
34 if(rup->email && !strcasecmp(cargv[1], rup->email->content)) {
35 chanservstdmessage(sender, QM_EMAILMATCHESOLD);
36 return CMD_ERROR;
37 }
38
1dd6d55d 39 if (csa_checkeboy(sender, cargv[1]))
40 return CMD_ERROR;
41
30dd0aec
CP
42 if(UHasHelperPriv(rup)) {
43 cs_log(sender,"SETEMAIL FAILED username %s",rup->username);
44 chanservwallmessage("%s (%s) just FAILED using SETEMAIL on %s: %s", sender->nick, vrup->username, rup->username, cargv[1]);
45 chanservsendmessage(sender, "Sorry, that user is privileged.");
46 return CMD_ERROR;
47 }
48
0f32b411 49 csdb_accounthistory_insert(sender, NULL, NULL, rup->email?rup->email->content:NULL, cargv[1]);
e3805f60 50 delreguserfrommaildomain(rup,rup->domain);
1dd6d55d 51 freesstring(rup->email);
52 rup->email=getsstring(cargv[1],EMAILLEN);
53 rup->lastemailchange=time(NULL);
30a66d6c
CP
54 if(rup->lastemail) {
55 freesstring(rup->lastemail);
56 rup->lastemail=NULL;
57 }
58 rup->lockuntil=0;
e3805f60
P
59 rup->domain=findorcreatemaildomain(rup->email->content);
60 addregusertomaildomain(rup, rup->domain);
bbc9e3a6 61 dupemail = strdup(rup->email->content);
80d2de64 62 if((local=strchr(dupemail, '@'))) {
e3805f60 63 *(local++)='\0';
96e1f81d 64 rup->localpart=getsstring(dupemail,EMAILLEN);
e3805f60
P
65 } else {
66 rup->localpart=NULL;
67 }
c7970ab7 68 free(dupemail);
e3805f60 69
1dd6d55d 70 chanservstdmessage(sender, QM_EMAILCHANGED, cargv[1]);
71 cs_log(sender,"SETEMAIL OK username %s <%s>",rup->username,rup->email->content);
30dd0aec
CP
72 chanservwallmessage("%s (%s) just used SETEMAIL on %s: %s", sender->nick, vrup->username, rup->username, rup->email->content);
73
1dd6d55d 74 csdb_updateuser(rup);
75
76 return CMD_OK;
77}