forked from TrueCloudLab/lego
fix: CNAME support (#1735)
This commit is contained in:
parent
1b56aa0d2f
commit
6cc21f2753
43 changed files with 132 additions and 102 deletions
|
@ -107,6 +107,7 @@ func (d *DNSProvider) Present(domain, _, keyAuth string) error {
|
||||||
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
// Check if credentials were previously saved for this domain.
|
// Check if credentials were previously saved for this domain.
|
||||||
|
// TODO(ldez) replace domain by FQDN to follow CNAME.
|
||||||
account, err := d.storage.Fetch(domain)
|
account, err := d.storage.Fetch(domain)
|
||||||
// Errors other than goacmeDNS.ErrDomainNotFound are unexpected.
|
// Errors other than goacmeDNS.ErrDomainNotFound are unexpected.
|
||||||
if err != nil && !errors.Is(err, goacmedns.ErrDomainNotFound) {
|
if err != nil && !errors.Is(err, goacmedns.ErrDomainNotFound) {
|
||||||
|
|
|
@ -132,7 +132,7 @@ func (d *DNSProvider) Timeout() (timeout, interval time.Duration) {
|
||||||
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
zoneName, err := d.getHostedZone(domain)
|
zoneName, err := d.getHostedZone(fqdn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("alicloud: %w", err)
|
return fmt.Errorf("alicloud: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -153,12 +153,12 @@ func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
||||||
fqdn, _ := dns01.GetRecord(domain, keyAuth)
|
fqdn, _ := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
records, err := d.findTxtRecords(domain, fqdn)
|
records, err := d.findTxtRecords(fqdn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("alicloud: %w", err)
|
return fmt.Errorf("alicloud: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = d.getHostedZone(domain)
|
_, err = d.getHostedZone(fqdn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("alicloud: %w", err)
|
return fmt.Errorf("alicloud: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -197,7 +197,7 @@ func (d *DNSProvider) getHostedZone(domain string) (string, error) {
|
||||||
startPage++
|
startPage++
|
||||||
}
|
}
|
||||||
|
|
||||||
authZone, err := dns01.FindZoneByFqdn(dns01.ToFqdn(domain))
|
authZone, err := dns01.FindZoneByFqdn(domain)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
@ -233,8 +233,8 @@ func (d *DNSProvider) newTxtRecord(zone, fqdn, value string) (*alidns.AddDomainR
|
||||||
return request, nil
|
return request, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *DNSProvider) findTxtRecords(domain, fqdn string) ([]alidns.Record, error) {
|
func (d *DNSProvider) findTxtRecords(fqdn string) ([]alidns.Record, error) {
|
||||||
zoneName, err := d.getHostedZone(domain)
|
zoneName, err := d.getHostedZone(fqdn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -106,7 +106,7 @@ func NewDNSProviderConfig(config *Config) (*DNSProvider, error) {
|
||||||
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
authZone, err := dns01.FindZoneByFqdn(dns01.ToFqdn(domain))
|
authZone, err := dns01.FindZoneByFqdn(fqdn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("aurora: could not determine zone for domain %q: %w", domain, err)
|
return fmt.Errorf("aurora: could not determine zone for domain %q: %w", domain, err)
|
||||||
}
|
}
|
||||||
|
@ -158,7 +158,7 @@ func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
||||||
return fmt.Errorf("unknown recordID for %q", fqdn)
|
return fmt.Errorf("unknown recordID for %q", fqdn)
|
||||||
}
|
}
|
||||||
|
|
||||||
authZone, err := dns01.FindZoneByFqdn(dns01.ToFqdn(domain))
|
authZone, err := dns01.FindZoneByFqdn(dns01.ToFqdn(fqdn))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("could not determine zone for domain %q: %w", domain, err)
|
return fmt.Errorf("could not determine zone for domain %q: %w", domain, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -114,6 +114,7 @@ func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
Value: value,
|
Value: value,
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
// TODO(ldez) replace domain by FQDN to follow CNAME.
|
||||||
_, err := d.addTxtRecord(domain, records)
|
_, err := d.addTxtRecord(domain, records)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("autodns: %w", err)
|
return fmt.Errorf("autodns: %w", err)
|
||||||
|
@ -133,6 +134,7 @@ func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
||||||
Value: value,
|
Value: value,
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
// TODO(ldez) replace domain by FQDN to follow CNAME.
|
||||||
if err := d.removeTXTRecord(domain, records); err != nil {
|
if err := d.removeTXTRecord(domain, records); err != nil {
|
||||||
return fmt.Errorf("autodns: %w", err)
|
return fmt.Errorf("autodns: %w", err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -101,6 +101,7 @@ func NewDNSProviderConfig(config *Config) (*DNSProvider, error) {
|
||||||
|
|
||||||
// Present creates a TXT record to fulfill the dns-01 challenge.
|
// Present creates a TXT record to fulfill the dns-01 challenge.
|
||||||
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
|
// TODO(ldez) replace domain by FQDN to follow CNAME.
|
||||||
domainID, err := d.getDomainIDByName(domain)
|
domainID, err := d.getDomainIDByName(domain)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("checkdomain: %w", err)
|
return fmt.Errorf("checkdomain: %w", err)
|
||||||
|
@ -111,10 +112,10 @@ func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
return fmt.Errorf("checkdomain: %w", err)
|
return fmt.Errorf("checkdomain: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
name, value := dns01.GetRecord(domain, keyAuth)
|
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
err = d.createRecord(domainID, &Record{
|
err = d.createRecord(domainID, &Record{
|
||||||
Name: name,
|
Name: fqdn,
|
||||||
TTL: d.config.TTL,
|
TTL: d.config.TTL,
|
||||||
Type: "TXT",
|
Type: "TXT",
|
||||||
Value: value,
|
Value: value,
|
||||||
|
@ -129,6 +130,7 @@ func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
|
|
||||||
// CleanUp removes the TXT record previously created.
|
// CleanUp removes the TXT record previously created.
|
||||||
func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
||||||
|
// TODO(ldez) replace domain by FQDN to follow CNAME.
|
||||||
domainID, err := d.getDomainIDByName(domain)
|
domainID, err := d.getDomainIDByName(domain)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("checkdomain: %w", err)
|
return fmt.Errorf("checkdomain: %w", err)
|
||||||
|
@ -139,15 +141,15 @@ func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
||||||
return fmt.Errorf("checkdomain: %w", err)
|
return fmt.Errorf("checkdomain: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
name, value := dns01.GetRecord(domain, keyAuth)
|
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
err = d.deleteTXTRecord(domainID, name, value)
|
err = d.deleteTXTRecord(domainID, fqdn, value)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("checkdomain: %w", err)
|
return fmt.Errorf("checkdomain: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
d.domainIDMu.Lock()
|
d.domainIDMu.Lock()
|
||||||
delete(d.domainIDMapping, name)
|
delete(d.domainIDMapping, fqdn)
|
||||||
d.domainIDMu.Unlock()
|
d.domainIDMu.Unlock()
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|
|
@ -93,7 +93,7 @@ func NewDNSProviderConfig(config *Config) (*DNSProvider, error) {
|
||||||
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
zoneName, err := d.getHostedZone(domain)
|
zoneName, err := d.getHostedZone(fqdn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("dnsimple: %w", err)
|
return fmt.Errorf("dnsimple: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -116,7 +116,7 @@ func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
||||||
fqdn, _ := dns01.GetRecord(domain, keyAuth)
|
fqdn, _ := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
records, err := d.findTxtRecords(domain, fqdn)
|
records, err := d.findTxtRecords(fqdn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("dnsimple: %w", err)
|
return fmt.Errorf("dnsimple: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -144,7 +144,7 @@ func (d *DNSProvider) Timeout() (timeout, interval time.Duration) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *DNSProvider) getHostedZone(domain string) (string, error) {
|
func (d *DNSProvider) getHostedZone(domain string) (string, error) {
|
||||||
authZone, err := dns01.FindZoneByFqdn(dns01.ToFqdn(domain))
|
authZone, err := dns01.FindZoneByFqdn(domain)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
@ -175,8 +175,8 @@ func (d *DNSProvider) getHostedZone(domain string) (string, error) {
|
||||||
return hostedZone.Name, nil
|
return hostedZone.Name, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *DNSProvider) findTxtRecords(domain, fqdn string) ([]dnsimple.ZoneRecord, error) {
|
func (d *DNSProvider) findTxtRecords(fqdn string) ([]dnsimple.ZoneRecord, error) {
|
||||||
zoneName, err := d.getHostedZone(domain)
|
zoneName, err := d.getHostedZone(fqdn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -88,7 +88,8 @@ func NewDNSProviderConfig(config *Config) (*DNSProvider, error) {
|
||||||
// Present creates a TXT record to fulfill the dns-01 challenge.
|
// Present creates a TXT record to fulfill the dns-01 challenge.
|
||||||
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
||||||
zoneID, zoneName, err := d.getHostedZone(domain)
|
|
||||||
|
zoneID, zoneName, err := d.getHostedZone(fqdn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -106,12 +107,12 @@ func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
||||||
fqdn, _ := dns01.GetRecord(domain, keyAuth)
|
fqdn, _ := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
records, err := d.findTxtRecords(domain, fqdn)
|
zoneID, zoneName, err := d.getHostedZone(fqdn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
zoneID, _, err := d.getHostedZone(domain)
|
records, err := d.findTxtRecords(fqdn, zoneID, zoneName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -137,7 +138,7 @@ func (d *DNSProvider) getHostedZone(domain string) (string, string, error) {
|
||||||
return "", "", fmt.Errorf("API call failed: %w", err)
|
return "", "", fmt.Errorf("API call failed: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
authZone, err := dns01.FindZoneByFqdn(dns01.ToFqdn(domain))
|
authZone, err := dns01.FindZoneByFqdn(domain)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", "", err
|
return "", "", err
|
||||||
}
|
}
|
||||||
|
@ -168,12 +169,7 @@ func (d *DNSProvider) newTxtRecord(zone, fqdn, value string, ttl int) *dnspod.Re
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *DNSProvider) findTxtRecords(domain, fqdn string) ([]dnspod.Record, error) {
|
func (d *DNSProvider) findTxtRecords(fqdn, zoneID, zoneName string) ([]dnspod.Record, error) {
|
||||||
zoneID, zoneName, err := d.getHostedZone(domain)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
recordName := extractRecordName(fqdn, zoneName)
|
recordName := extractRecordName(fqdn, zoneName)
|
||||||
|
|
||||||
var records []dnspod.Record
|
var records []dnspod.Record
|
||||||
|
|
|
@ -99,6 +99,7 @@ func (d *DNSProvider) Timeout() (timeout, interval time.Duration) {
|
||||||
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
|
// TODO(ldez) replace domain by FQDN to follow CNAME.
|
||||||
rootDomain, err := d.client.GetRootDomain(domain)
|
rootDomain, err := d.client.GetRootDomain(domain)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("dynu: could not find root domain for %s: %w", domain, err)
|
return fmt.Errorf("dynu: could not find root domain for %s: %w", domain, err)
|
||||||
|
@ -138,6 +139,7 @@ func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
||||||
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
|
// TODO(ldez) replace domain by FQDN to follow CNAME.
|
||||||
rootDomain, err := d.client.GetRootDomain(domain)
|
rootDomain, err := d.client.GetRootDomain(domain)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("dynu: could not find root domain for %s: %w", domain, err)
|
return fmt.Errorf("dynu: could not find root domain for %s: %w", domain, err)
|
||||||
|
|
|
@ -109,7 +109,7 @@ func (d *DNSProvider) Timeout() (timeout, interval time.Duration) {
|
||||||
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
zone, err := findZone(domain)
|
zone, err := findZone(fqdn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("edgedns: %w", err)
|
return fmt.Errorf("edgedns: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -161,7 +161,7 @@ func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
||||||
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
zone, err := findZone(domain)
|
zone, err := findZone(fqdn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("edgedns: %w", err)
|
return fmt.Errorf("edgedns: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -215,7 +215,7 @@ func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func findZone(domain string) (string, error) {
|
func findZone(domain string) (string, error) {
|
||||||
zone, err := dns01.FindZoneByFqdn(dns01.ToFqdn(domain))
|
zone, err := dns01.FindZoneByFqdn(domain)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
|
|
@ -66,7 +66,7 @@ func TestLiveTTL(t *testing.T) {
|
||||||
}()
|
}()
|
||||||
|
|
||||||
fqdn := "_acme-challenge." + domain + "."
|
fqdn := "_acme-challenge." + domain + "."
|
||||||
zone, err := findZone(domain)
|
zone, err := findZone(fqdn)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
resourceRecordSets, err := configdns.GetRecordList(zone, fqdn, "TXT")
|
resourceRecordSets, err := configdns.GetRecordList(zone, fqdn, "TXT")
|
||||||
|
|
|
@ -158,12 +158,12 @@ func TestDNSProvider_findZone(t *testing.T) {
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
desc: "Extract root record name",
|
desc: "Extract root record name",
|
||||||
domain: "bar.com",
|
domain: "bar.com.",
|
||||||
expected: "bar.com",
|
expected: "bar.com",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
desc: "Extract sub record name",
|
desc: "Extract sub record name",
|
||||||
domain: "foo.bar.com",
|
domain: "foo.bar.com.",
|
||||||
expected: "bar.com",
|
expected: "bar.com",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -113,7 +113,8 @@ func NewDNSProviderConfig(config *Config) (*DNSProvider, error) {
|
||||||
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
||||||
zoneName, recordName, err := d.findZoneAndRecordName(fqdn, domain)
|
|
||||||
|
zoneName, recordName, err := d.findZoneAndRecordName(fqdn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -169,7 +170,8 @@ func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
fqdn, _ := dns01.GetRecord(domain, keyAuth)
|
fqdn, _ := dns01.GetRecord(domain, keyAuth)
|
||||||
zoneName, recordName, err := d.findZoneAndRecordName(fqdn, domain)
|
|
||||||
|
zoneName, recordName, err := d.findZoneAndRecordName(fqdn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -244,8 +246,8 @@ func (d *DNSProvider) findExistingRecordID(zoneID, recordName string) (string, e
|
||||||
}
|
}
|
||||||
|
|
||||||
// findZoneAndRecordName Extract DNS zone and DNS entry name.
|
// findZoneAndRecordName Extract DNS zone and DNS entry name.
|
||||||
func (d *DNSProvider) findZoneAndRecordName(fqdn, domain string) (string, string, error) {
|
func (d *DNSProvider) findZoneAndRecordName(fqdn string) (string, string, error) {
|
||||||
zone, err := dns01.FindZoneByFqdn(dns01.ToFqdn(domain))
|
zone, err := dns01.FindZoneByFqdn(fqdn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", "", err
|
return "", "", err
|
||||||
}
|
}
|
||||||
|
|
|
@ -140,13 +140,11 @@ func TestDNSProvider_FindZoneAndRecordName(t *testing.T) {
|
||||||
testCases := []struct {
|
testCases := []struct {
|
||||||
desc string
|
desc string
|
||||||
fqdn string
|
fqdn string
|
||||||
domain string
|
|
||||||
expected expected
|
expected expected
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
desc: "Extract root record name",
|
desc: "Extract root record name",
|
||||||
fqdn: "_acme-challenge.bar.com.",
|
fqdn: "_acme-challenge.bar.com.",
|
||||||
domain: "bar.com",
|
|
||||||
expected: expected{
|
expected: expected{
|
||||||
zone: "bar.com",
|
zone: "bar.com",
|
||||||
recordName: "_acme-challenge",
|
recordName: "_acme-challenge",
|
||||||
|
@ -155,7 +153,6 @@ func TestDNSProvider_FindZoneAndRecordName(t *testing.T) {
|
||||||
{
|
{
|
||||||
desc: "Extract sub record name",
|
desc: "Extract sub record name",
|
||||||
fqdn: "_acme-challenge.foo.bar.com.",
|
fqdn: "_acme-challenge.foo.bar.com.",
|
||||||
domain: "foo.bar.com",
|
|
||||||
expected: expected{
|
expected: expected{
|
||||||
zone: "bar.com",
|
zone: "bar.com",
|
||||||
recordName: "_acme-challenge.foo",
|
recordName: "_acme-challenge.foo",
|
||||||
|
@ -168,7 +165,7 @@ func TestDNSProvider_FindZoneAndRecordName(t *testing.T) {
|
||||||
t.Run(test.desc, func(t *testing.T) {
|
t.Run(test.desc, func(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
|
|
||||||
zone, recordName, err := provider.findZoneAndRecordName(test.fqdn, test.domain)
|
zone, recordName, err := provider.findZoneAndRecordName(test.fqdn)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Equal(t, test.expected.zone, zone)
|
assert.Equal(t, test.expected.zone, zone)
|
||||||
assert.Equal(t, test.expected.recordName, recordName)
|
assert.Equal(t, test.expected.recordName, recordName)
|
||||||
|
|
|
@ -120,6 +120,7 @@ func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
defer d.inProgressMu.Unlock()
|
defer d.inProgressMu.Unlock()
|
||||||
|
|
||||||
// add TXT record into authZone
|
// add TXT record into authZone
|
||||||
|
// TODO(ldez) replace domain by FQDN to follow CNAME.
|
||||||
recordID, err := d.addTXTRecord(domain, dns01.UnFqdn(authZone), name, value, d.config.TTL)
|
recordID, err := d.addTXTRecord(domain, dns01.UnFqdn(authZone), name, value, d.config.TTL)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -146,6 +147,7 @@ func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
||||||
delete(d.activeRecords, fqdn)
|
delete(d.activeRecords, fqdn)
|
||||||
|
|
||||||
// delete TXT record from authZone
|
// delete TXT record from authZone
|
||||||
|
// TODO(ldez) replace domain by FQDN to follow CNAME.
|
||||||
return d.deleteTXTRecord(domain, recordID)
|
return d.deleteTXTRecord(domain, recordID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -108,6 +108,7 @@ func (d *DNSProvider) Timeout() (timeout, interval time.Duration) {
|
||||||
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
|
// TODO(ldez) replace domain by FQDN to follow CNAME.
|
||||||
err := d.wrapper.AddTXTRecord(fqdn, domain, value, d.config.TTL)
|
err := d.wrapper.AddTXTRecord(fqdn, domain, value, d.config.TTL)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("ibmcloud: %w", err)
|
return fmt.Errorf("ibmcloud: %w", err)
|
||||||
|
@ -120,6 +121,7 @@ func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
||||||
fqdn, _ := dns01.GetRecord(domain, keyAuth)
|
fqdn, _ := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
|
// TODO(ldez) replace domain by FQDN to follow CNAME.
|
||||||
err := d.wrapper.CleanupTXTRecord(fqdn, domain)
|
err := d.wrapper.CleanupTXTRecord(fqdn, domain)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("ibmcloud: %w", err)
|
return fmt.Errorf("ibmcloud: %w", err)
|
||||||
|
|
|
@ -100,6 +100,7 @@ func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
||||||
_, value := dns01.GetRecord(domain, keyAuth)
|
_, value := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
|
// TODO(ldez) replace domain by FQDN to follow CNAME.
|
||||||
err := d.deleteTxtRecord(domain, value)
|
err := d.deleteTxtRecord(domain, value)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("iij: %w", err)
|
return fmt.Errorf("iij: %w", err)
|
||||||
|
@ -113,6 +114,7 @@ func (d *DNSProvider) addTxtRecord(domain, value string) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO(ldez) replace domain by FQDN to follow CNAME.
|
||||||
owner, zone, err := splitDomain(domain, zones)
|
owner, zone, err := splitDomain(domain, zones)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
|
@ -100,7 +100,7 @@ func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
|
|
||||||
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
zoneID, err := dpfapiutils.GetZoneIdFromServiceCode(context.Background(), d.client, d.config.ServiceCode)
|
zoneID, err := dpfapiutils.GetZoneIdFromServiceCode(ctx, d.client, d.config.ServiceCode)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("iijdpf: failed to get zone id: %w", err)
|
return fmt.Errorf("iijdpf: failed to get zone id: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -124,7 +124,7 @@ func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
||||||
|
|
||||||
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
zoneID, err := dpfapiutils.GetZoneIdFromServiceCode(context.Background(), d.client, d.config.ServiceCode)
|
zoneID, err := dpfapiutils.GetZoneIdFromServiceCode(ctx, d.client, d.config.ServiceCode)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("iijdpf: failed to get zone id: %w", err)
|
return fmt.Errorf("iijdpf: failed to get zone id: %w", err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -112,6 +112,7 @@ func NewDNSProviderConfig(config *Config) (*DNSProvider, error) {
|
||||||
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
|
// TODO(ldez) replace domain by FQDN to follow CNAME.
|
||||||
ikDomain, err := d.client.GetDomainByName(domain)
|
ikDomain, err := d.client.GetDomainByName(domain)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("infomaniak: could not get domain %q: %w", domain, err)
|
return fmt.Errorf("infomaniak: could not get domain %q: %w", domain, err)
|
||||||
|
|
|
@ -115,6 +115,7 @@ func (d *DNSProvider) Present(domain, _, keyAuth string) error {
|
||||||
return fmt.Errorf("ionos: failed to get zones: %w", err)
|
return fmt.Errorf("ionos: failed to get zones: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO(ldez) replace domain by FQDN to follow CNAME.
|
||||||
zone := findZone(zones, domain)
|
zone := findZone(zones, domain)
|
||||||
if zone == nil {
|
if zone == nil {
|
||||||
return errors.New("ionos: no matching zone found for domain")
|
return errors.New("ionos: no matching zone found for domain")
|
||||||
|
@ -156,6 +157,7 @@ func (d *DNSProvider) CleanUp(domain, _, keyAuth string) error {
|
||||||
return fmt.Errorf("ionos: failed to get zones: %w", err)
|
return fmt.Errorf("ionos: failed to get zones: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO(ldez) replace domain by FQDN to follow CNAME.
|
||||||
zone := findZone(zones, domain)
|
zone := findZone(zones, domain)
|
||||||
if zone == nil {
|
if zone == nil {
|
||||||
return errors.New("ionos: no matching zone found for domain")
|
return errors.New("ionos: no matching zone found for domain")
|
||||||
|
|
|
@ -132,6 +132,7 @@ func (d *DNSProvider) Timeout() (time.Duration, time.Duration) {
|
||||||
// Present creates a TXT record using the specified parameters.
|
// Present creates a TXT record using the specified parameters.
|
||||||
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
zone, err := d.getHostedZoneInfo(fqdn)
|
zone, err := d.getHostedZoneInfo(fqdn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
|
@ -87,6 +87,8 @@ func (d *DNSProvider) Timeout() (timeout, interval time.Duration) {
|
||||||
// Present creates a TXT record to fulfill the dns-01 challenge.
|
// Present creates a TXT record to fulfill the dns-01 challenge.
|
||||||
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
_, value := dns01.GetRecord(domain, keyAuth)
|
_, value := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
|
// TODO(ldez) replace domain by FQDN to follow CNAME.
|
||||||
err := d.doRequest(domain, value, "REGIST")
|
err := d.doRequest(domain, value, "REGIST")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("mydnsjp: %w", err)
|
return fmt.Errorf("mydnsjp: %w", err)
|
||||||
|
@ -97,6 +99,8 @@ func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
// CleanUp removes the TXT record matching the specified parameters.
|
// CleanUp removes the TXT record matching the specified parameters.
|
||||||
func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
||||||
_, value := dns01.GetRecord(domain, keyAuth)
|
_, value := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
|
// TODO(ldez) replace domain by FQDN to follow CNAME.
|
||||||
err := d.doRequest(domain, value, "DELETE")
|
err := d.doRequest(domain, value, "DELETE")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("mydnsjp: %w", err)
|
return fmt.Errorf("mydnsjp: %w", err)
|
||||||
|
|
|
@ -144,6 +144,7 @@ func (d *DNSProvider) Timeout() (timeout, interval time.Duration) {
|
||||||
|
|
||||||
// Present installs a TXT record for the DNS challenge.
|
// Present installs a TXT record for the DNS challenge.
|
||||||
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
|
// TODO(ldez) replace domain by FQDN to follow CNAME.
|
||||||
ch, err := newChallenge(domain, keyAuth)
|
ch, err := newChallenge(domain, keyAuth)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("namecheap: %w", err)
|
return fmt.Errorf("namecheap: %w", err)
|
||||||
|
@ -179,6 +180,7 @@ func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
|
|
||||||
// CleanUp removes a TXT record used for a previous DNS challenge.
|
// CleanUp removes a TXT record used for a previous DNS challenge.
|
||||||
func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
||||||
|
// TODO(ldez) replace domain by FQDN to follow CNAME.
|
||||||
ch, err := newChallenge(domain, keyAuth)
|
ch, err := newChallenge(domain, keyAuth)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("namecheap: %w", err)
|
return fmt.Errorf("namecheap: %w", err)
|
||||||
|
|
|
@ -108,11 +108,13 @@ func NewDNSProviderConfig(config *Config) (*DNSProvider, error) {
|
||||||
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
|
// TODO(ldez) replace domain by FQDN to follow CNAME.
|
||||||
domainDetails, err := d.client.GetDomain(&namecom.GetDomainRequest{DomainName: domain})
|
domainDetails, err := d.client.GetDomain(&namecom.GetDomainRequest{DomainName: domain})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("namedotcom API call failed: %w", err)
|
return fmt.Errorf("namedotcom API call failed: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO(ldez) replace domain by FQDN to follow CNAME.
|
||||||
request := &namecom.Record{
|
request := &namecom.Record{
|
||||||
DomainName: domain,
|
DomainName: domain,
|
||||||
Host: extractRecordName(fqdn, domainDetails.DomainName),
|
Host: extractRecordName(fqdn, domainDetails.DomainName),
|
||||||
|
@ -133,6 +135,7 @@ func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
||||||
fqdn, _ := dns01.GetRecord(domain, keyAuth)
|
fqdn, _ := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
|
// TODO(ldez) replace domain by FQDN to follow CNAME.
|
||||||
records, err := d.getRecords(domain)
|
records, err := d.getRecords(domain)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("namedotcom: %w", err)
|
return fmt.Errorf("namedotcom: %w", err)
|
||||||
|
@ -140,6 +143,7 @@ func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
||||||
|
|
||||||
for _, rec := range records {
|
for _, rec := range records {
|
||||||
if rec.Fqdn == fqdn && rec.Type == "TXT" {
|
if rec.Fqdn == fqdn && rec.Type == "TXT" {
|
||||||
|
// TODO(ldez) replace domain by FQDN to follow CNAME.
|
||||||
request := &namecom.DeleteRecordRequest{
|
request := &namecom.DeleteRecordRequest{
|
||||||
DomainName: domain,
|
DomainName: domain,
|
||||||
ID: rec.ID,
|
ID: rec.ID,
|
||||||
|
|
|
@ -89,7 +89,7 @@ func NewDNSProviderConfig(config *Config) (*DNSProvider, error) {
|
||||||
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
zoneName, err := getZoneNameByDomain(domain)
|
zoneName, err := getZoneNameByDomain(fqdn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("namesilo: %w", err)
|
return fmt.Errorf("namesilo: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -111,7 +111,7 @@ func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
||||||
fqdn, _ := dns01.GetRecord(domain, keyAuth)
|
fqdn, _ := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
zoneName, err := getZoneNameByDomain(domain)
|
zoneName, err := getZoneNameByDomain(fqdn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("namesilo: %w", err)
|
return fmt.Errorf("namesilo: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -141,7 +141,7 @@ func (d *DNSProvider) Timeout() (timeout, interval time.Duration) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func getZoneNameByDomain(domain string) (string, error) {
|
func getZoneNameByDomain(domain string) (string, error) {
|
||||||
zone, err := dns01.FindZoneByFqdn(dns01.ToFqdn(domain))
|
zone, err := dns01.FindZoneByFqdn(domain)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", fmt.Errorf("failed to find zone for domain: %s, %w", domain, err)
|
return "", fmt.Errorf("failed to find zone for domain: %s, %w", domain, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -110,9 +110,9 @@ func (d *DNSProvider) Sequential() time.Duration {
|
||||||
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
authZone, err := dns01.FindZoneByFqdn(dns01.ToFqdn(domain))
|
authZone, err := dns01.FindZoneByFqdn(fqdn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("nearlyfreespeech: could not determine zone for domain %q: %w", domain, err)
|
return fmt.Errorf("nearlyfreespeech: could not determine zone for domain %q: %w", fqdn, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
record := internal.Record{
|
record := internal.Record{
|
||||||
|
@ -134,9 +134,9 @@ func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
||||||
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
authZone, err := dns01.FindZoneByFqdn(dns01.ToFqdn(domain))
|
authZone, err := dns01.FindZoneByFqdn(fqdn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("nearlyfreespeech: could not determine zone for domain %q: %w", domain, err)
|
return fmt.Errorf("nearlyfreespeech: could not determine zone for domain %q: %w", fqdn, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
record := internal.Record{
|
record := internal.Record{
|
||||||
|
|
|
@ -91,8 +91,8 @@ func NewDNSProviderConfig(config *Config) (*DNSProvider, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Present creates a TXT record to fulfill the dns-01 challenge.
|
// Present creates a TXT record to fulfill the dns-01 challenge.
|
||||||
func (d *DNSProvider) Present(domainName, token, keyAuth string) error {
|
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
fqdn, value := dns01.GetRecord(domainName, keyAuth)
|
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
zone, err := dns01.FindZoneByFqdn(fqdn)
|
zone, err := dns01.FindZoneByFqdn(fqdn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -138,8 +138,8 @@ func (d *DNSProvider) Present(domainName, token, keyAuth string) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// CleanUp removes the TXT record matching the specified parameters.
|
// CleanUp removes the TXT record matching the specified parameters.
|
||||||
func (d *DNSProvider) CleanUp(domainName, token, keyAuth string) error {
|
func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
||||||
fqdn, value := dns01.GetRecord(domainName, keyAuth)
|
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
zone, err := dns01.FindZoneByFqdn(fqdn)
|
zone, err := dns01.FindZoneByFqdn(fqdn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -137,9 +137,9 @@ func (d *DNSProvider) Timeout() (timeout, interval time.Duration) {
|
||||||
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
rootDomain, err := dns01.FindZoneByFqdn(dns01.ToFqdn(domain))
|
rootDomain, err := dns01.FindZoneByFqdn(fqdn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("nicmanager: could not determine zone for domain %q: %w", domain, err)
|
return fmt.Errorf("nicmanager: could not determine zone for domain %q: %w", fqdn, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
zone, err := d.client.GetZone(dns01.UnFqdn(rootDomain))
|
zone, err := d.client.GetZone(dns01.UnFqdn(rootDomain))
|
||||||
|
@ -168,9 +168,9 @@ func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
||||||
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
rootDomain, err := dns01.FindZoneByFqdn(dns01.ToFqdn(domain))
|
rootDomain, err := dns01.FindZoneByFqdn(fqdn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("nicmanager: could not determine zone for domain %q: %w", domain, err)
|
return fmt.Errorf("nicmanager: could not determine zone for domain %q: %w", fqdn, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
zone, err := d.client.GetZone(dns01.UnFqdn(rootDomain))
|
zone, err := d.client.GetZone(dns01.UnFqdn(rootDomain))
|
||||||
|
|
|
@ -15,11 +15,11 @@ import (
|
||||||
// see: https://github.com/go-acme/lego/pull/850
|
// see: https://github.com/go-acme/lego/pull/850
|
||||||
var mu sync.Mutex
|
var mu sync.Mutex
|
||||||
|
|
||||||
func (d *DNSProvider) addTXTRecord(fqdn, domain, value string, ttl int) error {
|
func (d *DNSProvider) addTXTRecord(fqdn, value string, ttl int) error {
|
||||||
mu.Lock()
|
mu.Lock()
|
||||||
defer mu.Unlock()
|
defer mu.Unlock()
|
||||||
|
|
||||||
zone, err := d.getHostedZone(domain)
|
zone, err := d.getHostedZone(fqdn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("%w", err)
|
return fmt.Errorf("%w", err)
|
||||||
}
|
}
|
||||||
|
@ -43,11 +43,11 @@ func (d *DNSProvider) addTXTRecord(fqdn, domain, value string, ttl int) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *DNSProvider) cleanupTXTRecord(fqdn, domain, value string) error {
|
func (d *DNSProvider) cleanupTXTRecord(fqdn, value string) error {
|
||||||
mu.Lock()
|
mu.Lock()
|
||||||
defer mu.Unlock()
|
defer mu.Unlock()
|
||||||
|
|
||||||
zone, err := d.getHostedZone(domain)
|
zone, err := d.getHostedZone(fqdn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -74,7 +74,7 @@ func (d *DNSProvider) cleanupTXTRecord(fqdn, domain, value string) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *DNSProvider) getHostedZone(domain string) (*iaas.DNS, error) {
|
func (d *DNSProvider) getHostedZone(domain string) (*iaas.DNS, error) {
|
||||||
authZone, err := dns01.FindZoneByFqdn(dns01.ToFqdn(domain))
|
authZone, err := dns01.FindZoneByFqdn(domain)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -65,10 +65,10 @@ func TestDNSProvider_addAndCleanupRecords(t *testing.T) {
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
t.Run("addTXTRecord", func(t *testing.T) {
|
t.Run("addTXTRecord", func(t *testing.T) {
|
||||||
err = p.addTXTRecord("test.example.com", "example.com", "dummyValue", 10)
|
err = p.addTXTRecord("test.example.com.", "dummyValue", 10)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
updZone, e := p.getHostedZone("example.com")
|
updZone, e := p.getHostedZone("test.example.com.")
|
||||||
require.NoError(t, e)
|
require.NoError(t, e)
|
||||||
require.NotNil(t, updZone)
|
require.NotNil(t, updZone)
|
||||||
|
|
||||||
|
@ -76,10 +76,10 @@ func TestDNSProvider_addAndCleanupRecords(t *testing.T) {
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("cleanupTXTRecord", func(t *testing.T) {
|
t.Run("cleanupTXTRecord", func(t *testing.T) {
|
||||||
err = p.cleanupTXTRecord("test.example.com", "example.com", "dummyValue")
|
err = p.cleanupTXTRecord("test.example.com.", "dummyValue")
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
updZone, e := p.getHostedZone("example.com")
|
updZone, e := p.getHostedZone("test.example.com.")
|
||||||
require.NoError(t, e)
|
require.NoError(t, e)
|
||||||
require.NotNil(t, updZone)
|
require.NotNil(t, updZone)
|
||||||
|
|
||||||
|
@ -111,7 +111,7 @@ func TestDNSProvider_concurrentAddAndCleanupRecords(t *testing.T) {
|
||||||
|
|
||||||
for i, p := range providers {
|
for i, p := range providers {
|
||||||
go func(j int, client *DNSProvider) {
|
go func(j int, client *DNSProvider) {
|
||||||
err := client.addTXTRecord(fmt.Sprintf("test%d.example.com", j), "example.com", "dummyValue", 10)
|
err := client.addTXTRecord(fmt.Sprintf("test%d.example.com.", j), "dummyValue", 10)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
wg.Done()
|
wg.Done()
|
||||||
}(i, p)
|
}(i, p)
|
||||||
|
@ -119,7 +119,7 @@ func TestDNSProvider_concurrentAddAndCleanupRecords(t *testing.T) {
|
||||||
|
|
||||||
wg.Wait()
|
wg.Wait()
|
||||||
|
|
||||||
updZone, err := providers[0].getHostedZone("example.com")
|
updZone, err := providers[0].getHostedZone("example.com.")
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.NotNil(t, updZone)
|
require.NotNil(t, updZone)
|
||||||
|
|
||||||
|
@ -131,7 +131,7 @@ func TestDNSProvider_concurrentAddAndCleanupRecords(t *testing.T) {
|
||||||
|
|
||||||
for i, p := range providers {
|
for i, p := range providers {
|
||||||
go func(i int, client *DNSProvider) {
|
go func(i int, client *DNSProvider) {
|
||||||
err := client.cleanupTXTRecord(fmt.Sprintf("test%d.example.com", i), "example.com", "dummyValue")
|
err := client.cleanupTXTRecord(fmt.Sprintf("test%d.example.com.", i), "dummyValue")
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
wg.Done()
|
wg.Done()
|
||||||
}(i, p)
|
}(i, p)
|
||||||
|
@ -139,7 +139,7 @@ func TestDNSProvider_concurrentAddAndCleanupRecords(t *testing.T) {
|
||||||
|
|
||||||
wg.Wait()
|
wg.Wait()
|
||||||
|
|
||||||
updZone, err := providers[0].getHostedZone("example.com")
|
updZone, err := providers[0].getHostedZone("example.com.")
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.NotNil(t, updZone)
|
require.NotNil(t, updZone)
|
||||||
|
|
||||||
|
|
|
@ -109,7 +109,7 @@ func NewDNSProviderConfig(config *Config) (*DNSProvider, error) {
|
||||||
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
err := d.addTXTRecord(fqdn, domain, value, d.config.TTL)
|
err := d.addTXTRecord(fqdn, value, d.config.TTL)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("sakuracloud: %w", err)
|
return fmt.Errorf("sakuracloud: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -121,7 +121,7 @@ func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
||||||
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
err := d.cleanupTXTRecord(fqdn, domain, value)
|
err := d.cleanupTXTRecord(fqdn, value)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("sakuracloud: %w", err)
|
return fmt.Errorf("sakuracloud: %w", err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -121,6 +121,7 @@ func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
Comment: scw.StringPtr("used by lego"),
|
Comment: scw.StringPtr("used by lego"),
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
// TODO(ldez) replace domain by FQDN to follow CNAME.
|
||||||
req := &scwdomain.UpdateDNSZoneRecordsRequest{
|
req := &scwdomain.UpdateDNSZoneRecordsRequest{
|
||||||
DNSZone: domain,
|
DNSZone: domain,
|
||||||
Changes: []*scwdomain.RecordChange{{
|
Changes: []*scwdomain.RecordChange{{
|
||||||
|
@ -147,6 +148,7 @@ func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
||||||
Data: scw.StringPtr(fmt.Sprintf(`%q`, value)),
|
Data: scw.StringPtr(fmt.Sprintf(`%q`, value)),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO(ldez) replace domain by FQDN to follow CNAME.
|
||||||
req := &scwdomain.UpdateDNSZoneRecordsRequest{
|
req := &scwdomain.UpdateDNSZoneRecordsRequest{
|
||||||
DNSZone: domain,
|
DNSZone: domain,
|
||||||
Changes: []*scwdomain.RecordChange{{
|
Changes: []*scwdomain.RecordChange{{
|
||||||
|
|
|
@ -103,6 +103,7 @@ func (d *DNSProvider) Timeout() (timeout, interval time.Duration) {
|
||||||
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
|
// TODO(ldez) replace domain by FQDN to follow CNAME.
|
||||||
domainObj, err := d.client.GetDomainByName(domain)
|
domainObj, err := d.client.GetDomainByName(domain)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("selectel: %w", err)
|
return fmt.Errorf("selectel: %w", err)
|
||||||
|
@ -127,6 +128,7 @@ func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
||||||
fqdn, _ := dns01.GetRecord(domain, keyAuth)
|
fqdn, _ := dns01.GetRecord(domain, keyAuth)
|
||||||
recordName := dns01.UnFqdn(fqdn)
|
recordName := dns01.UnFqdn(fqdn)
|
||||||
|
|
||||||
|
// TODO(ldez) replace domain by FQDN to follow CNAME.
|
||||||
domainObj, err := d.client.GetDomainByName(domain)
|
domainObj, err := d.client.GetDomainByName(domain)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("selectel: %w", err)
|
return fmt.Errorf("selectel: %w", err)
|
||||||
|
|
|
@ -99,7 +99,7 @@ func (d *DNSProvider) Timeout() (timeout, interval time.Duration) {
|
||||||
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
authZone, err := getAuthZone(domain)
|
authZone, err := getAuthZone(fqdn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("servercow: %w", err)
|
return fmt.Errorf("servercow: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -152,7 +152,7 @@ func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
||||||
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
authZone, err := getAuthZone(domain)
|
authZone, err := getAuthZone(fqdn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("servercow: %w", err)
|
return fmt.Errorf("servercow: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -203,7 +203,7 @@ func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func getAuthZone(domain string) (string, error) {
|
func getAuthZone(domain string) (string, error) {
|
||||||
authZone, err := dns01.FindZoneByFqdn(dns01.ToFqdn(domain))
|
authZone, err := dns01.FindZoneByFqdn(domain)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", fmt.Errorf("could not find zone for domain %q: %w", domain, err)
|
return "", fmt.Errorf("could not find zone for domain %q: %w", domain, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -91,8 +91,8 @@ func NewDNSProviderConfig(config *Config) (*DNSProvider, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Present creates a TXT record using the specified parameters.
|
// Present creates a TXT record using the specified parameters.
|
||||||
func (d *DNSProvider) Present(domainName, token, keyAuth string) error {
|
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
fqdn, value := dns01.GetRecord(domainName, keyAuth)
|
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
err := d.client.SetRecord(dns01.UnFqdn(fqdn), value, d.config.TTL)
|
err := d.client.SetRecord(dns01.UnFqdn(fqdn), value, d.config.TTL)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -103,8 +103,8 @@ func (d *DNSProvider) Present(domainName, token, keyAuth string) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// CleanUp removes the TXT records matching the specified parameters.
|
// CleanUp removes the TXT records matching the specified parameters.
|
||||||
func (d *DNSProvider) CleanUp(domainName, token, keyAuth string) error {
|
func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
||||||
fqdn, _ := dns01.GetRecord(domainName, keyAuth)
|
fqdn, _ := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
err := d.client.SetRecord(dns01.UnFqdn(fqdn), "_", d.config.TTL)
|
err := d.client.SetRecord(dns01.UnFqdn(fqdn), "_", d.config.TTL)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -50,8 +50,7 @@ func (e *ErrorResponse) Error() string {
|
||||||
|
|
||||||
// https://developer.stackpath.com/en/api/dns/#operation/GetZones
|
// https://developer.stackpath.com/en/api/dns/#operation/GetZones
|
||||||
func (d *DNSProvider) getZones(domain string) (*Zone, error) {
|
func (d *DNSProvider) getZones(domain string) (*Zone, error) {
|
||||||
domain = dns01.UnFqdn(domain)
|
tld, err := publicsuffix.EffectiveTLDPlusOne(dns01.UnFqdn(domain))
|
||||||
tld, err := publicsuffix.EffectiveTLDPlusOne(domain)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -113,13 +113,13 @@ func getOathClient(config *Config) *http.Client {
|
||||||
|
|
||||||
// Present creates a TXT record to fulfill the dns-01 challenge.
|
// Present creates a TXT record to fulfill the dns-01 challenge.
|
||||||
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
zone, err := d.getZones(domain)
|
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
|
zone, err := d.getZones(fqdn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("stackpath: %w", err)
|
return fmt.Errorf("stackpath: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
|
||||||
|
|
||||||
record := Record{
|
record := Record{
|
||||||
Name: extractRecordName(fqdn, zone.Domain),
|
Name: extractRecordName(fqdn, zone.Domain),
|
||||||
Type: "TXT",
|
Type: "TXT",
|
||||||
|
@ -132,12 +132,13 @@ func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
|
|
||||||
// CleanUp removes the TXT record matching the specified parameters.
|
// CleanUp removes the TXT record matching the specified parameters.
|
||||||
func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
||||||
zone, err := d.getZones(domain)
|
fqdn, _ := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
|
zone, err := d.getZones(fqdn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("stackpath: %w", err)
|
return fmt.Errorf("stackpath: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
fqdn, _ := dns01.GetRecord(domain, keyAuth)
|
|
||||||
recordName := extractRecordName(fqdn, zone.Domain)
|
recordName := extractRecordName(fqdn, zone.Domain)
|
||||||
|
|
||||||
records, err := d.getZoneRecords(recordName, zone)
|
records, err := d.getZoneRecords(recordName, zone)
|
||||||
|
|
|
@ -32,7 +32,7 @@ func (d *DNSProvider) getHostedZone(domain string) (*dnspod.DomainListItem, erro
|
||||||
request.Offset = common.Int64Ptr(int64(len(domains)))
|
request.Offset = common.Int64Ptr(int64(len(domains)))
|
||||||
}
|
}
|
||||||
|
|
||||||
authZone, err := dns01.FindZoneByFqdn(dns01.ToFqdn(domain))
|
authZone, err := dns01.FindZoneByFqdn(domain)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -114,7 +114,7 @@ func (d *DNSProvider) Timeout() (timeout, interval time.Duration) {
|
||||||
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
zone, err := d.getHostedZone(domain)
|
zone, err := d.getHostedZone(fqdn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("tencentcloud: failed to get hosted zone: %w", err)
|
return fmt.Errorf("tencentcloud: failed to get hosted zone: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -145,7 +145,7 @@ func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
||||||
fqdn, _ := dns01.GetRecord(domain, keyAuth)
|
fqdn, _ := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
zone, err := d.getHostedZone(domain)
|
zone, err := d.getHostedZone(fqdn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("tencentcloud: failed to get hosted zone: %w", err)
|
return fmt.Errorf("tencentcloud: failed to get hosted zone: %w", err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -105,7 +105,7 @@ func (d *DNSProvider) Timeout() (timeout, interval time.Duration) {
|
||||||
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
authZone, err := dns01.FindZoneByFqdn(dns01.ToFqdn(domain))
|
authZone, err := dns01.FindZoneByFqdn(fqdn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("vercel: could not determine zone for domain %q: %w", domain, err)
|
return fmt.Errorf("vercel: could not determine zone for domain %q: %w", domain, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -139,6 +139,7 @@ func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
// CleanUp removes the TXT record matching the specified parameters.
|
// CleanUp removes the TXT record matching the specified parameters.
|
||||||
func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
||||||
fqdn, _ := dns01.GetRecord(domain, keyAuth)
|
fqdn, _ := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
authZone, err := dns01.FindZoneByFqdn(fqdn)
|
authZone, err := dns01.FindZoneByFqdn(fqdn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("versio: %w", err)
|
return fmt.Errorf("versio: %w", err)
|
||||||
|
|
|
@ -103,6 +103,7 @@ func (d *DNSProvider) Timeout() (timeout, interval time.Duration) {
|
||||||
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
|
// TODO(ldez) replace domain by FQDN to follow CNAME.
|
||||||
domainObj, err := d.client.GetDomainByName(domain)
|
domainObj, err := d.client.GetDomainByName(domain)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("vscale: %w", err)
|
return fmt.Errorf("vscale: %w", err)
|
||||||
|
@ -127,6 +128,7 @@ func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
||||||
fqdn, _ := dns01.GetRecord(domain, keyAuth)
|
fqdn, _ := dns01.GetRecord(domain, keyAuth)
|
||||||
recordName := dns01.UnFqdn(fqdn)
|
recordName := dns01.UnFqdn(fqdn)
|
||||||
|
|
||||||
|
// TODO(ldez) replace domain by FQDN to follow CNAME.
|
||||||
domainObj, err := d.client.GetDomainByName(domain)
|
domainObj, err := d.client.GetDomainByName(domain)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("vscale: %w", err)
|
return fmt.Errorf("vscale: %w", err)
|
||||||
|
|
|
@ -99,6 +99,7 @@ func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
|
|
||||||
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
|
// TODO(ldez) replace domain by FQDN to follow CNAME.
|
||||||
zoneDomain, err := d.getHostedZone(ctx, domain)
|
zoneDomain, err := d.getHostedZone(ctx, domain)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("vultr: %w", err)
|
return fmt.Errorf("vultr: %w", err)
|
||||||
|
@ -127,6 +128,7 @@ func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
||||||
|
|
||||||
fqdn, _ := dns01.GetRecord(domain, keyAuth)
|
fqdn, _ := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
|
// TODO(ldez) replace domain by FQDN to follow CNAME.
|
||||||
zoneDomain, records, err := d.findTxtRecords(ctx, domain, fqdn)
|
zoneDomain, records, err := d.findTxtRecords(ctx, domain, fqdn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("vultr: %w", err)
|
return fmt.Errorf("vultr: %w", err)
|
||||||
|
|
|
@ -112,7 +112,7 @@ func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
Destination: value,
|
Destination: value,
|
||||||
}
|
}
|
||||||
|
|
||||||
authZone, err := getHostedZone(domain)
|
authZone, err := getHostedZone(fqdn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("zoneee: %w", err)
|
return fmt.Errorf("zoneee: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -126,9 +126,9 @@ func (d *DNSProvider) Present(domain, token, keyAuth string) error {
|
||||||
|
|
||||||
// CleanUp removes the TXT record previously created.
|
// CleanUp removes the TXT record previously created.
|
||||||
func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
||||||
_, value := dns01.GetRecord(domain, keyAuth)
|
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
authZone, err := getHostedZone(domain)
|
authZone, err := getHostedZone(fqdn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("zoneee: %w", err)
|
return fmt.Errorf("zoneee: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -157,11 +157,10 @@ func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func getHostedZone(domain string) (string, error) {
|
func getHostedZone(domain string) (string, error) {
|
||||||
authZone, err := dns01.FindZoneByFqdn(dns01.ToFqdn(domain))
|
authZone, err := dns01.FindZoneByFqdn(domain)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
|
||||||
zoneName := dns01.UnFqdn(authZone)
|
return dns01.UnFqdn(authZone), nil
|
||||||
return zoneName, nil
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue