3
0
mirror of https://github.com/pragma-/pbot.git synced 2024-11-26 22:09:26 +01:00

Use wildcard banmasks instead of original hostmasks

This commit is contained in:
Pragmatic Software 2010-06-18 04:15:28 +00:00
parent f29202c99c
commit 24ef3b90e9
3 changed files with 30 additions and 5 deletions

View File

@ -169,9 +169,11 @@ sub check_flood {
my $timeout = (2 ** (($self->message_history->{$account}{$channel}{offenses} + 6) < 10 ? ${ $self->message_history }{$account}{$channel}{offenses} + 6 : 10)); my $timeout = (2 ** (($self->message_history->{$account}{$channel}{offenses} + 6) < 10 ? ${ $self->message_history }{$account}{$channel}{offenses} + 6 : 10));
$self->{pbot}->chanops->quiet_user_timed("*!$user\@$host\$##fix_your_connection", $channel, $timeout * 60 * 60); my $banmask = address_to_mask($host);
$self->{pbot}->logger->log("$nick!$user\@$host banned for $timeout hours due to join flooding (offense #${ $self->message_history }{$account}{$channel}{offenses}).\n"); $self->{pbot}->chanops->quiet_user_timed("*!$user\@$banmask\$##fix_your_connection", $channel, $timeout * 60 * 60);
$self->{pbot}->logger->log("$nick!$user\@$banmask banned for $timeout hours due to join flooding (offense #${ $self->message_history }{$account}{$channel}{offenses}).\n");
$timeout = "several" if($timeout > 8); $timeout = "several" if($timeout > 8);
@ -252,7 +254,9 @@ sub unbanme {
return "/msg $nick Usage: unbanme <channel> <captcha>"; return "/msg $nick Usage: unbanme <channel> <captcha>";
} }
my $mask = "*!$user\@$host\$##fix_your_connection"; my $banmask = address_to_mask($host);
my $mask = "*!$user\@$banmask\$##fix_your_connection";
if(not exists $self->{pbot}->{chanops}->{quieted_masks}->{$mask}) { if(not exists $self->{pbot}->{chanops}->{quieted_masks}->{$mask}) {
return "/msg $nick There is no temporary ban set for $mask in channel $channel."; return "/msg $nick There is no temporary ban set for $mask in channel $channel.";
@ -284,6 +288,26 @@ sub unbanme {
return "/msg $nick You have been unbanned from $channel."; return "/msg $nick You have been unbanned from $channel.";
} }
sub address_to_mask {
my $address = shift;
my $banmask;
if($address =~ m/^([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)$/) {
my ($a, $b, $c, $d) = ($1, $2, $3, $4);
given($a) {
when($_ <= 127) { $banmask = "$a.*"; }
when($_ <= 191) { $banmask = "$a.$b.*"; }
default { $banmask = "$a.$b.$c.*"; }
}
} elsif($address =~ m/[^.]+\.([^.]+\.[^.]+)$/) {
$banmask = "*.$1";
} else {
$banmask = $address;
}
return $banmask;
}
# based on Guy Malachi's code # based on Guy Malachi's code
sub generate_random_string { sub generate_random_string {
my $length_of_randomstring = shift; my $length_of_randomstring = shift;

View File

@ -13,7 +13,7 @@ use warnings;
# These are set automatically by the build/commit script # These are set automatically by the build/commit script
use constant { use constant {
BUILD_NAME => "PBot", BUILD_NAME => "PBot",
BUILD_REVISION => 171, BUILD_REVISION => 172,
BUILD_DATE => "2010-06-17", BUILD_DATE => "2010-06-17",
}; };

View File

@ -2,4 +2,5 @@
channel: #pbot2 channel: #pbot2
chanop: 1 chanop: 1
enabled: 1 enabled: 1
owner: pragma_
- -