]>
Commit | Line | Data |
---|---|---|
1dd6d55d | 1 | /* Automatically generated by refactor.pl. |
2 | * | |
3 | * | |
4 | * CMDNAME: setemail | |
5 | * CMDLEVEL: QCMD_OPER | |
dae08100 | 6 | * CMDARGS: 3 |
1dd6d55d | 7 | * CMDDESC: Set the email address. |
8 | * CMDFUNC: csa_dosetmail | |
9 | * CMDPROTO: int csa_dosetmail(void *source, int cargc, char **cargv); | |
dae08100 | 10 | * CMDHELP: Usage: setemail <username> <email address> <reason for modification> |
85174237 | 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 | ||
20 | int 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; |
dae08100 | 25 | char *reason; |
1dd6d55d | 26 | |
dae08100 | 27 | if (cargc<3) { |
1dd6d55d | 28 | chanservstdmessage(sender, QM_NOTENOUGHPARAMS, "setemail"); |
29 | return CMD_ERROR; | |
30 | } | |
31 | ||
32 | if (!(rup=findreguser(sender, cargv[0]))) | |
33 | return CMD_ERROR; | |
34 | ||
e2792f61 CP |
35 | if(rup->email && !strcasecmp(cargv[1], rup->email->content)) { |
36 | chanservstdmessage(sender, QM_EMAILMATCHESOLD); | |
37 | return CMD_ERROR; | |
38 | } | |
39 | ||
1dd6d55d | 40 | if (csa_checkeboy(sender, cargv[1])) |
41 | return CMD_ERROR; | |
42 | ||
dae08100 CP |
43 | reason = cargv[2]; |
44 | if(!checkreason(sender, reason)) | |
45 | return CMD_ERROR; | |
46 | ||
372e4f1d | 47 | if(UHasStaffPriv(rup)) { |
dae08100 CP |
48 | cs_log(sender,"SETEMAIL FAILED username %s (reason: %s)",rup->username, reason); |
49 | chanservwallmessage("%s (%s) just FAILED using SETEMAIL on %s: %s (reason: %s)", sender->nick, vrup->username, rup->username, cargv[1], reason); | |
30dd0aec CP |
50 | chanservsendmessage(sender, "Sorry, that user is privileged."); |
51 | return CMD_ERROR; | |
52 | } | |
53 | ||
0f32b411 | 54 | csdb_accounthistory_insert(sender, NULL, NULL, rup->email?rup->email->content:NULL, cargv[1]); |
e3805f60 | 55 | delreguserfrommaildomain(rup,rup->domain); |
1dd6d55d | 56 | freesstring(rup->email); |
57 | rup->email=getsstring(cargv[1],EMAILLEN); | |
58 | rup->lastemailchange=time(NULL); | |
30a66d6c CP |
59 | if(rup->lastemail) { |
60 | freesstring(rup->lastemail); | |
61 | rup->lastemail=NULL; | |
62 | } | |
63 | rup->lockuntil=0; | |
e3805f60 P |
64 | rup->domain=findorcreatemaildomain(rup->email->content); |
65 | addregusertomaildomain(rup, rup->domain); | |
bbc9e3a6 | 66 | dupemail = strdup(rup->email->content); |
80d2de64 | 67 | if((local=strchr(dupemail, '@'))) { |
e3805f60 | 68 | *(local++)='\0'; |
96e1f81d | 69 | rup->localpart=getsstring(dupemail,EMAILLEN); |
e3805f60 P |
70 | } else { |
71 | rup->localpart=NULL; | |
72 | } | |
c7970ab7 | 73 | free(dupemail); |
e3805f60 | 74 | |
1dd6d55d | 75 | chanservstdmessage(sender, QM_EMAILCHANGED, cargv[1]); |
dae08100 CP |
76 | cs_log(sender,"SETEMAIL OK username %s <%s> (reason: %s)",rup->username,rup->email->content, reason); |
77 | chanservwallmessage("%s (%s) just used SETEMAIL on %s: %s (reason: %s)", sender->nick, vrup->username, rup->username, rup->email->content, reason); | |
30dd0aec | 78 | |
1dd6d55d | 79 | csdb_updateuser(rup); |
80 | ||
81 | return CMD_OK; | |
82 | } |