/usr/share/irssi/scripts/kblamehost.pl is in irssi-scripts 20131030.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | #!/usr/bin/perl
use Irssi;
use Irssi::Irc;
$VERSION = "0.0.1";
%IRSSI = (
authors => 'Filippo \'godog\' Giunchedi',
contact => 'filippo\@esaurito.net',
name => 'kblamehost',
description => 'Kicks (and bans) people with >= 4 dots in theirs hostname',
license => 'GNU GPLv2 or later',
url => 'http://esaurito.net',
);
# TODO
# add ban support
# all settings are space-separated
Irssi::settings_add_str('misc','kblamehost_channels',''); # channels with kicklamehost enabled
Irssi::settings_add_str('misc','kblamehost_exclude',''); # regexps with hostnames excluded
Irssi::settings_add_str('misc','kblamehost_dots','4'); # dots >= an host will be marked as lame
Irssi::settings_add_str('misc','kblamehost_kickmsg','Lame host detected, change it please!'); # on-kick message
Irssi::settings_add_str('misc','kblamehost_ban','0'); # should we ban that lame host?
sub event_join
{
my ($channel, $nicksList) = @_;
my @nicks = @{$nicksList};
my $server = $channel->{'server'};
my $channelName = $channel->{name};
my $channel_enabled = 0;
my @channels = split(/ /,Irssi::settings_get_str('kblamehost_channels'));
my @excludes = split(/ /,Irssi::settings_get_str('kblamehost_exclude'));
foreach (@channels)
{
$channel_enabled = 1 if($_ eq $channelName);
}
foreach (@nicks)
{
my $hostname = substr($_->{host},index($_->{host},'@')+1);
my @dots = split(/\./,$hostname); # yes i know, it's the number on fields in
# hostname, but array counts from 0 so element's count is number of dots
my $is_friend = 0;
foreach $exclude (@excludes)
{
$is_friend = 1 if ($hostname =~ $exclude);
}
if( $#dots >= Irssi::settings_get_str('kblamehost_dots') && $channel_enabled == 1 && $is_friend == 0)
{
# Irssi::print("lamehost ($hostname) by $_->{nick} detected on $channelName, kicking...");
$server->command("kick $channelName $_->{nick} Irssi::settings_get_str('kblamehost_kickmsg')");
$server->command("ban $channelName $_->{nick}") if ( Irssi::settings_get_str('kblamehost_ban') );
}
}
}
Irssi::signal_add_last("massjoin", "event_join");
|