diff options
Diffstat (limited to 'scripts/ircuwhois.pl')
| -rw-r--r-- | scripts/ircuwhois.pl | 84 | 
1 files changed, 84 insertions, 0 deletions
| diff --git a/scripts/ircuwhois.pl b/scripts/ircuwhois.pl new file mode 100644 index 0000000..4a01de0 --- /dev/null +++ b/scripts/ircuwhois.pl @@ -0,0 +1,84 @@ +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', +}); + | 
