From 2d0759e6ca5767b48bcc85bf38c2c43d5f0b63b1 Mon Sep 17 00:00:00 2001 From: Alexander Færøy Date: Sat, 31 May 2014 13:10:46 +0200 Subject: Import scripts from scripts.irssi.org --- scripts/fcountry.pl | 103 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 scripts/fcountry.pl (limited to 'scripts/fcountry.pl') diff --git a/scripts/fcountry.pl b/scripts/fcountry.pl new file mode 100644 index 0000000..a2ea1e5 --- /dev/null +++ b/scripts/fcountry.pl @@ -0,0 +1,103 @@ +# Print the country name in /WHOIS replies +# /FCOUNTRY prints where a URI or IP is hosted. +# Installation: Add $whois_fcountry somewhere in your /FORMAT whois line + +###### +# Copyright (c) 2008 Stefan Jakobs +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA +# +##################################################################### + +use strict; +use Irssi 20021028; +use IP::Country::Fast; +use Geography::Countries; + +use vars qw($VERSION %IRSSI); +$VERSION = "1.0.0"; +%IRSSI = ( + authors => "Stefan Jakobs", + contact => "stefan\.jakobs\@rus\.uni-stuttgart\.de", + name => "fast_country", + description => "Print the country name in /WHOIS replies", + license => "GPLv2", + changed => "Son May 11 20:20: CET 2008", + modules => "IP::Country::Fast Geography::Countries", + commands => "fcountry" +); + +my $last_country = ""; +my $short_country = ""; +my $reg = IP::Country::Fast->new(); + +sub show_help() { + my $help = $IRSSI{name} ." " .$VERSION ." +Add \$whois_fcountry somewhere in your \'/FORMAT whois\' line + +/fcountry + prints were the specified URI or IP is hosted +/fcountry help + prints this message +"; + my $text = ''; + foreach (split(/\n/, $help)) { + $_ =~ s/^\/(.*)$/%9\/$1%9/; + $text .= $_."\n"; + } + print CLIENTCRAP "\n" .$text; +} + +sub sig_whois { + my ($server, $data, $nick, $host) = @_; + my ($me, $nick, $user, $host) = split(" ", $data); + + $short_country = $reg->inet_atocc($host); + if ($short_country) { $last_country = country $short_country; } + else { $last_country = ""; } +} + +sub expando_whois_country { + if (!$short_country) { + return ">unknown<"; + } else { + return $last_country ."\(" .$short_country ."\)"; + } +} + +sub cmd_country { + my $url_ip = lc shift; + if ($url_ip eq 'help') { + show_help(); + } elsif ($url_ip eq "") { + Irssi::print("USAGE: /FCOUNTRY "); + } else { + my $short = $reg->inet_atocc($url_ip); + if (!$short) { + Irssi::print("Unknown country origin: $url_ip"); + } else { + my $name = country $short; + if (!$name) { Irssi::print("$url_ip is hosted in $short"); } + else { Irssi::print("$url_ip is hosted in $name \($short\)"); } + } + } +} + +Irssi::command_bind('fcountry', \&cmd_country); +Irssi::signal_add_first('event 311', \&sig_whois); +Irssi::expando_create('whois_fcountry', \&expando_whois_country, + { 'event 311' => 'None' } ); +print CLIENTCRAP "%B>>%n ".$IRSSI{name}." ".$VERSION." loaded: \'/fcountry help\' for help" -- cgit v1.2.3