#define KEY_EMAIL_SEARCH_LEVEL "email_search_level"
#define KEY_OUNREGISTER_INACTIVE "ounregister_inactive"
#define KEY_OUNREGISTER_FLAGS "ounregister_flags"
+#define KEY_HANDLE_TS_MODE "account_timestamp_mode"
#define KEY_ID "id"
#define KEY_PASSWD "passwd"
static void nickserv_reclaim_p(void *data);
static int nickserv_addmask(struct userNode *user, struct handle_info *hi, const char *mask);
+enum handle_ts_mode {
+ TS_IGNORE,
+ TS_IRCU
+};
+
static struct {
unsigned int disable_nicks : 1;
unsigned int valid_handle_regex_set : 1;
struct policer_params *auth_policer_params;
enum reclaim_action reclaim_action;
enum reclaim_action auto_reclaim_action;
+ enum handle_ts_mode handle_ts_mode;
unsigned long auto_reclaim_delay;
unsigned char default_maxlogins;
unsigned char hard_maxlogins;
if(pos)
nickserv_conf.ounregister_flags |= 1 << (pos - 1);
}
+ str = database_get_data(conf_node, KEY_HANDLE_TS_MODE, RECDB_QSTRING);
+ if (!str)
+ nickserv_conf.handle_ts_mode = TS_IGNORE;
+ else if (!irccasecmp(str, "ircu"))
+ nickserv_conf.handle_ts_mode = TS_IRCU;
+ else
+ nickserv_conf.handle_ts_mode = TS_IGNORE;
if (!nickserv_conf.disable_nicks) {
str = database_get_data(conf_node, "reclaim_action", RECDB_QSTRING);
nickserv_conf.reclaim_action = str ? reclaim_action_from_string(str) : RECLAIM_NONE;
}
if (hi) {
+ if ((nickserv_conf.handle_ts_mode == TS_IRCU)
+ && (timestamp != hi->registered)) {
+ return;
+ }
if (HANDLE_FLAGGED(hi, SUSPENDED)) {
return;
}
"default_maxlogins" "2";
// what is the absolute maxlogins value?
"hard_maxlogins" "10";
+ // Which mode should we use for account timestamps?
+ "account_timestamp_mode" "ignore";
// This names a file that contains easily guessed passwords.
// It always contains "password", "<password>" and the user's
// account name.