NAME
Net::DNS::Paranoid - paranoid dns resolver
SYNOPSIS
my $dns = Net::DNS::Paranoid->new();
$dns->blocked_hosts([
'mixi.jp',
qr{\.dev\.example\.com$},
]);
$dns->whitelisted_hosts([
'twitter.com',
]);
my ($addrs, $errmsg) = $dns->resolve('mixi.jp');
if ($addrs) {
print @$addrs, $/;
} else {
die $errmsg;
}
DESCRIPTION
This is a wrapper module for Net::DNS.
This module detects IP address / host names for internal servers.
METHODS
- my $dns = Net::DNS::Paranoid->new(%args)
-
Create new instance with following parameters:
- timeout
-
DNS lookup timeout in secs.
Default: 15 sec.
- blocked_hosts: ArrayRef[Str|RegExp|Code]
-
List of blocked hosts in string, regexp or coderef.
- whitelisted_hosts: ArrayRef[Str|RegExp|Code]
-
List of white listed hosts in string, regexp or coderef.
- resolver: Net::DNS::Resolver
-
DNS resolver object, have same interface as Net::DNS::Resolver.
- my ($addrs, $err) = $dns->resolve($name[, $start_time[, $timeout]])
-
Resolve a host name using DNS. If it's bad host, then returns $addrs as undef, and $err is the reason in string.
$start_time is a time to start your operation. Timeout value was counted from it. Default value is time().
$timeout is a timeout value. Default value is
$dns-
timeout>.
USE WITH Furl
You can use Net::DNS::Paranoid with Furl!
use Furl::HTTP;
use Net::DNS::Paranoid;
my $resolver = Net::DNS::Paranoid->new();
my $furl = Furl->new(
inet_aton => sub {
my ($host, $errmsg) = $resolver->resolve($_[0], time(), $_[1]);
die $errmsg unless $host;
Socket::inet_aton($host->[0]);
}
);
USE WITH LWP
I shipped LWPx::ParanoidHandler to wrap this module. Please use it.
THANKS TO
Most of code was taken from LWPx::ParanoidAgent.
AUTHOR
Tokuhiro Matsuno < tokuhirom @A gmail DOT. com>
LICENSE
Copyright (C) Tokuhiro Matsuno
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.