diff options
Diffstat (limited to 'acmeman')
-rwxr-xr-x | acmeman | 38 |
1 files changed, 6 insertions, 32 deletions
@@ -29,7 +29,7 @@ use File::Path qw(make_path); use DateTime::Format::Strptime; use LWP::UserAgent; use LWP::Protocol::https; -use Net::DNS; +use Socket qw(inet_ntoa); use Sys::Hostname; use Pod::Usage; use Pod::Man; @@ -934,38 +934,12 @@ sub coalesce { sub resolve { my $host = shift; - state $res; - unless ($res) { - $res = new Net::DNS::Resolver(); - } - my $q = $res->query($host,'ANY'); - unless ($q) { - if ($res->errorstring eq 'NXDOMAIN') { - debug(1, "$host: no such host"); - } elsif ($res->errorstring eq 'NOERROR') { - debug(1, "$host: no A record"); - } else { - error("$host: " . $res->errorstring); - # FIXME: bail out? - } - return (); - } - my %res; - my %cnames; - my @answer = $q->answer(); - while (my $ans = shift @answer) { - if ($ans->type eq 'A') { - $res{$ans->rdatastr} = 1; - } elsif ($ans->type eq 'CNAME') { - unless ($cnames{$ans->cname}) { # Avoid eventual loops - $cnames{$ans->cname} = 1; - if (my $q = $res->query($ans->cname, 'A')) { - push @answer, ($q->answer()); - } - } - } + if (my @addrs = gethostbyname($host)) { + return map { inet_ntoa($_) } @addrs[4 .. $#addrs]; + } else { + error("$host doesn't resolve"); } - keys %res; + return (); } sub myip { |