]>
jfr.im git - irc/quakenet/newserv.git/blob - chanserv/authlib.c
5 #include "../lib/irc_string.h"
15 if (regcomp(&preg
, VALID_EMAIL
, REG_EXTENDED
| REG_NOSUB
| REG_ICASE
))
21 void csa_freeregex() {
26 * use regex matching to determine if it's a valid eboy or not
28 int csa_checkeboy(nick
*sender
, char *eboy
)
32 len
= (((strlen(eboy
)) < (EMAILLEN
)) ? (strlen(eboy
)) : (EMAILLEN
));
35 chanservstdmessage(sender
, QM_EMAILTOOSHORT
, eboy
);
39 if (strstr(&eboy
[1], "@") == NULL
) {
41 chanservstdmessage(sender
, QM_EMAILNOAT
, eboy
);
45 if (eboy
[len
- 1] == '@') {
47 chanservstdmessage(sender
, QM_EMAILATEND
, eboy
);
51 for (i
= 0; i
< len
; i
++) {
52 if (!isalpha(eboy
[i
]) && !isdigit(eboy
[i
])
53 && !(eboy
[i
] == '@') && !(eboy
[i
] == '.')
54 && !(eboy
[i
] == '_') && !(eboy
[i
] == '-')) {
56 chanservstdmessage(sender
, QM_EMAILINVCHR
, eboy
);
61 /* catch some real lame attempts */
62 if (!ircd_strncmp("user@mymailhost.xx", eboy
, len
) || !ircd_strncmp("info@quakenet.org", eboy
, len
)
63 || !ircd_strncmp("user@mymail.xx", eboy
, len
) || !ircd_strncmp("user@mail.cc", eboy
, len
)
64 || !ircd_strncmp("user@host.com", eboy
, len
) || !ircd_strncmp("Jackie@your.isp.com", eboy
, len
)
65 || !ircd_strncmp("QBot@QuakeNet.org", eboy
, len
)) {
67 chanservstdmessage(sender
, QM_NOTYOUREMAIL
, eboy
);
71 if (regexec(&preg
, eboy
, (size_t) 0, NULL
, 0)) {
73 chanservstdmessage(sender
, QM_INVALIDEMAIL
, eboy
);
81 * create a random pw. code stolen from fox's O
83 void csa_createrandompw(char *pw
, int n
)
86 char upwdchars
[] = "ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz123456789-!";
88 for (i
= 0; i
< n
; i
++) {
89 pw
[i
] = upwdchars
[rand() % (sizeof(upwdchars
) - 1)];
95 * check if account is "throttled"
97 int csa_checkthrottled(nick
*sender
, reguser
*rup
, char *s
)
104 d
=MAX_RESEND_TIME
+rup
->lastemailchange
-now
;
106 if (d
>MAX_RESEND_TIME
)
110 t
= ((float) d
) / ((float) 3600);
111 chanservstdmessage(sender
, QM_MAILTHROTTLED
, t
);
112 cs_log(sender
,"%s FAIL username %s, new request throttled for %.1f hours",s
,rup
->username
,t
);