]> jfr.im git - irc/quakenet/newserv.git/blob - chanserv/authcmds/hello.c
merge
[irc/quakenet/newserv.git] / chanserv / authcmds / hello.c
1 /* Automatically generated by refactor.pl.
2 *
3 *
4 * CMDNAME: hello
5 * CMDLEVEL: QCMD_NOTAUTHED
6 * CMDARGS: 2
7 * CMDDESC: Creates a new user account.
8 * CMDFUNC: csa_dohello
9 * CMDPROTO: int csa_dohello(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
18 int csa_dohello(void *source, int cargc, char **cargv) {
19 nick *sender=source;
20 reguser *rup;
21 char userhost[USERLEN+HOSTLEN+2];
22 maildomain *mdp, *smdp;
23 char *local;
24
25 if (getreguserfromnick(sender))
26 return CMD_ERROR;
27
28 if (cargc<2) {
29 chanservstdmessage(sender, QM_NOTENOUGHPARAMS, "hello");
30 return CMD_ERROR;
31 }
32
33 if (findreguserbynick(sender->nick)) {
34 chanservstdmessage(sender, QM_AUTHNAMEINUSE, sender->nick);
35 return CMD_ERROR;
36 }
37
38 if (strcmp(cargv[0],cargv[1])) {
39 chanservstdmessage(sender, QM_EMAILDONTMATCH);
40 cs_log(sender,"HELLO FAIL username %s email don't match (%s vs %s)",sender->nick,cargv[0],cargv[1]);
41 return CMD_ERROR;
42 }
43
44 if (csa_checkeboy(sender, cargv[0]))
45 return CMD_ERROR;
46
47 mdp=findorcreatemaildomain(cargv[0]);
48 for(smdp=mdp; smdp; smdp=smdp->parent) {
49 if((smdp->count >= smdp->limit) && (smdp->limit > 0)) {
50 chanservstdmessage(sender, QM_DOMAINLIMIT);
51 return CMD_ERROR;
52 }
53 }
54
55 reguser *ruh;
56 int found=0;
57
58 local=strchr(strdup(cargv[0]), '@');
59 *(local++)='\0';
60 for (ruh=mdp->users; ruh; ruh=ruh->nextbydomain) {
61 if (ruh->localpart)
62 if (!match(local, ruh->localpart->content)) {
63 found++;
64 }
65 }
66
67 if((found > mdp->actlimit) && (mdp->actlimit > 0)) {
68 chanservstdmessage(sender, QM_DOMAINLIMIT);
69 return CMD_ERROR;
70 }
71
72 rup=getreguser();
73 rup->status=0;
74 rup->ID=++lastuserID;
75 strncpy(rup->username,sender->nick,NICKLEN); rup->username[NICKLEN]='\0';
76 rup->created=time(NULL);
77 rup->lastauth=time(NULL);
78 rup->lastemailchange=time(NULL);
79 rup->flags=QUFLAG_NOTICE;
80 rup->languageid=0;
81 rup->suspendby=0;
82 rup->suspendexp=0;
83 rup->password[0]='\0';
84 rup->masterpass[0]='\0';
85 rup->email=getsstring(cargv[0],EMAILLEN);
86 rup->localpart=getsstring(local,EMAILLEN);
87 rup->domain=mdp;
88 addregusertomaildomain(rup, rup->domain);
89 rup->info=NULL;
90 sprintf(userhost,"%s@%s",sender->ident,sender->host->name->content);
91 rup->lastuserhost=getsstring(userhost,USERLEN+HOSTLEN+1);
92 rup->suspendreason=NULL;
93 rup->comment=NULL;
94 rup->knownon=NULL;
95 rup->checkshd=NULL;
96 rup->stealcount=0;
97 rup->fakeuser=NULL;
98 rup->nicks=NULL;
99 addregusertohash(rup);
100 csa_createrandompw(rup->password, PASSLEN);
101 csa_createrandompw(rup->masterpass, PASSLEN);
102 chanservstdmessage(sender, QM_NEWACCOUNT, rup->username,rup->email->content);
103 cs_log(sender,"HELLO OK created auth %s (%s)",rup->username,rup->email->content);
104 csdb_createuser(rup);
105 csdb_createmail(rup, QMAIL_NEWACCOUNT);
106
107 return CMD_OK;
108 }