# 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](
https://metacpan.org/pod/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](
https://metacpan.org/pod/LWPx::ParanoidHandler) to wrap this module.
Please use it.
# THANKS TO
Most of code was taken from [LWPx::ParanoidAgent](
https://metacpan.org/pod/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.