Mojo::IOLoop::Resolver - IOLoop DNS stub resolver
use Mojo::IOLoop::Resolver; # Lookup address my $resolver = Mojo::IOLoop::Resolver->new; $resolver->lookup('mojolicio.us' => sub { my ($resolver, $address) = @_; ... }); # Resolve "MX" records $resolver->resolve('mojolicio.us', 'MX', sub { my ($resolver, $records) = @_; ... });
Mojo::IOLoop::Resolver is a minimalistic non-blocking I/O DNS stub resolver used by Mojo:IOLoop. Note that this module is EXPERIMENTAL and might change without warning!
Mojo::IOLoop::Resolver implements the following attributes.
ioloop
my $ioloop = $resolver->ioloop; $resolver = $resolver->ioloop(Mojo::IOLoop->new);
Loop object to use for I/O operations, defaults to a Mojo::IOLoop object.
timeout
my $timeout = $resolver->timeout; $resolver = $resolver->timeout(5);
Maximum time in seconds a DNS lookup can take, defaults to 3.
DNS
3
Mojo::IOLoop::Resolver inherits all methods from Mojo::Base and implements the following new ones.
build
my $req = $resolver->build($id, 'A', 'mojolicio.us');
Build DNS request.
is_ipv4
my $success = $resolver->is_ipv4('127.0.0.1');
Check if value is a valid IPv4 address.
IPv4
is_ipv6
my $success = $resolver->is_ipv6('::1');
Check if value is a valid IPv6 address.
IPv6
lookup
$resolver->lookup('mojolicio.us' => sub {...});
Lookup IPv4 or IPv6 address for domain.
$resolver->lookup('mojolicio.us' => sub { my ($loop, $address) = @_; say "Address: $address"; Mojo::IOLoop->stop; }); Mojo::IOLoop->start;
parse
my ($id, $answers) = $resolver->parse($res);
Parse DNS reponse.
resolve
$resolver->resolve('mojolicio.us', 'A', sub {...});
Resolve domain into A, AAAA, CNAME, MX, NS, PTR or TXT records, * will query for all at once. Since this is a "stub resolver" it depends on a recursive name server for DNS resolution.
A
AAAA
CNAME
MX
NS
PTR
TXT
*
servers
my @all = $resolver->servers; my $current = $resolver->servers; $resolver->servers('8.8.8.8', '8.8.4.4');
IP addresses of DNS servers used for lookups, defaults to the value of the MOJO_DNS_SERVER environment variable, auto detection, 8.8.8.8 or 8.8.4.4.
MOJO_DNS_SERVER
8.8.8.8
8.8.4.4
You can set the MOJO_RESOLVER_DEBUG environment variable to get some advanced diagnostics information printed to STDERR.
MOJO_RESOLVER_DEBUG
STDERR
MOJO_RESOLVER_DEBUG=1
Mojolicious, Mojolicious::Guides, http://mojolicio.us.
To install Mojolicious, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Mojolicious
CPAN shell
perl -MCPAN -e shell install Mojolicious
For more information on module installation, please visit the detailed CPAN module installation guide.