diff options
Diffstat (limited to 'scripts/cloneprot.pl')
| -rw-r--r-- | scripts/cloneprot.pl | 89 | 
1 files changed, 89 insertions, 0 deletions
| diff --git a/scripts/cloneprot.pl b/scripts/cloneprot.pl new file mode 100644 index 0000000..2e51721 --- /dev/null +++ b/scripts/cloneprot.pl @@ -0,0 +1,89 @@ +use strict; +use vars qw($VERSION %IRSSI); +use Irssi; +     +$VERSION = "1.11"; +%IRSSI = ( +                     authors     => "Rick (strlen) Jansen", +                     contact     => "strlen\@shellz.nl", +                     name        => "cloneprot", +                     description => "Parses OperServ notices to make autokill aliases from clonewarnings", +                     license     => "GPL/1", +                     url         => "http://www.shellz.nl/", +                     changed     => "Wed Mar 13 20:26:46 CET 2002", +); + +my ($lastmask, $clones, $trig, $hostmask, $username, $hostname); + +sub event_callback { +	my ($server, $data, $sender, $address) = @_; +	my $count = 0; +	if ($sender eq $server->{address}) { +		if ($data =~ /from OperServ: CLONES\((\d+)\): /) { +			$clones = $1; +			$trig = $clones + 2; +			if ($data =~ /((\S+)\@(\S+))/) { +				$hostmask = $1; +				$username = $2; +				$hostname = $3; +				if ($hostmask eq $lastmask) { +					$count++; +					Irssi::print("[Warning #$count] $clones clones."); +					Irssi::print("[[/tk (1h)] - [/ak 1|2 (6h)] - [/tr ($trig)] - [/cw 1|2 (/who)]]"); +				} else { +					$server->command("/who $hostname"); +					Irssi::print("[Warning #1: $clones clones."); +					Irssi::print("[1: $hostmask] - [2: $hostname]"); +					Irssi::print("[[/tk (1h)] - [/ak 1|2 (6h)] - [/tr ($trig)] - [/cw 1|2 (/who)]]"); +					$count=1; +				} +				Irssi::signal_stop(); +			} +		} +	} +} + +sub cw_callback { +	my ($mode,$server) = @_; +	if ($mode == 1) { +		$server->command("/who $hostmask"); +	} elsif ($mode == 2) { +		$server->command("/who $hostname"); +	} else { +		Irssi::print("Usage: /cw 1|2"); +	} +} + +sub tk_callback { +	my ($null,$server) = @_; +	$server->command("/msg operserv tempakill $hostname Don't clone on SorceryNet."); +} + +sub ak_callback { +	my ($mode,$server) = @_; +	if ($mode == 1) { +		$server->command("/msg operserv autokill 6 $hostmask Don't clone on SorceryNet."); +	} elsif ($mode == 2) { +		$server->command("/msg operserv autokill 6 *!*\@$hostname Don't clone on SorceryNet."); +	} else { +		Irssi::print("Usage: /ak 1|2"); +	} +} + +sub tr_callback { +	my ($mode,$server) = @_; +	if ($mode == 1) { +	$server->command("/msg operserv trigger $username\@$hostname $trig"); +	} elsif ($mode == 2) { +	$server->command("/msg operserv trigger $hostname $trig"); +	} else { +		Irssi::print("Usage: /tr 1|2"); +	} +} + +Irssi::command_bind("tk","tk_callback"); +Irssi::command_bind("ak","ak_callback"); +Irssi::command_bind("tr","tr_callback"); +Irssi::command_bind("cw","cw_callback"); + +Irssi::signal_add("server event","event_callback"); | 
