The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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.