#!/usr/bin/perl #- # Copyright (c) 2007-2010 Jilles Tjoelker # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # use strict; use Irssi; use vars qw($VERSION %IRSSI); $VERSION = "1.1"; %IRSSI = ( authors => "Jilles Tjoelker", contact => "jilles\@stack.nl", name => "removeaskick", description=> "Display removes as kicks on dancer/hyperion/ircd-seven", license => "BSD (revised)", ); sub event_part { my ($server, $args, $nick, $address, $target) = @_; return unless $server->{version} =~ /^(hyperion|dancer|ircd-seven)/; my ($channel, $reason) = (split / /, $args, 2); my $kicker; my $kickeraddress = "unknown\@host"; my $realreason; if ($server->{version} =~ /ircd-seven/) { return unless $reason =~ /^:requested by ([^ ]+) \((.*)\)/; $kicker = $1; $realreason = $2 || $nick; } else { return unless $reason =~ /^:requested by ([^:]+)(?:: "(.*)")?/; $kicker = $1; $realreason = $2 || $nick; } my $chanobj = $server->channel_find($channel); if ($chanobj) { my $kickerobj = $chanobj->nick_find($kicker); $kickeraddress = $kickerobj->{host} if ($kickerobj); } #Irssi::print("Got a remove from $kicker!$kickeraddress for $channel $nick with reason $realreason on a hyperion server"); Irssi::signal_stop(); Irssi::signal_emit("event kick", $server, "$channel $nick :$realreason", $kicker, $kickeraddress, $target); } Irssi::signal_add('event part', 'event_part');