Merge pull request #816 from kragniz/catch-dns-error

Catch and return dns query error in DNS01Record
This commit is contained in:
jetstack-bot 2018-08-10 12:16:03 +01:00 committed by GitHub
commit 7d581d60c2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 54 additions and 13 deletions

View File

@ -58,13 +58,21 @@ func (a *DNSProvider) Timeout() (timeout, interval time.Duration) {
// Present creates a TXT record to fulfil the dns-01 challenge
func (a *DNSProvider) Present(domain, token, keyAuth string) error {
fqdn, value, ttl := util.DNS01Record(domain, keyAuth)
fqdn, value, ttl, err := util.DNS01Record(domain, keyAuth)
if err != nil {
return err
}
return a.setTxtRecord(fqdn, &dns01Record{value, ttl})
}
// CleanUp removes the TXT record matching the specified parameters
func (a *DNSProvider) CleanUp(domain, token, keyAuth string) error {
fqdn, _, _ := util.DNS01Record(domain, keyAuth)
fqdn, _, _, err := util.DNS01Record(domain, keyAuth)
if err != nil {
return err
}
return a.setTxtRecord(fqdn, nil)
}

View File

@ -69,14 +69,20 @@ func NewDNSProviderCredentials(clientID, clientSecret, subscriptionID, tenantID,
// Present creates a TXT record using the specified parameters
func (c *DNSProvider) Present(domain, token, keyAuth string) error {
fqdn, value, ttl := util.DNS01Record(domain, keyAuth)
fqdn, value, ttl, err := util.DNS01Record(domain, keyAuth)
if err != nil {
return err
}
return c.createRecord(fqdn, value, ttl)
}
// CleanUp removes the TXT record matching the specified parameters
func (c *DNSProvider) CleanUp(domain, token, keyAuth string) error {
fqdn, _, _ := util.DNS01Record(domain, keyAuth)
fqdn, _, _, err := util.DNS01Record(domain, keyAuth)
if err != nil {
return err
}
z, err := c.getHostedZoneName(fqdn)
if err != nil {

View File

@ -100,7 +100,10 @@ func NewDNSProviderServiceAccountBytes(project string, saBytes []byte) (*DNSProv
// Present creates a TXT record to fulfil the dns-01 challenge.
func (c *DNSProvider) Present(domain, token, key string) error {
fqdn, value, ttl := util.DNS01Record(domain, key)
fqdn, value, ttl, err := util.DNS01Record(domain, key)
if err != nil {
return err
}
zone, err := c.getHostedZone(fqdn)
if err != nil {
@ -147,7 +150,10 @@ func (c *DNSProvider) Present(domain, token, key string) error {
// CleanUp removes the TXT record matching the specified parameters.
func (c *DNSProvider) CleanUp(domain, token, key string) error {
fqdn, _, _ := util.DNS01Record(domain, key)
fqdn, _, _, err := util.DNS01Record(domain, key)
if err != nil {
return err
}
zone, err := c.getHostedZone(fqdn)
if err != nil {

View File

@ -56,7 +56,10 @@ func (c *DNSProvider) Timeout() (timeout, interval time.Duration) {
// Present creates a TXT record to fulfil the dns-01 challenge
func (c *DNSProvider) Present(domain, token, keyAuth string) error {
fqdn, value, _ := util.DNS01Record(domain, keyAuth)
fqdn, value, _, err := util.DNS01Record(domain, keyAuth)
if err != nil {
return err
}
zoneID, err := c.getHostedZoneID(fqdn)
if err != nil {
@ -102,7 +105,10 @@ func (c *DNSProvider) Present(domain, token, keyAuth string) error {
// CleanUp removes the TXT record matching the specified parameters
func (c *DNSProvider) CleanUp(domain, token, keyAuth string) error {
fqdn, _, _ := util.DNS01Record(domain, keyAuth)
fqdn, _, _, err := util.DNS01Record(domain, keyAuth)
if err != nil {
return err
}
record, err := c.findTxtRecord(fqdn)
if err != nil {

View File

@ -69,7 +69,11 @@ func (s *Solver) Present(ctx context.Context, issuer v1alpha1.GenericIssuer, _ *
}
func (s *Solver) Check(ch v1alpha1.ACMEOrderChallenge) (bool, error) {
fqdn, value, ttl := util.DNS01Record(ch.Domain, ch.Key)
fqdn, value, ttl, err := util.DNS01Record(ch.Domain, ch.Key)
if err != nil {
return false, err
}
glog.Infof("Checking DNS propagation for %q using name servers: %v", ch.Domain, s.DNS01Nameservers)
ok, err := util.PreCheckDNS(fqdn, value, s.DNS01Nameservers)

View File

@ -112,14 +112,22 @@ func (*DNSProvider) Timeout() (timeout, interval time.Duration) {
// Present creates a TXT record using the specified parameters
func (r *DNSProvider) Present(domain, token, keyAuth string) error {
fqdn, value, _ := util.DNS01Record(domain, keyAuth)
fqdn, value, _, err := util.DNS01Record(domain, keyAuth)
if err != nil {
return err
}
value = `"` + value + `"`
return r.changeRecord(route53.ChangeActionUpsert, fqdn, value, route53TTL)
}
// CleanUp removes the TXT record matching the specified parameters
func (r *DNSProvider) CleanUp(domain, token, keyAuth string) error {
fqdn, value, _ := util.DNS01Record(domain, keyAuth)
fqdn, value, _, err := util.DNS01Record(domain, keyAuth)
if err != nil {
return err
}
value = `"` + value + `"`
return r.changeRecord(route53.ChangeActionDelete, fqdn, value, route53TTL)
}

View File

@ -8,7 +8,7 @@ import (
// DNS01Record returns a DNS record which will fulfill the `dns-01` challenge
// TODO: move this into a non-generic place by resolving import cycle in dns package
func DNS01Record(domain, value string) (string, string, int) {
func DNS01Record(domain, value string) (string, string, int, error) {
fqdn := fmt.Sprintf("_acme-challenge.%s.", domain)
// Check if the domain has CNAME then return that
@ -16,5 +16,8 @@ func DNS01Record(domain, value string) (string, string, int) {
if err == nil && r.Rcode == dns.RcodeSuccess {
fqdn = updateDomainWithCName(r, fqdn)
}
return fqdn, value, 60
if err != nil {
return "", "", 0, err
}
return fqdn, value, 60, nil
}