# 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.