Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
85 lines (73 sloc) 2.48 KB
use strict;
use Irssi;
use vars qw($VERSION %IRSSI);
$VERSION = '1.2';
%IRSSI = (
authors => 'Valentin Batz',
contact => 'vb\@g-23.org',
name => 'ircuwhois',
description => 'show the accountname (330) and real host on ircu',
license => 'GPLv2',
url => 'http://www.hurzelgnom.homepage.t-online.de/irssi/scripts/quakenet.pl'
);
# adapted by Nei
Irssi::theme_register([
'whois_auth', '{whois account %|$1}',
'whois_ip', '{whois actualip %|$1}',
'whois_host', '{whois act.host %|$1}',
'whois_oper', '{whois privile. %|$1}',
'whois_ssl', '{whois connect. %|$1}'
]);
sub event_whois_default_event {
#'server event', SERVER_REC, char *data, char *sender_nick, char *sender_address
my ($server, $data, $snick, $sender) = @_;
my $numeric = $server->parse_special('$H');
if ($numeric eq '313') { &event_whois_oper }
if ($numeric eq '330') { &event_whois_auth }
if ($numeric eq '337') { &event_whois_ssl }
if ($numeric eq '338') { &event_whois_userip }
}
sub event_whois_oper {
my ($server, $data) = @_;
my ($num, $nick, $privileges) = split(/ /, $data, 3);
$privileges =~ s/^:(?:is an? )?//;
$server->printformat($nick, MSGLEVEL_CRAP, 'whois_oper', $nick, $privileges);
Irssi::signal_stop();
}
sub event_whois_auth {
my ($server, $data) = @_;
my ($num, $nick, $auth_nick, $isircu) = split(/ /, $data, 4);
return unless $isircu =~ / as/; #:is logged in as
$server->printformat($nick, MSGLEVEL_CRAP, 'whois_auth', $nick, $auth_nick);
Irssi::signal_stop();
}
sub event_whois_ssl {
my ($server, $data) = @_;
my ($num, $nick, $connection) = split(/ /, $data, 3);
$connection =~ s/^:(?:is using an? )?//;
$server->printformat($nick, MSGLEVEL_CRAP, 'whois_ssl', $nick, $connection);
Irssi::signal_stop();
}
sub event_whois_userip {
my ($server, $data) = @_;
my ($num, $nick, $userhost, $ip, $isircu) = split(/ /, $data, 5);
return unless $isircu =~ /ctual /; #:Actual user@host, Actual IP
$server->printformat($nick, MSGLEVEL_CRAP, 'whois_ip', $nick, $ip);
$server->printformat($nick, MSGLEVEL_CRAP, 'whois_host', $nick, $userhost);
Irssi::signal_stop();
}
sub debug {
use Data::Dumper;
Irssi::print(Dumper(\@_));
}
Irssi::signal_register({
'whois oper' => [ 'iobject', 'string', 'string', 'string' ],
}); # fixes oper display in 0.8.10
Irssi::signal_add({
'whois oper' => 'event_whois_oper',
'event 313' => 'event_whois_oper',
'event 330' => 'event_whois_auth',
'event 337' => 'event_whois_ssl',
'event 338' => 'event_whois_userip',
'whois default event' => 'event_whois_default_event',
});