summaryrefslogtreecommitdiffstats
path: root/scripts/ircuwhois.pl
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/ircuwhois.pl')
-rw-r--r--scripts/ircuwhois.pl84
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',
+});
+