summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/xenolf/lego/acme/dns_challenge_manual.go
blob: 240384e60b4b7841e37c04ee56b1ec15ab4b11e9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package acme

import (
	"bufio"
	"fmt"
	"os"
)

const (
	dnsTemplate = "%s %d IN TXT \"%s\""
)

// DNSProviderManual is an implementation of the ChallengeProvider interface
type DNSProviderManual struct{}

// NewDNSProviderManual returns a DNSProviderManual instance.
func NewDNSProviderManual() (*DNSProviderManual, error) {
	return &DNSProviderManual{}, nil
}

// Present prints instructions for manually creating the TXT record
func (*DNSProviderManual) Present(domain, token, keyAuth string) error {
	fqdn, value, ttl := DNS01Record(domain, keyAuth)
	dnsRecord := fmt.Sprintf(dnsTemplate, fqdn, ttl, value)

	authZone, err := FindZoneByFqdn(fqdn, RecursiveNameservers)
	if err != nil {
		return err
	}

	logf("[INFO] acme: Please create the following TXT record in your %s zone:", authZone)
	logf("[INFO] acme: %s", dnsRecord)
	logf("[INFO] acme: Press 'Enter' when you are done")

	reader := bufio.NewReader(os.Stdin)
	_, _ = reader.ReadString('\n')
	return nil
}

// CleanUp prints instructions for manually removing the TXT record
func (*DNSProviderManual) CleanUp(domain, token, keyAuth string) error {
	fqdn, _, ttl := DNS01Record(domain, keyAuth)
	dnsRecord := fmt.Sprintf(dnsTemplate, fqdn, ttl, "...")

	authZone, err := FindZoneByFqdn(fqdn, RecursiveNameservers)
	if err != nil {
		return err
	}

	logf("[INFO] acme: You can now remove this TXT record from your %s zone:", authZone)
	logf("[INFO] acme: %s", dnsRecord)
	return nil
}