Quotegrabs: added more information to getq (grab owner and timestamp)

Interpreter: remove leading and trailing whitespace from text to improve parsing
AntiFlood: Remove some log output, improve some other log output
This commit is contained in:
Pragmatic Software 2011-12-04 01:13:21 +00:00
parent df42b242e4
commit 314eabaf3e
4 changed files with 17 additions and 10 deletions

View File

@ -94,7 +94,6 @@ sub add_message {
if($mode == $self->{FLOOD_JOIN}) {
if($text =~ /^JOIN/) {
$self->message_history->{$account}->{channels}->{$channel}{join_watch}++;
$self->{pbot}->logger->log("$account $channel joinwatch adjusted: " . $self->message_history->{$account}->{channels}->{$channel}{join_watch} . "\n");
} else {
# PART or QUIT
# check QUIT message for netsplits, and decrement joinwatch if found
@ -204,7 +203,7 @@ sub check_flood {
}
if($max_messages > 0 and $length >= $max_messages) {
$self->{pbot}->logger->log("More than $max_messages messages, comparing time differences ($max_time)\n") if $mode == $self->{FLOOD_JOIN};
# $self->{pbot}->logger->log("More than $max_messages messages, comparing time differences ($max_time)\n") if $mode == $self->{FLOOD_JOIN};
my %msg;
if($mode == $self->{FLOOD_CHAT}) {
@ -213,9 +212,9 @@ sub check_flood {
elsif($mode == $self->{FLOOD_JOIN}) {
my $count = 0;
my $i = $length - 1;
$self->{pbot}->logger->log("Checking flood history, i = $i\n") if $self->message_history->{$account}->{channels}->{$channel}{join_watch} >= $max_messages;
# $self->{pbot}->logger->log("Checking flood history, i = $i\n") if $self->message_history->{$account}->{channels}->{$channel}{join_watch} >= $max_messages;
for(; $i >= 0; $i--) {
$self->{pbot}->logger->log($i . " " . $self->message_history->{$account}->{channels}->{$channel}{messages}->[$i]{mode} ." " . $self->message_history->{$account}->{channels}->{$channel}{messages}->[$i]{msg} . " " . $self->message_history->{$account}->{channels}->{$channel}{messages}->[$i]{timestamp} . " [" . ago_exact(time - $self->message_history->{$account}->{channels}->{$channel}{messages}->[$i]{timestamp}) . "]\n") if $self->message_history->{$account}->{channels}->{$channel}{join_watch} >= $max_messages;
# $self->{pbot}->logger->log($i . " " . $self->message_history->{$account}->{channels}->{$channel}{messages}->[$i]{mode} ." " . $self->message_history->{$account}->{channels}->{$channel}{messages}->[$i]{msg} . " " . $self->message_history->{$account}->{channels}->{$channel}{messages}->[$i]{timestamp} . " [" . ago_exact(time - $self->message_history->{$account}->{channels}->{$channel}{messages}->[$i]{timestamp}) . "]\n") if $self->message_history->{$account}->{channels}->{$channel}{join_watch} >= $max_messages;
next if $self->message_history->{$account}->{channels}->{$channel}{messages}->[$i]{mode} != $self->{FLOOD_JOIN};
last if ++$count >= 4;
}
@ -406,8 +405,9 @@ sub check_nickserv_accounts {
my $baninfo = $self->{pbot}->bantracker->get_baninfo($mask);
if(defined $baninfo) {
$self->{pbot}->logger->log("anti-flood: [check-bans] $mask is banned in $baninfo->{channel} by $baninfo->{owner}\n");
push @banned_channels, $baninfo->{channel};
$self->{pbot}->logger->log("anti-flood: [check-bans] $mask evaded $baninfo->{banmask} banned in $baninfo->{channel} by $baninfo->{owner}\n");
push @banned_channels, $baninfo->{channel};
$self->{pbot}->conn->privmsg($nick, "You have been banned in $baninfo->{channel} for attempting to evade a ban on $baninfo->{banmask} set by $baninfo->{owner}");
}
}

View File

@ -71,6 +71,9 @@ sub process_line {
$from = lc $from if defined $from;
$text =~ s/^\s+//;
$text =~ s/\s+$//;
my $pbot = $self->pbot;
$pbot->antiflood->check_flood($from, $nick, $user, $host, $text, $pbot->{MAX_FLOOD_MESSAGES}, 10, $pbot->antiflood->{FLOOD_CHAT}) if defined $from;

View File

@ -12,6 +12,8 @@ use vars qw($VERSION);
$VERSION = $PBot::PBot::VERSION;
use HTML::Entities;
use Time::Duration;
use Time::HiRes qw(gettimeofday);
sub new {
if(ref($_[1]) eq 'HASH') {
@ -46,7 +48,7 @@ sub initialize {
#-------------------------------------------------------------------------------------
$pbot->commands->register(sub { $self->grab_quotegrab(@_) }, "grab", 0);
$pbot->commands->register(sub { $self->show_quotegrab(@_) }, "getq", 0);
$pbot->commands->register(sub { $self->delete_quotegrab(@_) }, "delq", 0);
$pbot->commands->register(sub { $self->delete_quotegrab(@_) }, "delq", 10);
$pbot->commands->register(sub { $self->show_random_quotegrab(@_) }, "rq", 0);
}
@ -261,7 +263,9 @@ sub show_quotegrab {
}
my $quotegrab = $self->{quotegrabs}[$arguments - 1];
return "$arguments: <$quotegrab->{nick}> $quotegrab->{text}";
my $timestamp = $quotegrab->{timestamp};
my $ago = ago(gettimeofday - $timestamp);
return "$arguments: grabbed by $quotegrab->{grabbed_by} on " . localtime($timestamp) . " [$ago] <$quotegrab->{nick}> $quotegrab->{text}";
}
sub show_random_quotegrab {

View File

@ -13,8 +13,8 @@ use warnings;
# These are set automatically by the build/commit script
use constant {
BUILD_NAME => "PBot",
BUILD_REVISION => 322,
BUILD_DATE => "2011-10-31",
BUILD_REVISION => 323,
BUILD_DATE => "2011-12-03",
};
1;