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"); |