]>
jfr.im git - irc/quakenet/newserv.git/blob - chanserv/authlib.c
5 #include "../lib/irc_string.h"
19 if (!regcomp(&preg
, VALID_EMAIL
, REG_EXTENDED
| REG_NOSUB
| REG_ICASE
))
26 void csa_freeregex() {
31 * use regex matching to determine if it's a valid eboy or not
33 int csa_checkeboy(nick
*sender
, char *eboy
)
37 len
= (((strlen(eboy
)) < (EMAILLEN
)) ? (strlen(eboy
)) : (EMAILLEN
));
40 chanservstdmessage(sender
, QM_EMAILTOOSHORT
, eboy
);
44 if (strstr(&eboy
[1], "@") == NULL
) {
46 chanservstdmessage(sender
, QM_EMAILNOAT
, eboy
);
50 if (eboy
[len
- 1] == '@') {
52 chanservstdmessage(sender
, QM_EMAILATEND
, eboy
);
56 for (i
= 0; i
< len
; i
++) {
57 if (!isalpha(eboy
[i
]) && !isdigit(eboy
[i
])
58 && !(eboy
[i
] == '@') && !(eboy
[i
] == '.')
59 && !(eboy
[i
] == '_') && !(eboy
[i
] == '-')) {
61 chanservstdmessage(sender
, QM_EMAILINVCHR
, eboy
);
66 /* catch some real lame attempts */
67 if (!ircd_strncmp("user@mymailhost.xx", eboy
, len
) || !ircd_strncmp("info@quakenet.org", eboy
, len
)
68 || !ircd_strncmp("user@mymail.xx", eboy
, len
) || !ircd_strncmp("user@mail.cc", eboy
, len
)
69 || !ircd_strncmp("user@host.com", eboy
, len
) || !ircd_strncmp("Jackie@your.isp.com", eboy
, len
)
70 || !ircd_strncmp("QBot@QuakeNet.org", eboy
, len
)) {
72 chanservstdmessage(sender
, QM_NOTYOUREMAIL
, eboy
);
77 if (regexec(&preg
, eboy
, (size_t) 0, NULL
, 0)) {
79 chanservstdmessage(sender
, QM_INVALIDEMAIL
, eboy
);
87 * create a random pw. code stolen from fox's O
89 void csa_createrandompw(char *pw
, int n
)
92 char upwdchars
[] = "ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz123456789-!";
94 for (i
= 0; i
< n
; i
++) {
95 pw
[i
] = upwdchars
[rand() % (sizeof(upwdchars
) - 1)];
101 * check if account is "throttled"
103 int csa_checkthrottled(nick
*sender
, reguser
*rup
, char *s
)
110 d
=MAX_RESEND_TIME
+rup
->lastemailchange
-now
;
112 if (d
>MAX_RESEND_TIME
)
116 t
= ((float) d
) / ((float) 3600);
117 chanservstdmessage(sender
, QM_MAILTHROTTLED
, t
);
118 cs_log(sender
,"%s FAIL username %s, new request throttled for %.1f hours",s
,rup
->username
,t
);