forked from TrueCloudLab/lego
vultr: invalid record type. (#932)
This commit is contained in:
parent
d594e35ca6
commit
7f6155e865
1 changed files with 13 additions and 9 deletions
|
@ -79,16 +79,18 @@ 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 {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
fqdn, value := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
zoneDomain, err := d.getHostedZone(domain)
|
zoneDomain, err := d.getHostedZone(ctx, domain)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("vultr: %v", err)
|
return fmt.Errorf("vultr: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
name := d.extractRecordName(fqdn, zoneDomain)
|
name := d.extractRecordName(fqdn, zoneDomain)
|
||||||
|
|
||||||
err = d.client.DNSRecord.Create(context.Background(), zoneDomain, name, "TXT", value, d.config.TTL, 0)
|
err = d.client.DNSRecord.Create(ctx, zoneDomain, "TXT", name, value, d.config.TTL, 0)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("vultr: API call failed: %v", err)
|
return fmt.Errorf("vultr: API call failed: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -98,16 +100,18 @@ 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 {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
fqdn, _ := dns01.GetRecord(domain, keyAuth)
|
fqdn, _ := dns01.GetRecord(domain, keyAuth)
|
||||||
|
|
||||||
zoneDomain, records, err := d.findTxtRecords(domain, fqdn)
|
zoneDomain, records, err := d.findTxtRecords(ctx, domain, fqdn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("vultr: %v", err)
|
return fmt.Errorf("vultr: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
var allErr []string
|
var allErr []string
|
||||||
for _, rec := range records {
|
for _, rec := range records {
|
||||||
err := d.client.DNSRecord.Delete(context.Background(), zoneDomain, strconv.Itoa(rec.RecordID))
|
err := d.client.DNSRecord.Delete(ctx, zoneDomain, strconv.Itoa(rec.RecordID))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
allErr = append(allErr, err.Error())
|
allErr = append(allErr, err.Error())
|
||||||
}
|
}
|
||||||
|
@ -126,8 +130,8 @@ func (d *DNSProvider) Timeout() (timeout, interval time.Duration) {
|
||||||
return d.config.PropagationTimeout, d.config.PollingInterval
|
return d.config.PropagationTimeout, d.config.PollingInterval
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *DNSProvider) getHostedZone(domain string) (string, error) {
|
func (d *DNSProvider) getHostedZone(ctx context.Context, domain string) (string, error) {
|
||||||
domains, err := d.client.DNSDomain.List(context.Background())
|
domains, err := d.client.DNSDomain.List(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", fmt.Errorf("API call failed: %v", err)
|
return "", fmt.Errorf("API call failed: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -147,14 +151,14 @@ func (d *DNSProvider) getHostedZone(domain string) (string, error) {
|
||||||
return hostedDomain.Domain, nil
|
return hostedDomain.Domain, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *DNSProvider) findTxtRecords(domain, fqdn string) (string, []govultr.DNSRecord, error) {
|
func (d *DNSProvider) findTxtRecords(ctx context.Context, domain, fqdn string) (string, []govultr.DNSRecord, error) {
|
||||||
zoneDomain, err := d.getHostedZone(domain)
|
zoneDomain, err := d.getHostedZone(ctx, domain)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", nil, err
|
return "", nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
var records []govultr.DNSRecord
|
var records []govultr.DNSRecord
|
||||||
result, err := d.client.DNSRecord.List(context.Background(), zoneDomain)
|
result, err := d.client.DNSRecord.List(ctx, zoneDomain)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", records, fmt.Errorf("API call has failed: %v", err)
|
return "", records, fmt.Errorf("API call has failed: %v", err)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue