AnyEvent-DNS-EtcHosts
view release on metacpan or search on metacpan
AnyEvent::DNS::EtcHosts - Use /etc/hosts before DNS
SYNOPSIS
use AnyEvent::DNS::EtcHosts;
use AnyEvent::DNS;
my $cv = AE::cv;
AnyEvent::DNS::any 'example.com', sub {
say foreach map { $_->[4] } grep { $_->[1] =~ /^(a|aaaa)$/ } @_;
$cv->send;
};
use AnyEvent::Socket;
my $cv = AE::cv;
AnyEvent::Socket::resolve_sockaddr $domain, $service, $proto, $family, undef, sub {
say foreach map { format_address((AnyEvent::Socket::unpack_sockaddr($_->[3]))[1]) } @_;
$cv->send;
};
DESCRIPTION
AnyEvent::DNS::EtcHosts changes AnyEvent::DNS behavior. The /etc/hosts
file is searched before DNS, so it is possible to override DNS entries.
The DNS lookups are emulated. This resolver returns the standard DNS
reply based on /etc/hosts file rather than real DNS.
examples/dns.pl view on Meta::CPAN
use lib 'lib', '../lib';
my $domain = $ARGV[0] || 'example.com';
use if ($ENV{PERL_ANYEVENT_DNS} || "") eq 'EtcHosts' || !$ENV{PERL_ANYEVENT_DNS}, 'AnyEvent::DNS::EtcHosts';
use AnyEvent::DNS;
my $cv = AE::cv;
AnyEvent::DNS::any $domain, sub {
say foreach map { $_->[4] } grep { $_->[1] =~ /^(a|aaaa)$/ } @_;
$cv->send;
};
$cv->recv;
examples/lexical.pl view on Meta::CPAN
my $domain = $ARGV[0] || 'example.com';
my $service = $ARGV[1] || 80;
my $proto = $ARGV[2] || 'tcp';
my $family = $ARGV[3] || 0;
require AnyEvent::DNS::EtcHosts;
use AnyEvent::Socket;
use Socket;
say 'Disabled AnyEvent::DNS::EtcHosts';
{
my $cv = AE::cv;
AnyEvent::Socket::resolve_sockaddr $domain, $service, $proto, $family, undef, sub {
say foreach map { format_address((AnyEvent::Socket::unpack_sockaddr($_->[3]))[1]) } @_;
$cv->send;
};
$cv->recv;
}
say '';
say 'Enabled AnyEvent::DNS::EtcHosts';
{
my $guard = AnyEvent::DNS::EtcHosts->register;
my $cv = AE::cv;
AnyEvent::Socket::resolve_sockaddr $domain, $service, $proto, $family, undef, sub {
say foreach map { format_address((AnyEvent::Socket::unpack_sockaddr($_->[3]))[1]) } @_;
$cv->send;
};
$cv->recv;
}
say '';
say 'Disabled AnyEvent::DNS::EtcHosts';
{
my $cv = AE::cv;
AnyEvent::Socket::resolve_sockaddr $domain, $service, $proto, $family, undef, sub {
say foreach map { format_address((AnyEvent::Socket::unpack_sockaddr($_->[3]))[1]) } @_;
$cv->send;
};
$cv->recv;
}
examples/socket.pl view on Meta::CPAN
my $proto = $ARGV[2] || 'tcp';
my $family = $ARGV[3] || 0;
use if ($ENV{PERL_ANYEVENT_DNS} || '') eq 'EtcHosts' || !$ENV{PERL_ANYEVENT_DNS}, 'AnyEvent::DNS::EtcHosts';
use AnyEvent::Socket;
use Socket;
my $cv = AE::cv;
AnyEvent::Socket::resolve_sockaddr $domain, $service, $proto, $family, undef, sub {
say foreach map { format_address((AnyEvent::Socket::unpack_sockaddr($_->[3]))[1]) } @_;
$cv->send;
};
$cv->recv;
lib/AnyEvent/DNS/EtcHosts.pm view on Meta::CPAN
=head1 SYNOPSIS
=for markdown ```perl
use AnyEvent::DNS::EtcHosts;
use AnyEvent::DNS;
my $cv = AE::cv;
AnyEvent::DNS::any 'example.com', sub {
say foreach map { $_->[4] } grep { $_->[1] =~ /^(a|aaaa)$/ } @_;
$cv->send;
};
use AnyEvent::Socket;
my $cv = AE::cv;
AnyEvent::Socket::resolve_sockaddr $domain, $service, $proto, $family, undef, sub {
say foreach map { format_address((AnyEvent::Socket::unpack_sockaddr($_->[3]))[1]) } @_;
$cv->send;
};
=for markdown ```
=head1 DESCRIPTION
AnyEvent::DNS::EtcHosts changes AnyEvent::DNS behavior. The F</etc/hosts> file
is searched before DNS, so it is possible to override DNS entries.
( run in 2.363 seconds using v1.01-cache-2.11-cpan-9169edd2b0e )