Skip to content

Commit

Permalink
Add support for Azure DNS
Browse files Browse the repository at this point in the history
Closes #7
  • Loading branch information
janeczku committed Feb 5, 2017
1 parent cf0b1a1 commit e4df70d
Show file tree
Hide file tree
Showing 51 changed files with 6,797 additions and 0 deletions.
35 changes: 35 additions & 0 deletions Godeps/Godeps.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions context.go
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,11 @@ func (c *Context) InitContext() {

providerOpts := letsencrypt.ProviderOpts{
Provider: letsencrypt.Provider(providerParam),
AzureClientId: getEnvOption("AZURE_CLIENT_ID", false),
AzureClientSecret: getEnvOption("AZURE_CLIENT_SECRET", false),
AzureSubscriptionId: getEnvOption("AZURE_SUBSCRIPTION_ID", false),
AzureTenantId: getEnvOption("AZURE_TENANT_ID", false),
AzureResourceGroup: getEnvOption("AZURE_RESOURCE_GROUP", false),
CloudflareEmail: getEnvOption("CLOUDFLARE_EMAIL", false),
CloudflareKey: getEnvOption("CLOUDFLARE_KEY", false),
DoAccessToken: getEnvOption("DO_ACCESS_TOKEN", false),
Expand Down
36 changes: 36 additions & 0 deletions letsencrypt/providers.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"os"

lego "github.com/xenolf/lego/acme"
"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"
Expand All @@ -20,6 +21,13 @@ import (
type ProviderOpts struct {
Provider Provider

// Azure credentials
AzureClientId string
AzureClientSecret string
AzureSubscriptionId string
AzureTenantId string
AzureResourceGroup string

// CloudFlare credentials
CloudflareEmail string
CloudflareKey string
Expand Down Expand Up @@ -55,6 +63,7 @@ type ProviderOpts struct {
type Provider string

const (
AZURE = Provider("Azure")
CLOUDFLARE = Provider("CloudFlare")
DIGITALOCEAN = Provider("DigitalOcean")
ROUTE53 = Provider("Route53")
Expand All @@ -72,6 +81,7 @@ type ProviderFactory struct {
}

var providerFactory = map[Provider]ProviderFactory{
AZURE: ProviderFactory{makeAzureProvider, lego.DNS01},
CLOUDFLARE: ProviderFactory{makeCloudflareProvider, lego.DNS01},
DIGITALOCEAN: ProviderFactory{makeDigitalOceanProvider, lego.DNS01},
ROUTE53: ProviderFactory{makeRoute53Provider, lego.DNS01},
Expand Down Expand Up @@ -231,3 +241,29 @@ func makeHTTPProvider(opts ProviderOpts) (lego.ChallengeProvider, error) {
provider := lego.NewHTTPProviderServer("", "")
return provider, nil
}

// returns a preconfigured Azure lego.ChallengeProvider
func makeAzureProvider(opts ProviderOpts) (lego.ChallengeProvider, error) {
if len(opts.AzureClientId) == 0 {
return nil, fmt.Errorf("Azure Client ID is not set")
}
if len(opts.AzureClientSecret) == 0 {
return nil, fmt.Errorf("Azure Client Secret is not set")
}
if len(opts.AzureSubscriptionId) == 0 {
return nil, fmt.Errorf("Azure Subscription ID is not set")
}
if len(opts.AzureTenantId) == 0 {
return nil, fmt.Errorf("Azure Tenant ID is not set")
}
if len(opts.AzureResourceGroup) == 0 {
return nil, fmt.Errorf("Azure Resource Group is not set")
}

provider, err := azure.NewDNSProviderCredentials(opts.AzureClientId, opts.AzureClientSecret, opts.AzureSubscriptionId,
opts.AzureTenantId, opts.AzureResourceGroup)
if err != nil {
return nil, err
}
return provider, nil
}
202 changes: 202 additions & 0 deletions vendor/github.com/Azure/azure-sdk-for-go/LICENSE

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

57 changes: 57 additions & 0 deletions vendor/github.com/Azure/azure-sdk-for-go/arm/dns/client.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit e4df70d

Please sign in to comment.