summaryrefslogtreecommitdiffstats
path: root/scripts/cp1250_kick.pl
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/cp1250_kick.pl')
-rw-r--r--scripts/cp1250_kick.pl65
1 files changed, 65 insertions, 0 deletions
diff --git a/scripts/cp1250_kick.pl b/scripts/cp1250_kick.pl
new file mode 100644
index 0000000..9ad231d
--- /dev/null
+++ b/scripts/cp1250_kick.pl
@@ -0,0 +1,65 @@
+#!/usr/bin/perl -w
+#
+# cp1250-kick.pl - skrypt wyrzucający z kanału osoby używające kodowania cp1250
+# - kicks people using cp1250 charset from channel
+#
+# /SET cp1250_kick_reason "tekst" - powód "kopnięcia"
+# /SET cp1250_kick_ops <ON|OFF> - czy "kopiemy" operatorów kanału [OFF]
+# /SET cp1250_nokick "#chan_name nickname ..." - lista chronionych kanałów
+# i/lub osób, dla których skrypt nie będzie działał
+#
+# Autor: Tomasz Poradowski (batonik@irc.pl)
+# Na podstawie: cp2iso.pl autorstwa Jakuba Jankowskiego <shasta@atn.pl>
+#
+# -----
+# 28.09.2002 kilka drobnych poprawek wprowadzonych przez Jakuba Jankowskiego
+# - cp1250_kick_ops ma teraz wartość boolean (ON/OFF)
+# -----
+# 06.05.2002 mała poprawka w wyszukiwaniu "nicków" na liście chronionych
+# -----
+
+use Irssi;
+
+use strict;
+use vars qw($VERSION %IRSSI);
+
+$VERSION = "1.3";
+%IRSSI = (
+ authors => 'Tomasz Poradowski',
+ contact => 'batonik@irc.pl',
+ name => 'cp1250_kick',
+ description => 'Kicks people using cp1250 charset',
+ license => 'GPL',
+ changed => 'Sat Sep 28 12:58:26 CEST 2002'
+);
+
+sub cp1250_kick {
+ my ($server, $data, $nick, $address) = @_;
+ my ($target, $text) = split(/ :/, $data, 2);
+ my $kick_reason = Irssi::settings_get_str('cp1250_kick_reason');
+ my $nokick_list = Irssi::settings_get_str('cp1250_nokick');
+
+ return unless ($target =~ /^[#\!\+]/);
+ if ($text =~ /[\xA5\xB9\x8C\x9C\x8F\x9F]/) {
+ my $chan = Irssi::channel_find($target);
+ my $n = $chan->nick_find($nick);
+ return if ($nokick_list =~ m/\Q$chan->{name}\E|\Q$n->{nick}\E/);
+ return if ($n->{op} && !Irssi::settings_get_bool('cp1250_kick_ops'));
+ if ($chan->{chanop})
+ {
+ Irssi::print("Kopiemy $nick z $target! [cp1250 kick]");
+ $server->send_raw("KICK $target $nick :".$kick_reason);
+ }
+ else
+ {
+ Irssi::print("%R!%n [cp1250 kick] Nie jesteś operatorem kanału $target.");
+ }
+ }
+}
+
+Irssi::settings_add_str('misc', 'cp1250_kick_reason', 'http://windows.online.pl wzywa Cię! [cp1250 kick]');
+Irssi::settings_add_bool('misc', 'cp1250_kick_ops', 0);
+Irssi::settings_add_str('misc', 'cp1250_nokick', '');
+
+# musi się wywołać jeszcze przed cp2iso.pl (jeśli się go używa)
+Irssi::signal_add_first('event privmsg', 'cp1250_kick');