diff --git a/doc/example.conf b/doc/example.conf index ead3b0f..08ae57b 100755 --- a/doc/example.conf +++ b/doc/example.conf @@ -510,6 +510,7 @@ general { reject_duration = 5 minutes; throttle_duration = 60; throttle_count = 4; + expire_override_time = 5 minutes; }; modules { diff --git a/doc/reference.conf b/doc/reference.conf index 672946d..96057d7 100755 --- a/doc/reference.conf +++ b/doc/reference.conf @@ -1260,6 +1260,12 @@ general { /* throttle_count: Number of connections within throttle_duration that it takes * for throttling to take effect */ throttle_count = 4; + + /* expire_override_time: User mode +p (override) will be automatically unset + * this long after it is set. 0 disables this (not recommended). Default is + * 5 minutes. + */ + expire_override_time = 5 minutes; }; modules { diff --git a/include/s_conf.h b/include/s_conf.h index 625bfde..2a95669 100644 --- a/include/s_conf.h +++ b/include/s_conf.h @@ -217,6 +217,7 @@ struct config_file_entry int global_snotices; int operspy_dont_care_user_info; int secret_channels_in_whois; + int expire_override_time; }; struct config_channel_entry diff --git a/modules/m_info.c b/modules/m_info.c index 746ae41..18f7b58 100644 --- a/modules/m_info.c +++ b/modules/m_info.c @@ -175,6 +175,12 @@ static struct InfoStruct info_table[] = { &ConfigFileEntry.dots_in_ident, "Number of permissable dots in an ident" }, + { + "expire_override_time", + OUTPUT_DECIMAL, + &ConfigFileEntry.expire_override_time, + "Period of time after which to unset user mode +p" + }, { "failed_oper_notice", OUTPUT_BOOLEAN, diff --git a/src/newconf.c b/src/newconf.c index 168de2d..50ceefc 100644 --- a/src/newconf.c +++ b/src/newconf.c @@ -2199,6 +2199,7 @@ static struct ConfEntry conf_general_table[] = { "ts_warn_delta", CF_TIME, NULL, 0, &ConfigFileEntry.ts_warn_delta }, { "use_whois_actually", CF_YESNO, NULL, 0, &ConfigFileEntry.use_whois_actually }, { "warn_no_nline", CF_YESNO, NULL, 0, &ConfigFileEntry.warn_no_nline }, + { "expire_override_time", CF_TIME, NULL, 0, &ConfigFileEntry.expire_override_time }, { "\0", 0, NULL, 0, NULL } }; diff --git a/src/s_conf.c b/src/s_conf.c index dcdd30d..22ba9e7 100644 --- a/src/s_conf.c +++ b/src/s_conf.c @@ -783,6 +783,7 @@ set_default_conf(void) ConfigFileEntry.reject_duration = 120; ConfigFileEntry.throttle_count = 4; ConfigFileEntry.throttle_duration = 60; + ConfigFileEntry.expire_override_time = 300; ServerInfo.default_max_clients = MAXCONNECTIONS;