freebsd-ports/security/swatch/files/patch-Throttle.pm
Jun Kuriyama 1e892e4d28 - Upgrade to 3.2.3.
Approved by:	maintainer
2010-01-17 00:20:11 +00:00

87 lines
2.6 KiB
Perl

--- lib/Swatch/Throttle.pm.orig 2010-01-16 00:54:35.478307464 +0900
+++ lib/Swatch/Throttle.pm 2010-01-16 00:58:31.814303601 +0900
@@ -95,6 +95,7 @@
@_
);
+ my @delay = split(/:/, "0:$opts{DELAY}");
my @dmyhms;
my $key;
my $cur_rec;
@@ -134,30 +135,61 @@
$rec->{FIRST} = [ @dmyhms ];
$rec->{LAST} = [ @dmyhms ];
$rec->{HOLD_DHMS} = $opts{HOLD_DHMS} if defined $opts{HOLD_DHMS};
- $rec->{COUNT} = 1;
+ $rec->{COUNT} = 0;
$LogRecords{$key} = $rec;
- return $msg;
- } else {
- $cur_rec = $LogRecords{$key};
- $cur_rec->{COUNT}++;
- if (defined $opts{THRESHOLD} and $cur_rec->{COUNT} == $opts{THRESHOLD}) {
- ## threshold exceeded ##
- chomp $msg;
- $msg = "$msg (threshold $opts{THRESHOLD} exceeded)";
- $cur_rec->{COUNT} = 0;
- } elsif (defined $opts{HOLD_DHMS}
- and past_hold_time($cur_rec->{LAST},
- \@dmyhms, $opts{HOLD_DHMS})) {
+ }
+
+ ## Get current record ##
+ $cur_rec = $LogRecords{$key};
+ $cur_rec->{COUNT}++;
+
+ ## delay only ##
+ if( defined $opts{DELAY} and not defined $opts{THRESHOLD} ) {
+ if( past_hold_time($cur_rec->{LAST}, [ @dmyhms ], [ @delay ]) ) {
## hold time exceeded ##
chomp $msg;
$msg = "$msg (seen $cur_rec->{COUNT} times)";
- $cur_rec->{COUNT} = 0;
+ $cur_rec->{COUNT} = 1;
$cur_rec->{LAST} = [ @dmyhms ];
} else {
$msg = '';
}
- $LogRecords{$key} = $cur_rec if exists($LogRecords{$key}); ## save any new values ##
+
+ ## threshold only ##
+ } elsif( defined $opts{THRESHOLD} and not defined $opts{DELAY} ) {
+ if( $cur_rec->{COUNT} == $opts{THRESHOLD}) {
+ ## threshold exceeded ##
+ chomp $msg;
+ $msg = "$msg (threshold $opts{THRESHOLD} exceeded)";
+ $cur_rec->{COUNT} = 0;
+ } else {
+ $msg = '';
+ }
+
+ ## threshold AND delay ##
+ } elsif( defined $opts{THRESHOLD} and defined $opts{DELAY} ) {
+ if( not past_hold_time($cur_rec->{LAST}, [ @dmyhms ], [ @delay ]) ) {
+ if( $cur_rec->{COUNT} == $opts{THRESHOLD} ) {
+ ## threshold exceeded during delay ##
+ chomp $msg;
+ $msg = "$msg (threshold $opts{THRESHOLD} exceeded during delay $opts{DELAY})";
+
+ ## TODO: Tenir compte du parametre repeat ici ##
+ $cur_rec->{COUNT} = 0;
+ $cur_rec->{LAST} = [ @dmyhms ];
+ } else {
+ $msg = '';
+ }
+ } else {
+ $cur_rec->{COUNT} = 1;
+ $cur_rec->{LAST} = [ @dmyhms ];
+ $msg = '';
+ }
}
+
+ ## save any new values ##
+ $LogRecords{$key} = $cur_rec if exists($LogRecords{$key});
+
return $msg;
}