feat: add server shortcodes (#2837)

This commit is contained in:
Ludovic Fernandez 2026-02-12 18:47:14 +01:00 committed by GitHub
commit 2f089d3603
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
176 changed files with 984 additions and 188 deletions

View file

@ -39,16 +39,16 @@ checks:
.PHONY: patch minor major detach
patch:
go run ./internal/releaser/ release -m patch
go run ./internal/generators/releaser/ release -m patch
minor:
go run ./internal/releaser/ release -m minor
go run ./internal/generators/releaser/ release -m minor
major:
go run ./internal/releaser/ release -m major
go run ./internal/generators/releaser/ release -m major
detach:
go run ./internal/releaser/ detach
go run ./internal/generators/releaser/ detach
# Docs
.PHONY: docs-build docs-serve docs-themes

View file

@ -12,6 +12,7 @@ import (
"github.com/go-acme/lego/v5/lego"
"github.com/go-acme/lego/v5/log"
"github.com/go-acme/lego/v5/registration"
"github.com/go-acme/lego/v5/registration/zerossl"
"github.com/urfave/cli/v3"
)
@ -94,6 +95,8 @@ func registerAccount(ctx context.Context, cmd *cli.Command, client *lego.Client)
Kid: kid,
HmacEncoded: hmacEncoded,
})
} else if zerossl.IsZeroSSL(cmd.String(flgServer)) {
return registration.RegisterWithZeroSSL(ctx, client.Registration, cmd.String(flgEmail))
}
return client.Registration.Register(ctx, registration.RegisterOptions{TermsOfServiceAgreed: true})

View file

