1#!/usr/local/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
21use Irssi;
22
23use strict;
24use 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
36sub 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
60Irssi::settings_add_str('misc', 'cp1250_kick_reason', 'http://windows.online.pl wzywa Ci�! [cp1250 kick]');
61Irssi::settings_add_bool('misc', 'cp1250_kick_ops', 0);
62Irssi::settings_add_str('misc', 'cp1250_nokick', '');
63
64# musi si� wywo�a� jeszcze przed cp2iso.pl (je�li si� go u�ywa)
65Irssi::signal_add_first('event privmsg', 'cp1250_kick');
66