You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

55 lines
1.5 KiB

package main
import (
"fmt"
"github.com/go-acme/lego/v4/challenge"
"github.com/go-acme/lego/v4/providers/dns"
)
// NewDNSProvider creates a DNS challenge provider by name.
// The provider will be configured using standard environment variables
// as documented by lego for each provider.
//
// Common providers and their environment variables:
// - cloudflare: CF_API_TOKEN or CF_API_EMAIL + CF_API_KEY
// - route53: AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY + AWS_REGION
// - hetzner: HETZNER_API_KEY
// - digitalocean: DO_AUTH_TOKEN
// - google: GCE_PROJECT + GCE_SERVICE_ACCOUNT_FILE
// - namecheap: NAMECHEAP_API_USER + NAMECHEAP_API_KEY
// - godaddy: GODADDY_API_KEY + GODADDY_API_SECRET
// - ovh: OVH_ENDPOINT + OVH_APPLICATION_KEY + OVH_APPLICATION_SECRET + OVH_CONSUMER_KEY
// - vultr: VULTR_API_KEY
// - linode: LINODE_TOKEN
//
// See https://go-acme.github.io/lego/dns/ for full list and documentation.
func NewDNSProvider(name string) (challenge.Provider, error) {
provider, err := dns.NewDNSChallengeProviderByName(name)
if err != nil {
return nil, fmt.Errorf("failed to create DNS provider '%s': %w", name, err)
}
return provider, nil
}
// SupportedProviders returns a list of commonly used DNS providers.
// This is not exhaustive - lego supports 100+ providers.
func SupportedProviders() []string {
return []string{
"cloudflare",
"route53",
"hetzner",
"digitalocean",
"google",
"namecheap",
"godaddy",
"ovh",
"vultr",
"linode",
"gandi",
"dnsimple",
"duckdns",
"azure",
"alidns",
}
}