@ -1,15 +1,19 @@
package cmd
import (
"context"
"fmt"
"log/slog"
"os"
"path/filepath"
"strings"
"time"
"github.com/go-acme/lego/v5/acme"
"github.com/go-acme/lego/v5/certificate"
"github.com/go-acme/lego/v5/cmd/internal/storage"
"github.com/go-acme/lego/v5/lego"
"github.com/go-acme/lego/v5/log"
"github.com/urfave/cli/v3"
"software.sslmate.com/src/go-pkcs12"
)
@ -160,12 +164,23 @@ const (
func createACMEClientFlags() []cli.Flag {
return []cli.Flag{
&cli.StringFlag{
Name: flgServer,
Aliases: []string{"s"},
Sources: cli.EnvVars(envServer),
Usage: "CA hostname (and optionally :port). The server certificate must be trusted in order to avoid further modifications to the client.",
Value: lego.LEDirectoryProduction,
Required: true,
// NOTE(ldez): if Required is true, then the default value is not display in the help.
Name: flgServer,
Aliases: []string{"s"},
Sources: cli.EnvVars(envServer),
Usage: fmt.Sprintf("CA (ACME server). It can be either a URL or a shortcode."+
"\n\t(available shortcodes: %s)", strings.Join(lego.GetAllCodes(), ", ")),
Value: lego.DirectoryURLLetsEncrypt,
Action: func(ctx context.Context, cmd *cli.Command, s string) error {
directoryURL, err := lego.GetDirectoryURL(s)
if err != nil {
log.Debug("Server shortcode not found. Use the value as URL.", slog.String("value", s), log.ErrorAttr(err))
directoryURL = s
}
return cmd.Set(flgServer, directoryURL)
},
},
&cli.BoolFlag{
Category: categoryAdvanced,

View file

@ -39,7 +39,8 @@ OPTIONS:
--email string, -m string Email used for registration and recovery contact. [$LEGO_EMAIL]
--help, -h show help
--key-type string, -k string Key type to use for private keys. Supported: rsa2048, rsa3072, rsa4096, rsa8192, ec256, ec384. (default: "ec256")
--server string, -s string CA hostname (and optionally :port). The server certificate must be trusted in order to avoid further modifications to the client. [$LEGO_SERVER]
--server string, -s string CA (ACME server). It can be either a URL or a shortcode.
(available shortcodes: actalis, digicert, freessl, globalsign, googletrust, googletrust-staging, letsencrypt, letsencrypt-staging, litessl, peeringhub, sslcomecc, sslcomrsa, sectigo, sectigoev, sectigoov, zerossl) (default: "https://acme-v02.api.letsencrypt.org/directory") [$LEGO_SERVER]
Flags related to External Account Binding:
@ -127,7 +128,8 @@ OPTIONS:
--email string, -m string Email used for registration and recovery contact. [$LEGO_EMAIL]
--help, -h show help
--key-type string, -k string Key type to use for private keys. Supported: rsa2048, rsa3072, rsa4096, rsa8192, ec256, ec384. (default: "ec256")
--server string, -s string CA hostname (and optionally :port). The server certificate must be trusted in order to avoid further modifications to the client. [$LEGO_SERVER]
--server string, -s string CA (ACME server). It can be either a URL or a shortcode.
(available shortcodes: actalis, digicert, freessl, globalsign, googletrust, googletrust-staging, letsencrypt, letsencrypt-staging, litessl, peeringhub, sslcomecc, sslcomrsa, sectigo, sectigoev, sectigoov, zerossl) (default: "https://acme-v02.api.letsencrypt.org/directory") [$LEGO_SERVER]
Flags related to ACME Renewal Information (ARI) Extension:
@ -222,7 +224,8 @@ OPTIONS:
--keep, -k Keep the certificates after the revocation instead of archiving them.
--key-type string, -k string Key type to use for private keys. Supported: rsa2048, rsa3072, rsa4096, rsa8192, ec256, ec384. (default: "ec256")
--reason uint Identifies the reason for the certificate revocation. See https://www.rfc-editor.org/rfc/rfc5280.html#section-5.3.1. Valid values are: 0 (unspecified), 1 (keyCompromise), 2 (cACompromise), 3 (affiliationChanged), 4 (superseded), 5 (cessationOfOperation), 6 (certificateHold), 8 (removeFromCRL), 9 (privilegeWithdrawn), or 10 (aACompromise). (default: 0)
--server string, -s string CA hostname (and optionally :port). The server certificate must be trusted in order to avoid further modifications to the client. [$LEGO_SERVER]
--server string, -s string CA (ACME server). It can be either a URL or a shortcode.
(available shortcodes: actalis, digicert, freessl, globalsign, googletrust, googletrust-staging, letsencrypt, letsencrypt-staging, litessl, peeringhub, sslcomecc, sslcomrsa, sectigo, sectigoev, sectigoov, zerossl) (default: "https://acme-v02.api.letsencrypt.org/directory") [$LEGO_SERVER]
Flags related to External Account Binding:

View file

@ -0,0 +1,42 @@
// Code generated by 'make generate-dns'; DO NOT EDIT.
package lego
import (
"fmt"
"strings"
)
const (
{{- range . }}
// Code{{ ToVarName .Code }} is the CA code for {{ .Name }}.
// {{ .DocumentationURL }}
Code{{ ToVarName .Code }} = "{{ ToLower .Code }}"
{{ end }})
const (
{{- range . }}
// DirectoryURL{{ ToVarName .Code }} is the directory URL for {{ .Name }}.
// {{ .DocumentationURL }}
DirectoryURL{{ ToVarName .Code }} = "{{ .DirectoryURL }}"
{{ end }})
// GetDirectoryURL returns the directory URL for the given CA code.
func GetDirectoryURL(code string) (string, error) {
switch strings.ToLower(code) {
{{- range . }}
case Code{{ ToVarName .Code }}:
return DirectoryURL{{ ToVarName .Code }}, nil
{{ end }}
default:
return "", fmt.Errorf("unknown ACME server code: %q", code)
}
}
func GetAllCodes() []string {
return []string{
{{- range . }}
Code{{ ToVarName .Code }},
{{- end }}
}
}

View file

@ -0,0 +1,114 @@
[
{
"name": "Actalis",
"type": "production",
"code": "Actalis",
"directoryURL": "https://acme-api.actalis.com/acme/directory",
"documentationURL": "https://guide.actalis.com/ssl/activation/acme"
},
{
"name": "Digicert",
"type": "production",
"code": "Digicert",
"directoryURL": "https://one.digicert.com/mpki/api/v1/acme/v2/directory",
"documentationURL": "https://docs.digicert.com/en/trust-lifecycle-manager/automate-management-of-certificates/acme-automation-service/third-party-acme-integration/install-and-configure-third-party-acme-clients.html"
},
{
"name": "FreeSSL",
"type": "production",
"code": "FreeSSL",
"directoryURL": "https://acmepro.freessl.cn/v2/DV",
"documentationURL": "https://freessl.cn/"
},
{
"name": "GlobalSign",
"type": "production",
"code": "GlobalSign",
"directoryURL": "https://emea.acme.atlas.globalsign.com/directory",
"documentationURL": "https://docs.globalsign.com/solutions/services/acme/issuing-certificates-http-validation"
},
{
"name": "Google Trust",
"type": "production",
"code": "GoogleTrust",
"directoryURL": "https://dv.acme-v02.api.pki.goog/directory",
"documentationURL": "https://docs.cloud.google.com/certificate-manager/docs/public-ca-tutorial#register-acme"
},
{
"name": "Google Trust staging",
"type": "staging",
"code": "GoogleTrust-Staging",
"directoryURL": " https://dv.acme-v02.test-api.pki.goog/directory",
"documentationURL": "https://docs.cloud.google.com/certificate-manager/docs/public-ca-tutorial#register-acme"
},
{
"name": "Let's Encrypt",
"type": "production",
"code": "LetsEncrypt",
"directoryURL": "https://acme-v02.api.letsencrypt.org/directory",
"documentationURL": "https://letsencrypt.org/docs/"
},
{
"name": "Let's Encrypt staging",
"type": "staging",
"code": "LetsEncrypt-Staging",
"directoryURL": "https://acme-staging-v02.api.letsencrypt.org/directory",
"documentationURL": "https://letsencrypt.org/docs/staging-environment/"
},
{
"name": "LiteSSL",
"type": "production",
"code": "LiteSSL",
"directoryURL": "https://acme.litessl.com/acme/v2/directory",
"documentationURL": "https://litessl.cn/"
},
{
"name": "PeeringHub",
"type": "production",
"code": "PeeringHub",
"directoryURL": "https://stica.peeringhub.io/acme",
"documentationURL": "https://doc.peeringhub.io/guides/generating-certificate/acme-protocol-reference/list-server-directory"
},
{
"name": "SSL.com ECDSA",
"type": "production",
"code": "SSLComECC",
"directoryURL": "https://acme.ssl.com/sslcom-dv-ecc",
"documentationURL": "https://www.ssl.com/guide/ssl-tls-certificate-issuance-and-revocation-with-acme/"
},
{
"name": "SSL.com RSA",
"type": "production",
"code": "SSLComRSA",
"directoryURL": "https://acme.ssl.com/sslcom-dv-rsa",
"documentationURL": "https://www.ssl.com/guide/ssl-tls-certificate-issuance-and-revocation-with-acme/"
},
{
"name": "Sectigo DV (Domain Validation)",
"type": "production",
"code": "Sectigo",
"directoryURL": "https://acme.sectigo.com/v2/DV",
"documentationURL": "https://docs.sectigo.com/caas/caas-api-guide/create-acme-accounts"
},
{
"name": "Sectigo EV (Extended Validation)",
"type": "production",
"code": "SectigoEV",
"directoryURL": "https://acme.sectigo.com/v2/EV",
"documentationURL": "https://docs.sectigo.com/"
},
{
"name": "Sectigo OV (Organization Validation) ",
"type": "production",
"code": "SectigoOV",
"directoryURL": "https://acme.sectigo.com/v2/OV",
"documentationURL": "https://docs.sectigo.com/caas/caas-api-guide/getting-started-ov"
},
{
"name": "ZeroSSL",
"type": "production",
"code": "ZeroSSL",
"directoryURL": "https://acme.zerossl.com/v2/DV90",
"documentationURL": "https://zerossl.com/documentation/acme/"
}
]

View file

@ -0,0 +1,100 @@
package main
//go:generate go run .
import (
"bytes"
_ "embed"
"encoding/json"
"go/format"
"log"
"os"
"path/filepath"
"slices"
"strings"
"text/template"
"unicode"
)
const (
root = "../../../"
inputPath = "cas.json"
outputPath = "lego/zz_gen_ca.go"
)
//go:embed ca.go.tmpl
var srcTemplate string
type Entry struct {
Name string `json:"name"`
Type string `json:"type"`
Code string `json:"code"`
DirectoryURL string `json:"directoryURL"`
DocumentationURL string `json:"documentationURL"`
}
func main() {
err := generate()
if err != nil {
log.Fatal(err)
}
}
func generate() error {
output, err := os.Create(filepath.Join(root, outputPath))
if err != nil {
return err
}
defer func() { _ = output.Close() }()
input, err := os.Open(inputPath)
if err != nil {
return err
}
defer func() { _ = input.Close() }()
var entries []Entry
slices.SortFunc(entries, func(a, b Entry) int {
return strings.Compare(a.Code, b.Code)
})
err = json.NewDecoder(input).Decode(&entries)
if err != nil {
return err
}
b := &bytes.Buffer{}
err = template.Must(
template.New("ca").Funcs(map[string]any{
"ToLower": strings.ToLower,
"ToVarName": toVarName,
}).Parse(srcTemplate),
).Execute(b, entries)
if err != nil {
return err
}
// gofmt
source, err := format.Source(b.Bytes())
if err != nil {
return err
}
_, err = output.Write(source)
if err != nil {
return err
}
return nil
}
func toVarName(s string) string {
return strings.Join(strings.FieldsFunc(s, func(r rune) bool {
return !unicode.IsLetter(r) && !unicode.IsDigit(r)
}), "")
}

View file

@ -15,7 +15,7 @@ import (
"github.com/urfave/cli/v3"
)
const outputFile = "../../docs/data/zz_cli_help.toml"
const outputFile = "../../../docs/data/zz_cli_help.toml"
const baseTemplate = `# THIS FILE IS AUTO-GENERATED. PLEASE DO NOT EDIT.

View file

@ -17,14 +17,14 @@ import (
"strings"
"text/template"
"github.com/go-acme/lego/v5/internal/dns/descriptors"
"github.com/go-acme/lego/v5/internal/generators/dns/descriptors"
)
//go:embed templates
var templateFS embed.FS
const (
root = "../../../"
root = "../../../../"
cliOutput = root + "cmd/zz_gen_cmd_dnshelp.go"
docOutput = root + "docs/content/dns"

View file

@ -13,11 +13,11 @@ import (
"strings"
"text/template"
"github.com/go-acme/lego/v5/internal/dns/descriptors"
"github.com/go-acme/lego/v5/internal/generators/dns/descriptors"
)
const (
root = "../../../"
root = "../../../../"
outputPath = "providers/dns/zz_gen_dns_providers.go"
)

View file

@ -12,7 +12,7 @@ import (
const (
dnsTemplate = "templates/dns.go.tmpl"
dnsTargetFile = "./providers/dns/internal/useragent/useragent.go"
dnsTargetFile = "./internal/useragent/useragent.go"
)
const (

View file

@ -32,12 +32,6 @@ const (
// authenticate an ACME server with an HTTPS certificate not issued by a CA in
// the system-wide trusted root list.
caServerNameEnvVar = "LEGO_CA_SERVER_NAME"
// LEDirectoryProduction URL to the Let's Encrypt production.
LEDirectoryProduction = "https://acme-v02.api.letsencrypt.org/directory"
// LEDirectoryStaging URL to the Let's Encrypt staging.
LEDirectoryStaging = "https://acme-staging-v02.api.letsencrypt.org/directory"
)
type Config struct {
@ -50,7 +44,7 @@ type Config struct {
func NewConfig(user registration.User) *Config {
return &Config{
CADirURL: LEDirectoryProduction,
CADirURL: DirectoryURLLetsEncrypt,
User: user,
HTTPClient: createDefaultHTTPClient(),
Certificate: CertificateConfig{

217
lego/zz_gen_ca.go generated Normal file
View file

@ -0,0 +1,217 @@
// Code generated by 'make generate-dns'; DO NOT EDIT.
package lego
import (
"fmt"
"strings"
)
const (
// CodeActalis is the CA code for Actalis.
// https://guide.actalis.com/ssl/activation/acme
CodeActalis = "actalis"
// CodeDigicert is the CA code for Digicert.
// https://docs.digicert.com/en/trust-lifecycle-manager/automate-management-of-certificates/acme-automation-service/third-party-acme-integration/install-and-configure-third-party-acme-clients.html
CodeDigicert = "digicert"
// CodeFreeSSL is the CA code for FreeSSL.
// https://freessl.cn/
CodeFreeSSL = "freessl"
// CodeGlobalSign is the CA code for GlobalSign.
// https://docs.globalsign.com/solutions/services/acme/issuing-certificates-http-validation
CodeGlobalSign = "globalsign"
// CodeGoogleTrust is the CA code for Google Trust.
// https://docs.cloud.google.com/certificate-manager/docs/public-ca-tutorial#register-acme
CodeGoogleTrust = "googletrust"
// CodeGoogleTrustStaging is the CA code for Google Trust staging.
// https://docs.cloud.google.com/certificate-manager/docs/public-ca-tutorial#register-acme
CodeGoogleTrustStaging = "googletrust-staging"
// CodeLetsEncrypt is the CA code for Let's Encrypt.
// https://letsencrypt.org/docs/
CodeLetsEncrypt = "letsencrypt"
// CodeLetsEncryptStaging is the CA code for Let's Encrypt staging.
// https://letsencrypt.org/docs/staging-environment/
CodeLetsEncryptStaging = "letsencrypt-staging"
// CodeLiteSSL is the CA code for LiteSSL.
// https://litessl.cn/
CodeLiteSSL = "litessl"
// CodePeeringHub is the CA code for PeeringHub.
// https://doc.peeringhub.io/guides/generating-certificate/acme-protocol-reference/list-server-directory
CodePeeringHub = "peeringhub"
// CodeSSLComECC is the CA code for SSL.com ECDSA.
// https://www.ssl.com/guide/ssl-tls-certificate-issuance-and-revocation-with-acme/
CodeSSLComECC = "sslcomecc"
// CodeSSLComRSA is the CA code for SSL.com RSA.
// https://www.ssl.com/guide/ssl-tls-certificate-issuance-and-revocation-with-acme/
CodeSSLComRSA = "sslcomrsa"
// CodeSectigo is the CA code for Sectigo DV (Domain Validation).
// https://docs.sectigo.com/caas/caas-api-guide/create-acme-accounts
CodeSectigo = "sectigo"
// CodeSectigoEV is the CA code for Sectigo EV (Extended Validation).
// https://docs.sectigo.com/
CodeSectigoEV = "sectigoev"
// CodeSectigoOV is the CA code for Sectigo OV (Organization Validation) .
// https://docs.sectigo.com/caas/caas-api-guide/getting-started-ov
CodeSectigoOV = "sectigoov"
// CodeZeroSSL is the CA code for ZeroSSL.
// https://zerossl.com/documentation/acme/
CodeZeroSSL = "zerossl"
)
const (
// DirectoryURLActalis is the directory URL for Actalis.
// https://guide.actalis.com/ssl/activation/acme
DirectoryURLActalis = "https://acme-api.actalis.com/acme/directory"
// DirectoryURLDigicert is the directory URL for Digicert.
// https://docs.digicert.com/en/trust-lifecycle-manager/automate-management-of-certificates/acme-automation-service/third-party-acme-integration/install-and-configure-third-party-acme-clients.html
DirectoryURLDigicert = "https://one.digicert.com/mpki/api/v1/acme/v2/directory"
// DirectoryURLFreeSSL is the directory URL for FreeSSL.
// https://freessl.cn/
DirectoryURLFreeSSL = "https://acmepro.freessl.cn/v2/DV"
// DirectoryURLGlobalSign is the directory URL for GlobalSign.
// https://docs.globalsign.com/solutions/services/acme/issuing-certificates-http-validation
DirectoryURLGlobalSign = "https://emea.acme.atlas.globalsign.com/directory"
// DirectoryURLGoogleTrust is the directory URL for Google Trust.
// https://docs.cloud.google.com/certificate-manager/docs/public-ca-tutorial#register-acme
DirectoryURLGoogleTrust = "https://dv.acme-v02.api.pki.goog/directory"
// DirectoryURLGoogleTrustStaging is the directory URL for Google Trust staging.
// https://docs.cloud.google.com/certificate-manager/docs/public-ca-tutorial#register-acme
DirectoryURLGoogleTrustStaging = " https://dv.acme-v02.test-api.pki.goog/directory"
// DirectoryURLLetsEncrypt is the directory URL for Let's Encrypt.
// https://letsencrypt.org/docs/
DirectoryURLLetsEncrypt = "https://acme-v02.api.letsencrypt.org/directory"
// DirectoryURLLetsEncryptStaging is the directory URL for Let's Encrypt staging.
// https://letsencrypt.org/docs/staging-environment/
DirectoryURLLetsEncryptStaging = "https://acme-staging-v02.api.letsencrypt.org/directory"
// DirectoryURLLiteSSL is the directory URL for LiteSSL.
// https://litessl.cn/
DirectoryURLLiteSSL = "https://acme.litessl.com/acme/v2/directory"
// DirectoryURLPeeringHub is the directory URL for PeeringHub.
// https://doc.peeringhub.io/guides/generating-certificate/acme-protocol-reference/list-server-directory
DirectoryURLPeeringHub = "https://stica.peeringhub.io/acme"
// DirectoryURLSSLComECC is the directory URL for SSL.com ECDSA.
// https://www.ssl.com/guide/ssl-tls-certificate-issuance-and-revocation-with-acme/
DirectoryURLSSLComECC = "https://acme.ssl.com/sslcom-dv-ecc"
// DirectoryURLSSLComRSA is the directory URL for SSL.com RSA.
// https://www.ssl.com/guide/ssl-tls-certificate-issuance-and-revocation-with-acme/
DirectoryURLSSLComRSA = "https://acme.ssl.com/sslcom-dv-rsa"
// DirectoryURLSectigo is the directory URL for Sectigo DV (Domain Validation).
// https://docs.sectigo.com/caas/caas-api-guide/create-acme-accounts
DirectoryURLSectigo = "https://acme.sectigo.com/v2/DV"
// DirectoryURLSectigoEV is the directory URL for Sectigo EV (Extended Validation).
// https://docs.sectigo.com/
DirectoryURLSectigoEV = "https://acme.sectigo.com/v2/EV"
// DirectoryURLSectigoOV is the directory URL for Sectigo OV (Organization Validation) .
// https://docs.sectigo.com/caas/caas-api-guide/getting-started-ov
DirectoryURLSectigoOV = "https://acme.sectigo.com/v2/OV"
// DirectoryURLZeroSSL is the directory URL for ZeroSSL.
// https://zerossl.com/documentation/acme/
DirectoryURLZeroSSL = "https://acme.zerossl.com/v2/DV90"
)
// GetDirectoryURL returns the directory URL for the given CA code.
func GetDirectoryURL(code string) (string, error) {
switch strings.ToLower(code) {
case CodeActalis:
return DirectoryURLActalis, nil
case CodeDigicert:
return DirectoryURLDigicert, nil
case CodeFreeSSL:
return DirectoryURLFreeSSL, nil
case CodeGlobalSign:
return DirectoryURLGlobalSign, nil
case CodeGoogleTrust:
return DirectoryURLGoogleTrust, nil
case CodeGoogleTrustStaging:
return DirectoryURLGoogleTrustStaging, nil
case CodeLetsEncrypt:
return DirectoryURLLetsEncrypt, nil
case CodeLetsEncryptStaging:
return DirectoryURLLetsEncryptStaging, nil
case CodeLiteSSL:
return DirectoryURLLiteSSL, nil
case CodePeeringHub:
return DirectoryURLPeeringHub, nil
case CodeSSLComECC:
return DirectoryURLSSLComECC, nil
case CodeSSLComRSA:
return DirectoryURLSSLComRSA, nil
case CodeSectigo:
return DirectoryURLSectigo, nil
case CodeSectigoEV:
return DirectoryURLSectigoEV, nil
case CodeSectigoOV:
return DirectoryURLSectigoOV, nil
case CodeZeroSSL:
return DirectoryURLZeroSSL, nil
default:
return "", fmt.Errorf("unknown ACME server code: %q", code)
}
}
func GetAllCodes() []string {
return []string{
CodeActalis,
CodeDigicert,
CodeFreeSSL,
CodeGlobalSign,
CodeGoogleTrust,
CodeGoogleTrustStaging,
CodeLetsEncrypt,
CodeLetsEncryptStaging,
CodeLiteSSL,
CodePeeringHub,
CodeSSLComECC,
CodeSSLComRSA,
CodeSectigo,
CodeSectigoEV,
CodeSectigoOV,
CodeZeroSSL,
}
}

View file

@ -11,7 +11,7 @@ import (
"net/url"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
"github.com/nrdcg/goacmedns"
"github.com/nrdcg/goacmedns/storage"
)

View file

@ -11,7 +11,7 @@ import (
"sync"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
"github.com/go-viper/mapstructure/v2"
)

View file

@ -9,7 +9,7 @@ import (
"strings"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
)
// authEndpoint represents the Identity API endpoint to call.

View file

@ -12,8 +12,8 @@ import (
"strconv"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/providers/dns/internal/useragent"
"github.com/go-acme/lego/v5/internal/errutils"
"github.com/go-acme/lego/v5/internal/useragent"
)
const defaultBaseURL = "https://api.alwaysdata.com/v1"

View file

@ -11,8 +11,8 @@ import (
"net/url"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/providers/dns/internal/useragent"
"github.com/go-acme/lego/v5/internal/errutils"
"github.com/go-acme/lego/v5/internal/useragent"
)
const defaultBaseURL = "https://engine.anexia-it.com"

View file

@ -11,7 +11,7 @@ import (
"strings"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
)
// defaultBaseURL represents the API endpoint to call.

View file

@ -11,7 +11,7 @@ import (
"strconv"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
)
// DefaultEndpoint default API endpoint.

View file

@ -9,7 +9,7 @@ import (
"net/url"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
querystring "github.com/google/go-querystring/query"
)

View file

@ -16,8 +16,8 @@ import (
aazure "github.com/Azure/go-autorest/autorest/azure"
"github.com/Azure/go-autorest/autorest/azure/auth"
"github.com/go-acme/lego/v5/challenge"
"github.com/go-acme/lego/v5/internal/errutils"
"github.com/go-acme/lego/v5/platform/config/env"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
)
// Environment variables names.

View file

@ -9,7 +9,7 @@ import (
"net/url"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
)
const defaultBaseURL = "https://api.beget.com/api/"

View file

@ -12,7 +12,7 @@ import (
"strconv"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
)
const defaultBaseURL = "https://api.binarylane.com.au/v2/"

View file

@ -13,7 +13,7 @@ import (
"strings"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
)
// Object types.

View file

@ -7,7 +7,7 @@ import (
"net/http"
"strings"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
)
type token string

View file

@ -11,7 +11,7 @@ import (
"strings"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
querystring "github.com/google/go-querystring/query"
)

View file

@ -15,7 +15,7 @@ import (
"strings"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
)
const defaultBaseURL = "https://portal.brandit.com/api/v3/"

View file

@ -11,10 +11,10 @@ import (
"github.com/go-acme/lego/v5/challenge"
"github.com/go-acme/lego/v5/challenge/dns01"
"github.com/go-acme/lego/v5/internal/useragent"
"github.com/go-acme/lego/v5/platform/config/env"
"github.com/go-acme/lego/v5/providers/dns/internal/clientdebug"
"github.com/go-acme/lego/v5/providers/dns/internal/ptr"
"github.com/go-acme/lego/v5/providers/dns/internal/useragent"
"github.com/nrdcg/bunny-go"
"golang.org/x/net/publicsuffix"
)

View file

@ -14,7 +14,7 @@ import (
"sync"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
"golang.org/x/oauth2"
)

View file

@ -19,8 +19,8 @@ import (
"net/url"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/providers/dns/internal/useragent"
"github.com/go-acme/lego/v5/internal/errutils"
"github.com/go-acme/lego/v5/internal/useragent"
"golang.org/x/oauth2"
)

View file

@ -10,7 +10,7 @@ import (
"net/url"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
)
const apiBaseURL = "https://admin.vshosting.cloud/clouddns"

View file

@ -17,9 +17,9 @@ import (
"net/url"
"time"
"github.com/go-acme/lego/v5/internal/errutils"
"github.com/go-acme/lego/v5/internal/useragent"
"github.com/go-acme/lego/v5/providers/dns/internal/clientdebug"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/providers/dns/internal/useragent"
)
const defaultBaseURL = "https://api.cloudflare.com/client/v4"

View file

@ -12,7 +12,7 @@ import (
"time"
"github.com/go-acme/lego/v5/challenge/dns01"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
)
const defaultBaseURL = "https://api.cloudns.net/dns/"

View file

@ -12,7 +12,7 @@ import (
"sync"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
)
// Default API endpoints.

View file

@ -10,7 +10,7 @@ import (
"strings"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
)
type token string

View file

@ -11,7 +11,7 @@ import (
"net/url"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
)
const dnsServiceBaseURL = "https://dns-service.%s.conoha.io"

View file

@ -9,7 +9,7 @@ import (
"net/url"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
)
const identityBaseURL = "https://identity.%s.conoha.io"

View file

@ -11,7 +11,7 @@ import (
"net/url"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
)
const dnsServiceBaseURL = "https://dns-service.%s.conoha.io"

View file

@ -11,7 +11,7 @@ import (
"net/url"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
)
const identityBaseURL = "https://identity.%s.conoha.io"

View file

@ -8,7 +8,7 @@ import (
"net/url"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
)
const (

View file

@ -10,7 +10,7 @@ import (
"net/url"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
)
const defaultBaseURL = "https://beta.api.core-networks.de"

View file

@ -10,8 +10,8 @@ import (
"strconv"
"time"
"github.com/go-acme/lego/v5/internal/errutils"
"github.com/go-acme/lego/v5/providers/dns/cpanel/internal/shared"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
)
const statusFailed = 0

View file

@ -10,8 +10,8 @@ import (
"strconv"
"time"
"github.com/go-acme/lego/v5/internal/errutils"
"github.com/go-acme/lego/v5/providers/dns/cpanel/internal/shared"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
)
const statusFailed = 0

View file

@ -10,8 +10,8 @@ import (
"strings"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/providers/dns/internal/useragent"
"github.com/go-acme/lego/v5/internal/errutils"
"github.com/go-acme/lego/v5/internal/useragent"
"golang.org/x/net/html"
)

View file

@ -10,7 +10,7 @@ import (
"net/url"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
querystring "github.com/google/go-querystring/query"
)

View file

@ -12,7 +12,7 @@ import (
"time"
"github.com/go-acme/lego/v5/challenge/dns01"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
"golang.org/x/oauth2"
)

View file

@ -10,7 +10,7 @@ import (
"strings"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
querystring "github.com/google/go-querystring/query"
)

View file

@ -11,8 +11,8 @@ import (
"net/url"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/providers/dns/internal/useragent"
"github.com/go-acme/lego/v5/internal/errutils"
"github.com/go-acme/lego/v5/internal/useragent"
)
const defaultBaseURL = "https://api.dnsexit.com/dns/"

View file

@ -11,7 +11,7 @@ import (
"sync"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
)
const (

View file

@ -11,9 +11,9 @@ import (
"github.com/dnsimple/dnsimple-go/v4/dnsimple"
"github.com/go-acme/lego/v5/challenge"
"github.com/go-acme/lego/v5/challenge/dns01"
"github.com/go-acme/lego/v5/internal/useragent"
"github.com/go-acme/lego/v5/platform/config/env"
"github.com/go-acme/lego/v5/providers/dns/internal/clientdebug"
"github.com/go-acme/lego/v5/providers/dns/internal/useragent"
"golang.org/x/oauth2"
)

View file

@ -16,7 +16,7 @@ import (
"time"
"github.com/go-acme/lego/v5/challenge/dns01"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
)
// Default API endpoints.

View file

@ -10,7 +10,7 @@ import (
"time"
"github.com/go-acme/lego/v5/challenge/dns01"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
)
const defaultBaseURL = "https://my.do.de/api"

View file

@ -11,7 +11,7 @@ import (
"strconv"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
)
const defaultBaseURL string = "https://api.domeneshop.no/v0"

View file

@ -9,7 +9,7 @@ import (
"net/url"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
)
// DefaultBaseURL the default API endpoint.

View file

@ -11,7 +11,7 @@ import (
"time"
"github.com/go-acme/lego/v5/challenge/dns01"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
"github.com/miekg/dns"
)

View file

@ -12,7 +12,7 @@ import (
"strconv"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
)
const defaultBaseURL = "https://api.dynect.net/REST"

View file

@ -5,7 +5,7 @@ import (
"encoding/json"
"net/http"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
)
type token string

View file

@ -9,7 +9,7 @@ import (
"net/url"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
)
const defaultBaseURL = "https://dynup.de/acme.php"

View file

@ -13,9 +13,9 @@ import (
"time"
"github.com/cenkalti/backoff/v5"
"github.com/go-acme/lego/v5/internal/errutils"
"github.com/go-acme/lego/v5/log"
"github.com/go-acme/lego/v5/platform/wait"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
)
const defaultBaseURL = "https://api.dynu.com/v2"

View file

@ -10,7 +10,7 @@ import (
"net/url"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
)
// DefaultBaseURL the default API endpoint.

View file

@ -10,7 +10,7 @@ import (
"net/url"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
querystring "github.com/google/go-querystring/query"
)

View file

@ -10,8 +10,8 @@ import (
"net/url"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/providers/dns/internal/useragent"
"github.com/go-acme/lego/v5/internal/errutils"
"github.com/go-acme/lego/v5/internal/useragent"
)
const defaultBaseURL = "https://usersapiv2.epik.com/v2"

View file

@ -13,9 +13,9 @@ import (
"github.com/exoscale/egoscale/v3/credentials"
"github.com/go-acme/lego/v5/challenge"
"github.com/go-acme/lego/v5/challenge/dns01"
"github.com/go-acme/lego/v5/internal/useragent"
"github.com/go-acme/lego/v5/platform/config/env"
"github.com/go-acme/lego/v5/providers/dns/internal/clientdebug"
"github.com/go-acme/lego/v5/providers/dns/internal/useragent"
)
// Environment variables names.

View file

@ -11,7 +11,7 @@ import (
"net/url"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
)
const defaultServer = "console.ves.volterra.io"

View file

@ -10,7 +10,7 @@ import (
"net/http"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
)
// defaultBaseURL Gandi XML-RPC endpoint used by Present and CleanUp.

View file

@ -10,7 +10,7 @@ import (
"net/url"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
)
// defaultBaseURL endpoint is the Gandi API endpoint used by Present and CleanUp.

View file

@ -10,8 +10,8 @@ import (
"net/url"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/providers/dns/internal/useragent"
"github.com/go-acme/lego/v5/internal/errutils"
"github.com/go-acme/lego/v5/internal/useragent"
)
const defaultBaseURL = "https://api.gigahost.no/api/v0"

View file

@ -11,8 +11,8 @@ import (
"strconv"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/providers/dns/internal/useragent"
"github.com/go-acme/lego/v5/internal/errutils"
"github.com/go-acme/lego/v5/internal/useragent"
"github.com/pquerna/otp/totp"
)

View file

@ -10,7 +10,7 @@ import (
"net/url"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
)
// defaultBaseURL is the GleSYS API endpoint used by Present and CleanUp.

View file

@ -10,7 +10,7 @@ import (
"net/url"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
)
// DefaultBaseURL represents the API endpoint to call.

View file

@ -12,8 +12,8 @@ import (
"net/url"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/providers/dns/internal/useragent"
"github.com/go-acme/lego/v5/internal/errutils"
"github.com/go-acme/lego/v5/internal/useragent"
"golang.org/x/net/publicsuffix"
)

View file

@ -11,7 +11,7 @@ import (
"strconv"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
"golang.org/x/oauth2"
)

View file

@ -10,7 +10,7 @@ import (
"net/url"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
)
// defaultBaseURL represents the API endpoint to call.

View file

@ -11,7 +11,7 @@ import (
"net/url"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
)
const defaultBaseURL = "https://developers.hostinger.com"

View file

@ -10,8 +10,8 @@ import (
"net/url"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/providers/dns/internal/useragent"
"github.com/go-acme/lego/v5/internal/errutils"
"github.com/go-acme/lego/v5/internal/useragent"
)
const defaultBaseURL = "https://api.hosting.nl"

View file

@ -11,7 +11,7 @@ import (
"strconv"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
"golang.org/x/oauth2"
)

View file

@ -13,9 +13,9 @@ import (
"github.com/go-acme/lego/v5/challenge"
"github.com/go-acme/lego/v5/challenge/dns01"
"github.com/go-acme/lego/v5/internal/errutils"
"github.com/go-acme/lego/v5/platform/config/env"
"github.com/go-acme/lego/v5/providers/dns/internal/clientdebug"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
)
// Environment variables names.

View file

@ -12,8 +12,8 @@ import (
"sync"
"time"
"github.com/go-acme/lego/v5/internal/errutils"
"github.com/go-acme/lego/v5/log"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"golang.org/x/time/rate"
)

View file

@ -11,7 +11,7 @@ import (
"net/url"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
)
const defaultBaseURL = "https://api.hyperone.com/v2"

View file

@ -11,8 +11,8 @@ import (
"github.com/go-acme/lego/v5/challenge"
"github.com/go-acme/lego/v5/challenge/dns01"
"github.com/go-acme/lego/v5/internal/useragent"
"github.com/go-acme/lego/v5/platform/config/env"
"github.com/go-acme/lego/v5/providers/dns/internal/useragent"
infoblox "github.com/infobloxopen/infoblox-go-client/v2"
)

View file

@ -12,7 +12,7 @@ import (
"time"
"github.com/go-acme/lego/v5/challenge/dns01"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
"golang.org/x/oauth2"
)

View file

@ -14,7 +14,7 @@ import (
"net/url"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
)
const defaultBaseURL = "https://rest.%s"

View file

@ -11,7 +11,7 @@ import (
"net/url"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
)
const defaultBaseURL = "https://api.gcore.com/dns"

View file

@ -11,7 +11,7 @@ import (
"time"
"github.com/cenkalti/backoff/v5"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
)
const defaultBaseURL = "https://secure.hosting.de/api/dns/v1/json"

View file

@ -10,7 +10,7 @@ import (
"net/url"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
querystring "github.com/google/go-querystring/query"
)

View file

@ -11,7 +11,7 @@ import (
"regexp"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
querystring "github.com/google/go-querystring/query"
)

View file

@ -12,7 +12,7 @@ import (
"strings"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/internal/errutils"
)
const defaultBaseURL = "https://api.selectel.ru/domains/v1"

View file

@ -12,8 +12,8 @@ import (
"strconv"
"time"
"github.com/go-acme/lego/v5/providers/dns/internal/errutils"
"github.com/go-acme/lego/v5/providers/dns/internal/useragent"
"github.com/go-acme/lego/v5/internal/errutils"
"github.com/go-acme/lego/v5/internal/useragent"
)
// defaultBaseURL is the default API endpoint.

Some files were not shown because too many files have changed in this diff Show more