]>
Commit | Line | Data |
---|---|---|
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 | ||
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; |
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 | } |