summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/xenolf/lego/providers
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/xenolf/lego/providers')
-rw-r--r--vendor/github.com/xenolf/lego/providers/dns/dns_providers.go80
-rw-r--r--vendor/github.com/xenolf/lego/providers/dns/dns_providers_test.go50
2 files changed, 130 insertions, 0 deletions
diff --git a/vendor/github.com/xenolf/lego/providers/dns/dns_providers.go b/vendor/github.com/xenolf/lego/providers/dns/dns_providers.go
new file mode 100644
index 000000000..33fca0fad
--- /dev/null
+++ b/vendor/github.com/xenolf/lego/providers/dns/dns_providers.go
@@ -0,0 +1,80 @@
+// Factory for DNS providers
+package dns
+
+import (
+ "fmt"
+
+ "github.com/xenolf/lego/acme"
+ "github.com/xenolf/lego/providers/dns/auroradns"
+ "github.com/xenolf/lego/providers/dns/azure"
+ "github.com/xenolf/lego/providers/dns/cloudflare"
+ "github.com/xenolf/lego/providers/dns/digitalocean"
+ "github.com/xenolf/lego/providers/dns/dnsimple"
+ "github.com/xenolf/lego/providers/dns/dnsmadeeasy"
+ "github.com/xenolf/lego/providers/dns/dnspod"
+ "github.com/xenolf/lego/providers/dns/dyn"
+ "github.com/xenolf/lego/providers/dns/exoscale"
+ "github.com/xenolf/lego/providers/dns/gandi"
+ "github.com/xenolf/lego/providers/dns/googlecloud"
+ "github.com/xenolf/lego/providers/dns/linode"
+ "github.com/xenolf/lego/providers/dns/namecheap"
+ "github.com/xenolf/lego/providers/dns/ns1"
+ "github.com/xenolf/lego/providers/dns/ovh"
+ "github.com/xenolf/lego/providers/dns/pdns"
+ "github.com/xenolf/lego/providers/dns/rackspace"
+ "github.com/xenolf/lego/providers/dns/rfc2136"
+ "github.com/xenolf/lego/providers/dns/route53"
+ "github.com/xenolf/lego/providers/dns/vultr"
+)
+
+func NewDNSChallengeProviderByName(name string) (acme.ChallengeProvider, error) {
+ var err error
+ var provider acme.ChallengeProvider
+ switch name {
+ case "azure":
+ provider, err = azure.NewDNSProvider()
+ case "auroradns":
+ provider, err = auroradns.NewDNSProvider()
+ case "cloudflare":
+ provider, err = cloudflare.NewDNSProvider()
+ case "digitalocean":
+ provider, err = digitalocean.NewDNSProvider()
+ case "dnsimple":
+ provider, err = dnsimple.NewDNSProvider()
+ case "dnsmadeeasy":
+ provider, err = dnsmadeeasy.NewDNSProvider()
+ case "dnspod":
+ provider, err = dnspod.NewDNSProvider()
+ case "dyn":
+ provider, err = dyn.NewDNSProvider()
+ case "exoscale":
+ provider, err = exoscale.NewDNSProvider()
+ case "gandi":
+ provider, err = gandi.NewDNSProvider()
+ case "gcloud":
+ provider, err = googlecloud.NewDNSProvider()
+ case "linode":
+ provider, err = linode.NewDNSProvider()
+ case "manual":
+ provider, err = acme.NewDNSProviderManual()
+ case "namecheap":
+ provider, err = namecheap.NewDNSProvider()
+ case "rackspace":
+ provider, err = rackspace.NewDNSProvider()
+ case "route53":
+ provider, err = route53.NewDNSProvider()
+ case "rfc2136":
+ provider, err = rfc2136.NewDNSProvider()
+ case "vultr":
+ provider, err = vultr.NewDNSProvider()
+ case "ovh":
+ provider, err = ovh.NewDNSProvider()
+ case "pdns":
+ provider, err = pdns.NewDNSProvider()
+ case "ns1":
+ provider, err = ns1.NewDNSProvider()
+ default:
+ err = fmt.Errorf("Unrecognised DNS provider: %s", name)
+ }
+ return provider, err
+}
diff --git a/vendor/github.com/xenolf/lego/providers/dns/dns_providers_test.go b/vendor/github.com/xenolf/lego/providers/dns/dns_providers_test.go
new file mode 100644
index 000000000..3f87ffd33
--- /dev/null
+++ b/vendor/github.com/xenolf/lego/providers/dns/dns_providers_test.go
@@ -0,0 +1,50 @@
+package dns
+
+import (
+ "os"
+ "reflect"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+ "github.com/xenolf/lego/providers/dns/exoscale"
+)
+
+var (
+ apiKey string
+ apiSecret string
+)
+
+func init() {
+ apiSecret = os.Getenv("EXOSCALE_API_SECRET")
+ apiKey = os.Getenv("EXOSCALE_API_KEY")
+}
+
+func restoreExoscaleEnv() {
+ os.Setenv("EXOSCALE_API_KEY", apiKey)
+ os.Setenv("EXOSCALE_API_SECRET", apiSecret)
+}
+
+func TestKnownDNSProviderSuccess(t *testing.T) {
+ os.Setenv("EXOSCALE_API_KEY", "abc")
+ os.Setenv("EXOSCALE_API_SECRET", "123")
+ provider, err := NewDNSChallengeProviderByName("exoscale")
+ assert.NoError(t, err)
+ assert.NotNil(t, provider)
+ if reflect.TypeOf(provider) != reflect.TypeOf(&exoscale.DNSProvider{}) {
+ t.Errorf("Not loaded correct DNS proviver: %v is not *exoscale.DNSProvider", reflect.TypeOf(provider))
+ }
+ restoreExoscaleEnv()
+}
+
+func TestKnownDNSProviderError(t *testing.T) {
+ os.Setenv("EXOSCALE_API_KEY", "")
+ os.Setenv("EXOSCALE_API_SECRET", "")
+ _, err := NewDNSChallengeProviderByName("exoscale")
+ assert.Error(t, err)
+ restoreExoscaleEnv()
+}
+
+func TestUnknownDNSProvider(t *testing.T) {
+ _, err := NewDNSChallengeProviderByName("foobar")
+ assert.Error(t, err)
+}