Add general::true_no_oper_flood . I'm not going to explain it here.
Ask me what it does on IRC if you're curious.
This commit is contained in:
parent
aa9a8067b1
commit
1cc810d3a7
|
@ -550,6 +550,7 @@ general {
|
||||||
connect_timeout = 30 seconds;
|
connect_timeout = 30 seconds;
|
||||||
disable_auth = no;
|
disable_auth = no;
|
||||||
no_oper_flood = yes;
|
no_oper_flood = yes;
|
||||||
|
true_no_oper_flood = no;
|
||||||
max_targets = 4;
|
max_targets = 4;
|
||||||
client_flood = 20;
|
client_flood = 20;
|
||||||
use_whois_actually = no;
|
use_whois_actually = no;
|
||||||
|
|
|
@ -1284,6 +1284,13 @@ general {
|
||||||
/* no oper flood: increase flood limits for opers. */
|
/* no oper flood: increase flood limits for opers. */
|
||||||
no_oper_flood = yes;
|
no_oper_flood = yes;
|
||||||
|
|
||||||
|
/* true no oper flood: Allow opers to NEVER hit flood limits.
|
||||||
|
* With the above setting, flood limits are set to 4x what they
|
||||||
|
* are for normal users. With this setting, they're removed entirely.
|
||||||
|
* ENABLE THIS SETTING WITH CAUTION.
|
||||||
|
*/
|
||||||
|
true_no_oper_flood = no;
|
||||||
|
|
||||||
/* REMOVE ME. The following line checks you've been reading. */
|
/* REMOVE ME. The following line checks you've been reading. */
|
||||||
havent_read_conf = yes;
|
havent_read_conf = yes;
|
||||||
|
|
||||||
|
|
|
@ -189,6 +189,7 @@ struct config_file_entry
|
||||||
int pace_wait_simple;
|
int pace_wait_simple;
|
||||||
int short_motd;
|
int short_motd;
|
||||||
int no_oper_flood;
|
int no_oper_flood;
|
||||||
|
int true_no_oper_flood;
|
||||||
int hide_server;
|
int hide_server;
|
||||||
int hide_spoof_ips;
|
int hide_spoof_ips;
|
||||||
int hide_error_messages;
|
int hide_error_messages;
|
||||||
|
|
|
@ -374,6 +374,12 @@ static struct InfoStruct info_table[] = {
|
||||||
&ConfigFileEntry.no_oper_flood,
|
&ConfigFileEntry.no_oper_flood,
|
||||||
"Disable flood control for operators",
|
"Disable flood control for operators",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"true_no_oper_flood",
|
||||||
|
OUTPUT_BOOLEAN,
|
||||||
|
&ConfigFileEntry.true_no_oper_flood,
|
||||||
|
"Really disable flood control for opers, not just make it very high",
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"non_redundant_klines",
|
"non_redundant_klines",
|
||||||
OUTPUT_BOOLEAN,
|
OUTPUT_BOOLEAN,
|
||||||
|
|
|
@ -2226,6 +2226,7 @@ static struct ConfEntry conf_general_table[] =
|
||||||
{ "min_nonwildcard", CF_INT, NULL, 0, &ConfigFileEntry.min_nonwildcard },
|
{ "min_nonwildcard", CF_INT, NULL, 0, &ConfigFileEntry.min_nonwildcard },
|
||||||
{ "nick_delay", CF_TIME, NULL, 0, &ConfigFileEntry.nick_delay },
|
{ "nick_delay", CF_TIME, NULL, 0, &ConfigFileEntry.nick_delay },
|
||||||
{ "no_oper_flood", CF_YESNO, NULL, 0, &ConfigFileEntry.no_oper_flood },
|
{ "no_oper_flood", CF_YESNO, NULL, 0, &ConfigFileEntry.no_oper_flood },
|
||||||
|
{ "true_no_oper_flood", CF_YESNO, NULL, 0, &ConfigFileEntry.true_no_oper_flood },
|
||||||
{ "operspy_admin_only", CF_YESNO, NULL, 0, &ConfigFileEntry.operspy_admin_only },
|
{ "operspy_admin_only", CF_YESNO, NULL, 0, &ConfigFileEntry.operspy_admin_only },
|
||||||
{ "operspy_dont_care_user_info", CF_YESNO, NULL, 0, &ConfigFileEntry.operspy_dont_care_user_info },
|
{ "operspy_dont_care_user_info", CF_YESNO, NULL, 0, &ConfigFileEntry.operspy_dont_care_user_info },
|
||||||
{ "secret_channels_in_whois", CF_YESNO, NULL, 0, &ConfigFileEntry.secret_channels_in_whois },
|
{ "secret_channels_in_whois", CF_YESNO, NULL, 0, &ConfigFileEntry.secret_channels_in_whois },
|
||||||
|
|
|
@ -99,7 +99,12 @@ parse_client_queued(struct Client *client_p)
|
||||||
{
|
{
|
||||||
|
|
||||||
if(IsOper(client_p) && ConfigFileEntry.no_oper_flood)
|
if(IsOper(client_p) && ConfigFileEntry.no_oper_flood)
|
||||||
checkflood = 0;
|
{
|
||||||
|
if (ConfigFileEntry.true_no_oper_flood)
|
||||||
|
checkflood = -1;
|
||||||
|
else
|
||||||
|
checkflood = 0;
|
||||||
|
}
|
||||||
/*
|
/*
|
||||||
* Handle flood protection here - if we exceed our flood limit on
|
* Handle flood protection here - if we exceed our flood limit on
|
||||||
* messages in this loop, we simply drop out of the loop prematurely.
|
* messages in this loop, we simply drop out of the loop prematurely.
|
||||||
|
@ -129,7 +134,7 @@ parse_client_queued(struct Client *client_p)
|
||||||
/* allow opers 4 times the amount of messages as users. why 4?
|
/* allow opers 4 times the amount of messages as users. why 4?
|
||||||
* why not. :) --fl_
|
* why not. :) --fl_
|
||||||
*/
|
*/
|
||||||
else if(client_p->localClient->sent_parsed >= (4 * client_p->localClient->allow_read))
|
else if(client_p->localClient->sent_parsed >= (4 * client_p->localClient->allow_read) && checkflood != -1)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
dolen = rb_linebuf_get(&client_p->localClient->
|
dolen = rb_linebuf_get(&client_p->localClient->
|
||||||
|
|
|
@ -720,6 +720,7 @@ set_default_conf(void)
|
||||||
ConfigFileEntry.pace_wait_simple = 1;
|
ConfigFileEntry.pace_wait_simple = 1;
|
||||||
ConfigFileEntry.short_motd = NO;
|
ConfigFileEntry.short_motd = NO;
|
||||||
ConfigFileEntry.no_oper_flood = NO;
|
ConfigFileEntry.no_oper_flood = NO;
|
||||||
|
ConfigFileEntry.true_no_oper_flood = NO;
|
||||||
ConfigFileEntry.fname_userlog = NULL;
|
ConfigFileEntry.fname_userlog = NULL;
|
||||||
ConfigFileEntry.fname_fuserlog = NULL;
|
ConfigFileEntry.fname_fuserlog = NULL;
|
||||||
ConfigFileEntry.fname_operlog = NULL;
|
ConfigFileEntry.fname_operlog = NULL;
|
||||||
|
|
Loading…
Reference in New Issue