]>
jfr.im git - irc/quakenet/newserv.git/blob - chanserv/authcmds/hello.c
1 /* Automatically generated by refactor.pl.
5 * CMDLEVEL: QCMD_NOTAUTHED
7 * CMDDESC: Creates a new user account.
9 * CMDPROTO: int csa_dohello(void *source, int cargc, char **cargv);
12 #include "../chanserv.h"
13 #include "../authlib.h"
14 #include "../../lib/irc_string.h"
18 int csa_dohello(void *source
, int cargc
, char **cargv
) {
21 char userhost
[USERLEN
+HOSTLEN
+2];
22 maildomain
*mdp
, *smdp
;
25 if (getreguserfromnick(sender
))
29 chanservstdmessage(sender
, QM_NOTENOUGHPARAMS
, "hello");
33 if (findreguserbynick(sender
->nick
)) {
34 chanservstdmessage(sender
, QM_AUTHNAMEINUSE
, sender
->nick
);
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]);
44 if (csa_checkeboy(sender
, cargv
[0]))
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
);
58 local
=strchr(strdup(cargv
[0]), '@');
60 for (ruh
=mdp
->users
; ruh
; ruh
=ruh
->nextbydomain
) {
62 if (!match(local
, ruh
->localpart
->content
)) {
67 if((found
> mdp
->actlimit
) && (mdp
->actlimit
> 0)) {
68 chanservstdmessage(sender
, QM_DOMAINLIMIT
);
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
;
83 rup
->password
[0]='\0';
84 rup
->masterpass
[0]='\0';
85 rup
->email
=getsstring(cargv
[0],EMAILLEN
);
86 rup
->localpart
=getsstring(local
,EMAILLEN
);
88 addregusertomaildomain(rup
, rup
->domain
);
90 sprintf(userhost
,"%s@%s",sender
->ident
,sender
->host
->name
->content
);
91 rup
->lastuserhost
=getsstring(userhost
,USERLEN
+HOSTLEN
+1);
92 rup
->suspendreason
=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
);