Implement `antiflood.join_flood_channel` registry entry

This commit is contained in:
Pragmatic Software 2021-06-17 09:58:42 -07:00
parent 7fce39a349
commit 9b114006e0
2 changed files with 9 additions and 4 deletions

View File

@ -128,9 +128,11 @@ sub cmd_unbanme {
next if $aliases{$alias}->{type} == $self->{pbot}->{messagehistory}->{database}->{alias_type}->{WEAK}; next if $aliases{$alias}->{type} == $self->{pbot}->{messagehistory}->{database}->{alias_type}->{WEAK};
next if $aliases{$alias}->{nickchange} == 1; next if $aliases{$alias}->{nickchange} == 1;
my $join_flood_channel = $self->{pbot}->{registry}->get_value('antiflood', 'join_flood_channel') // '#stop-join-flood';
my ($anick, $auser, $ahost) = $alias =~ m/([^!]+)!([^@]+)@(.*)/; my ($anick, $auser, $ahost) = $alias =~ m/([^!]+)!([^@]+)@(.*)/;
my $banmask = $self->address_to_mask($ahost); my $banmask = $self->address_to_mask($ahost);
my $mask = "*!$auser\@$banmask\$##stop_join_flood"; my $mask = "*!$auser\@$banmask\$$join_flood_channel";
my @channels = $self->{pbot}->{messagehistory}->{database}->get_channels($aliases{$alias}->{id}); my @channels = $self->{pbot}->{messagehistory}->{database}->get_channels($aliases{$alias}->{id});
@ -483,11 +485,13 @@ sub check_flood {
my $duration = duration($timeout); my $duration = duration($timeout);
my $banmask = $self->address_to_mask($host); my $banmask = $self->address_to_mask($host);
my $join_flood_channel = $self->{pbot}->{registry}->get_value('antiflood', 'join_flood_channel') // '#stop-join-flood';
if ($self->{pbot}->{channels}->is_active_op("${channel}-floodbans")) { if ($self->{pbot}->{channels}->is_active_op("${channel}-floodbans")) {
$self->{pbot}->{banlist}->ban_user_timed( $self->{pbot}->{banlist}->ban_user_timed(
$chan . '-floodbans', $chan . '-floodbans',
'b', 'b',
"*!$user\@$banmask\$##stop_join_flood", "*!$user\@$banmask\$$join_flood_channel",
$timeout, $timeout,
$self->{pbot}->{registry}->get_value('irc', 'botnick'), $self->{pbot}->{registry}->get_value('irc', 'botnick'),
'join flooding', 'join flooding',

View File

@ -303,8 +303,9 @@ sub track_mode {
$self->{pbot}->{timer}->dequeue_event("unban $channel $mask"); $self->{pbot}->{timer}->dequeue_event("unban $channel $mask");
# freenode strips channel forwards from unban result if no ban exists with a channel forward # freenode strips channel forwards from unban result if no ban exists with a channel forward
$self->{banlist}->remove($channel, "$mask\$##stop_join_flood"); my $join_flood_channel = $self->{pbot}->{registry}->get_value('antiflood', 'join_flood_channel') // '#stop-join-flood';
$self->{pbot}->{timer}->dequeue_event(lc "unban $channel $mask\$##stop_join_flood"); $self->{banlist}->remove($channel, "$mask\$$join_flood_channel");
$self->{pbot}->{timer}->dequeue_event(lc "unban $channel $mask\$$join_flood_channel");
} elsif ($mode eq "-$mute_char") { } elsif ($mode eq "-$mute_char") {
$self->{quietlist}->remove($channel, $mask); $self->{quietlist}->remove($channel, $mask);
$self->{pbot}->{timer}->dequeue_event("unmute $channel $mask"); $self->{pbot}->{timer}->dequeue_event("unmute $channel $mask");