diff options
-rw-r--r-- | Makefile.PL | 2 | ||||
-rwxr-xr-x | acmeman | 34 |
2 files changed, 5 insertions, 31 deletions
diff --git a/Makefile.PL b/Makefile.PL index 53ed39a..1fad0ba 100644 --- a/Makefile.PL +++ b/Makefile.PL | |||
@@ -28,13 +28,13 @@ my %makefile_args = ( | |||
28 | 'LWP::UserAgent' => 6.05, | 28 | 'LWP::UserAgent' => 6.05, |
29 | 'LWP::Protocol::https' => 6.04, | 29 | 'LWP::Protocol::https' => 6.04, |
30 | 'Pod::Usage' => 1.51, | 30 | 'Pod::Usage' => 1.51, |
31 | 'Pod::Man' => 2.25, | 31 | 'Pod::Man' => 2.25, |
32 | 'Text::ParseWords' => 3.27, | 32 | 'Text::ParseWords' => 3.27, |
33 | 'Data::Dumper' => 0, | 33 | 'Data::Dumper' => 0, |
34 | 'Net::DNS' => 0.68, | 34 | 'Socket' => 0, |
35 | 'Sys::Hostname' => 1.16 | 35 | 'Sys::Hostname' => 1.16 |
36 | }, | 36 | }, |
37 | 37 | ||
38 | MIN_PERL_VERSION => 5.006, | 38 | MIN_PERL_VERSION => 5.006, |
39 | META_MERGE => { | 39 | META_MERGE => { |
40 | 'meta-spec' => { version => 2 }, | 40 | 'meta-spec' => { version => 2 }, |
@@ -26,13 +26,13 @@ use Crypt::OpenSSL::RSA; | |||
26 | use Crypt::OpenSSL::X509; | 26 | use Crypt::OpenSSL::X509; |
27 | use File::Basename; | 27 | use File::Basename; |
28 | use File::Path qw(make_path); | 28 | use File::Path qw(make_path); |
29 | use DateTime::Format::Strptime; | 29 | use DateTime::Format::Strptime; |
30 | use LWP::UserAgent; | 30 | use LWP::UserAgent; |
31 | use LWP::Protocol::https; | 31 | use LWP::Protocol::https; |
32 | use Net::DNS; | 32 | use Socket qw(inet_ntoa); |
33 | use Sys::Hostname; | 33 | use Sys::Hostname; |
34 | use Pod::Usage; | 34 | use Pod::Usage; |
35 | use Pod::Man; | 35 | use Pod::Man; |
36 | use Getopt::Long qw(:config gnu_getopt no_ignore_case); | 36 | use Getopt::Long qw(:config gnu_getopt no_ignore_case); |
37 | use POSIX qw(strftime time floor); | 37 | use POSIX qw(strftime time floor); |
38 | use App::Acmeman::Config; | 38 | use App::Acmeman::Config; |
@@ -931,45 +931,19 @@ sub coalesce { | |||
931 | } | 931 | } |
932 | @{$ref} = map { $_->{domain} } sort { $a->{ord} <=> $b->{ord} } @domlist; | 932 | @{$ref} = map { $_->{domain} } sort { $a->{ord} <=> $b->{ord} } @domlist; |
933 | } | 933 | } |
934 | 934 | ||
935 | sub resolve { | 935 | sub resolve { |
936 | my $host = shift; | 936 | my $host = shift; |
937 | state $res; | 937 | if (my @addrs = gethostbyname($host)) { |
938 | unless ($res) { | 938 | return map { inet_ntoa($_) } @addrs[4 .. $#addrs]; |
939 | $res = new Net::DNS::Resolver(); | ||
940 | } | ||
941 | my $q = $res->query($host,'ANY'); | ||
942 | unless ($q) { | ||
943 | if ($res->errorstring eq 'NXDOMAIN') { | ||
944 | debug(1, "$host: no such host"); | ||
945 | } elsif ($res->errorstring eq 'NOERROR') { | ||
946 | debug(1, "$host: no A record"); | ||
947 | } else { | 939 | } else { |
948 | error("$host: " . $res->errorstring); | 940 | error("$host doesn't resolve"); |
949 | # FIXME: bail out? | ||
950 | } | 941 | } |
951 | return (); | 942 | return (); |
952 | } | 943 | } |
953 | my %res; | ||
954 | my %cnames; | ||
955 | my @answer = $q->answer(); | ||
956 | while (my $ans = shift @answer) { | ||
957 | if ($ans->type eq 'A') { | ||
958 | $res{$ans->rdatastr} = 1; | ||
959 | } elsif ($ans->type eq 'CNAME') { | ||
960 | unless ($cnames{$ans->cname}) { # Avoid eventual loops | ||
961 | $cnames{$ans->cname} = 1; | ||
962 | if (my $q = $res->query($ans->cname, 'A')) { | ||
963 | push @answer, ($q->answer()); | ||
964 | } | ||
965 | } | ||
966 | } | ||
967 | } | ||
968 | keys %res; | ||
969 | } | ||
970 | 944 | ||
971 | sub myip { | 945 | sub myip { |
972 | my $host = shift; | 946 | my $host = shift; |
973 | state $ips; | 947 | state $ips; |
974 | unless ($ips) { | 948 | unless ($ips) { |
975 | $ips = {}; | 949 | $ips = {}; |