#define LINGERTIME 300
#define DUMPINTERVAL 300
#define EMAILLEN 60
-#define CHANTYPES 8
+#define CHANTYPES 9
#define CHANOPHISTORY 10
/* Suspension and g-line hit count limits */
#define CHALLENGEAUTHSITE "http://www.quakenet.org/development/challengeauth/"
/* Cleanup options */
-#define CLEANUP_ACCOUNT_INACTIVE 80
+#define CLEANUP_ACCOUNT_INACTIVE 180
#define CLEANUP_ACCOUNT_UNUSED 3
#define CLEANUP_CHANNEL_INACTIVE 40
/* email */
#define MAX_RESEND_TIME 2*3600L /* cooling off period */
-#define VALID_EMAIL "^[-_.+[:alpha:][:digit:]]+(\\.[-_[:digit:][:alpha:]]+)*@([[:digit:][:alpha:]](-?[[:digit:][:alpha:]])*\\.)+[[:alpha:]]{2}([zmuvtgol]|fo|me|seum|op|ro)?$"
+#define VALID_EMAIL "\\A[^\\s\\+@]+@([a-z0-9][a-z0-9\\-]*\\.)+[a-z]{2,}\\Z"
-#define VALID_ACCOUNT_NAME "^[a-z][-a-z0-9]+$"
+#define VALID_ACCOUNT_NAME "\\A[a-z][a-z0-9\\-]+\\Z"
#define QMAIL_NEWACCOUNT 1 /* new account */
#define QMAIL_REQPW 2 /* requestpassword */
void chanserv_finalinit();
/* chanservalloc.c */
-void chanservallocinit();
-void csfreeall();
regchan *getregchan();
void freeregchan(regchan *rcp);
reguser *getreguser();
char *csdb_gethelpstr(char *command, int language);
void csdb_createmail(reguser *rup, int type);
void csdb_dohelp(nick *np, Command *cmd);
+void csdb_flushchannelcounters(void *arg);
#define q9asyncquery(handler, tag, format, ...) dbasyncqueryi(q9dbid, handler, tag, format , ##__VA_ARGS__)
#define q9a_asyncquery(handler, tag, format, ...) dbasyncqueryi(q9adbid, handler, tag, format , ##__VA_ARGS__)
int checkresponse(reguser *rup, const unsigned char *entropy, const char *response, CRAlgorithm algorithm);
int checkhashpass(reguser *rup, const char *junk, const char *hash);
flag_t cs_sanitisechanlev(flag_t flags);
-typedef int (*UnbanFN)(void *arg, struct chanban *ban);
-int cs_unbanfn(nick *sender, chanindex *cip, UnbanFN fn, void *arg, int removepermbans, int abortonfailure);
+int cs_unbanfn(nick *sender, chanindex *cip, int (*fn)(void *arg, struct chanban *ban), void *arg, int removepermbans, int abortonfailure);
void cs_logchanop(regchan *rcp, char *nick, reguser *rup);
int checkreason(nick *np, char *reason);
+regchan *cs_addchan(chanindex *cip, nick *sender, reguser *addedby, reguser *founder, flag_t flags, flag_t forcemodes, flag_t denymodes, short type);
/* chanservstdcmds.c */
int cs_doshowcommands(void *source, int cargc, char **cargv);