First step of expiry of +p crap.
This commit is contained in:
parent
eccd1c58d2
commit
9ace21a74d
|
@ -529,6 +529,7 @@ general {
|
|||
reject_duration = 5 minutes;
|
||||
throttle_duration = 60;
|
||||
throttle_count = 4;
|
||||
expire_override_time = 5 minutes;
|
||||
};
|
||||
|
||||
modules {
|
||||
|
|
|
@ -1334,6 +1334,11 @@ 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 will be automatically unset
|
||||
* this long after it is set. 0 disables this. Default is 5 minutes.
|
||||
*/
|
||||
expire_override_time = 5 minutes;
|
||||
};
|
||||
|
||||
modules {
|
||||
|
|
|
@ -218,6 +218,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
|
||||
|
|
|
@ -181,6 +181,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,
|
||||
|
|
|
@ -2213,6 +2213,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 }
|
||||
};
|
||||
|
||||
|
|
|
@ -798,6 +798,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;
|
||||
|
||||
|
|
12
src/s_user.c
12
src/s_user.c
|
@ -905,6 +905,14 @@ show_other_user_mode(struct Client *source_p, struct Client *target_p)
|
|||
target_p->name, buf);
|
||||
}
|
||||
|
||||
static void
|
||||
expire_umode_p(void *data)
|
||||
{
|
||||
struct Client *source_p = data;
|
||||
char *parv[4] = {source_p->name, source_p->name, "-p", NULL};
|
||||
user_mode(source_p, source_p, 3, parv);
|
||||
}
|
||||
|
||||
/*
|
||||
* user_mode - set get current users mode
|
||||
*
|
||||
|
@ -979,6 +987,10 @@ user_mode(struct Client *client_p, struct Client *source_p, int parc, const char
|
|||
sendto_one_numeric(source_p, RPL_SNOMASK, form_str(RPL_SNOMASK),
|
||||
construct_snobuf(source_p->snomask));
|
||||
|
||||
/* If we're setting +p, expire it */
|
||||
if(ConfigFileEntry.expire_override_time && (source_p->umodes & ~setflags) & UMODE_OVERRIDE)
|
||||
rb_event_addonce("expire_override", expire_umode_p, source_p, ConfigFileEntry.expire_override_time);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue