html/cp1250_kick.pl


   1 #!/usr/bin/perl -w
   2 #
   3 # cp1250-kick.pl - skrypt wyrzucaj±cy z kana³u osoby u¿ywaj±ce kodowania cp1250
   4 #                - kicks people using cp1250 charset from channel
   5 #
   6 # /SET cp1250_kick_reason "tekst"	- powód "kopniêcia"
   7 # /SET cp1250_kick_ops <ON|OFF>	- czy "kopiemy" operatorów kana³u [OFF]
   8 # /SET cp1250_nokick "#chan_name nickname ..." - lista chronionych kana³ów
   9 #			i/lub osób, dla których skrypt nie bêdzie dzia³a³
  10 #
  11 # Autor: Tomasz Poradowski (batonik@irc.pl)
  12 # Na podstawie: cp2iso.pl autorstwa Jakuba Jankowskiego <shasta@atn.pl>
  13 #
  14 # -----
  15 # 28.09.2002 kilka drobnych poprawek wprowadzonych przez Jakuba Jankowskiego
  16 #	- cp1250_kick_ops ma teraz warto¶æ boolean (ON/OFF)
  17 # -----
  18 # 06.05.2002 ma³a poprawka w wyszukiwaniu "nicków" na li¶cie chronionych
  19 # -----
  20 
  21 use Irssi;
  22 
  23 use strict;
  24 use vars qw($VERSION %IRSSI);
  25 
  26 $VERSION = "1.3";
  27 %IRSSI = (
  28         authors         => 'Tomasz Poradowski',
  29         contact         => 'batonik@irc.pl',
  30         name            => 'cp1250_kick',
  31         description     => 'Kicks people using cp1250 charset',
  32         license         => 'GPL',
  33         changed         => 'Sat Sep 28 12:58:26 CEST 2002'
  34 );
  35 
  36 sub cp1250_kick {
  37         my ($server, $data, $nick, $address) = @_;
  38         my ($target, $text) = split(/ :/, $data, 2);
  39 	my $kick_reason = Irssi::settings_get_str('cp1250_kick_reason');
  40 	my $nokick_list = Irssi::settings_get_str('cp1250_nokick');
  41 
  42 	return unless ($target =~ /^[#\!\+]/);
  43         if ($text =~ /[\xA5\xB9\x8C\x9C\x8F\x9F]/) {
  44 		my $chan = Irssi::channel_find($target);
  45 		my $n = $chan->nick_find($nick);
  46 		return if ($nokick_list =~ m/\Q$chan->{name}\E|\Q$n->{nick}\E/);
  47 		return if ($n->{op} && !Irssi::settings_get_bool('cp1250_kick_ops'));
  48 		if ($chan->{chanop})
  49 		{
  50 			Irssi::print("Kopiemy $nick z $target! [cp1250 kick]");
  51 			$server->send_raw("KICK $target $nick :".$kick_reason);
  52 		}
  53 		else
  54 		{
  55 			Irssi::print("%R!%n [cp1250 kick] Nie jeste¶ operatorem kana³u $target.");
  56 		}
  57 	}
  58 }
  59 
  60 Irssi::settings_add_str('misc', 'cp1250_kick_reason', 'http://windows.online.pl wzywa Ciê! [cp1250 kick]');
  61 Irssi::settings_add_bool('misc', 'cp1250_kick_ops', 0);
  62 Irssi::settings_add_str('misc', 'cp1250_nokick', '');
  63 
  64 # musi siê wywo³aæ jeszcze przed cp2iso.pl (je¶li siê go u¿ywa)
  65 Irssi::signal_add_first('event privmsg', 'cp1250_kick');