diff options
Diffstat (limited to 'plugin')
| -rw-r--r-- | plugin/antiflood.pm | 39 | ||||
| -rw-r--r-- | plugin/tittilate.pm | 2 | ||||
| -rw-r--r-- | plugin/url_title.pm | 2 | 
3 files changed, 41 insertions, 2 deletions
diff --git a/plugin/antiflood.pm b/plugin/antiflood.pm new file mode 100644 index 0000000..d9326ba --- /dev/null +++ b/plugin/antiflood.pm @@ -0,0 +1,39 @@ +#!/usr/bin/env perl + +package plugin::antiflood; + +use strict; +use warnings; + +my $message_count = 5; +my $message_period = 11; + + +my %config; +my %lastmsg = (); + +sub configure { +	my $self = $_[0]; +	my $cref = $_[1]; +	%config = %$cref; +	return $self; +} + +sub message { +	my ($self, $logger, $me, $who, $where, $raw_what, $what, $irc) = @_; +	my $channel = $where->[0]; +	my $nick = (split /!/, $who)[0]; + +	my $now = time(); +	push @{$lastmsg{$nick}}, $now; + +	# FIXME limit buffer size to 5 +	if (@{$lastmsg{$nick}} >= $message_count) { +		my $first = @{$lastmsg{$nick}}[0]; +		if ($now - $first <= $message_period) { +			$irc->yield(kick => $channel => $nick => "Flood"); +		} +	} +	return; +} +1; diff --git a/plugin/tittilate.pm b/plugin/tittilate.pm index 51253ec..7a1ecd5 100644 --- a/plugin/tittilate.pm +++ b/plugin/tittilate.pm @@ -15,7 +15,7 @@ sub configure {  }  sub message { -	my ($self, $logger, $me, $who, $where, $raw_what, $what) = @_; +	my ($self, $logger, $me, $who, $where, $raw_what, $what, $irc) = @_;  	my $gathered = "";  	my @expressions = (keys %{$config{triggers}});  	my $expression = join '|', @expressions; diff --git a/plugin/url_title.pm b/plugin/url_title.pm index 1c376df..9deaae2 100644 --- a/plugin/url_title.pm +++ b/plugin/url_title.pm @@ -18,7 +18,7 @@ sub configure {  sub message  { -	my ($self, $logger, $me, $who, $where, $raw_what, $what) = @_; +	my ($self, $logger, $me, $who, $where, $raw_what, $what, $irc) = @_;  	my $url;  	if ($what =~ /(https?:\/\/[^ ]+)/i) {  | 
