App-rdapper
view release on metacpan or search on metacpan
lib/App/rdapper.pm view on Meta::CPAN
package App::rdapper;
use App::rdapper::l10n;
use Encode qw(decode);
use File::ShareDir qw(:ALL);
use Getopt::Long qw(GetOptionsFromArray :config pass_through);
use JSON;
use List::Util qw(any min max uniq);
use Net::ASN;
use Net::DNS::Domain;
use Net::IDN::PP;
use Net::IP;
use Net::RDAP::EPPStatusMap;
use Net::RDAP 0.41;
use Pod::Usage;
use POSIX qw(setlocale LC_ALL);
use Term::ANSIColor;
use Term::Size;
use Text::Wrap;
use URI;
use constant {
GETTEXT_DOMAIN => q{rdapper},
# see RFC 6350, Section 6.3.1.
'ADR_STREET' => 2,
'ADR_CITY' => 3,
'ADR_SP' => 4,
'ADR_PC' => 5,
'ADR_CC' => 6,
'INDENT' => ' ',
'IANA_BASE_URL' => 'https://rdap.iana.org/',
};
use locale;
use vars qw($VERSION $LH);
use strict;
$VERSION = '1.25';
$LH = App::rdapper::l10n->get_handle;
$LH->die_for_lookup_failures(1);
$LH->bindtextdomain(GETTEXT_DOMAIN, $ENV{RDAPPER_LOCALE_DIR} || module_dir(__PACKAGE__));
$LH->textdomain(GETTEXT_DOMAIN);
#
# global arg variables
#
my (
$type, $object, $help, $short, $bypass, $auth, $nopager, $raw, $both,
$registrar, $nocolor, $reverse, $version, $search, $debug, $registry,
$strings
);
#
# options spec for Getopt::Long
#
my %opts = (
'type:s' => \$type,
'object:s' => \$object,
'help' => \$help,
'short' => \$short,
'bypass-cache' => \$bypass,
'auth:s' => \$auth,
'nopager' => \$nopager, # ignored
'raw' => \$raw,
'both' => \$both,
'registrar' => \$registrar,
'registry' => \$registry,
'nocolor' => \$nocolor,
'reverse' => \$reverse,
'version' => \$version,
'search' => \$search,
'debug' => \$debug,
'autnum' => sub { $type = 'autnum' },
'domain' => sub { $type = 'domain' },
'nameserver' => sub { $type = 'nameserver' },
'entity' => sub { $type = 'entity' },
'ip' => sub { $type = 'ip' },
'tld' => sub { $type = 'tld' },
'url' => sub { $type = 'url' },
'strings' => \$strings,
);
my $funcs = {
'ip network' => sub { __PACKAGE__->print_ip(@_) },
'autnum' => sub { __PACKAGE__->print_asn(@_) },
'domain' => sub { __PACKAGE__->print_domain(@_) },
'entity' => sub { __PACKAGE__->print_entity(@_) },
'nameserver' => sub { __PACKAGE__->print_nameserver(@_) },
'help' => sub { 1 }, # help only contains generic properties
};
my $OBJECT_TYPE_DISPLAY_NAMES = {
( run in 0.774 second using v1.01-cache-2.11-cpan-ceb78f64989 )