mirror of
https://github.com/yusing/godoxy.git
synced 2026-04-24 17:28:31 +02:00
feat(autocert): add DNS resolver options to Config and update provider initialization
This commit is contained in:
@@ -11,6 +11,7 @@ import (
|
|||||||
|
|
||||||
"github.com/go-acme/lego/v4/certcrypto"
|
"github.com/go-acme/lego/v4/certcrypto"
|
||||||
"github.com/go-acme/lego/v4/challenge"
|
"github.com/go-acme/lego/v4/challenge"
|
||||||
|
"github.com/go-acme/lego/v4/challenge/dns01"
|
||||||
"github.com/go-acme/lego/v4/lego"
|
"github.com/go-acme/lego/v4/lego"
|
||||||
"github.com/rs/zerolog/log"
|
"github.com/rs/zerolog/log"
|
||||||
"github.com/yusing/go-proxy/internal/common"
|
"github.com/yusing/go-proxy/internal/common"
|
||||||
@@ -27,6 +28,8 @@ type Config struct {
|
|||||||
Provider string `json:"provider,omitempty"`
|
Provider string `json:"provider,omitempty"`
|
||||||
Options map[string]any `json:"options,omitempty"`
|
Options map[string]any `json:"options,omitempty"`
|
||||||
|
|
||||||
|
Resolvers []string `json:"resolvers,omitempty"`
|
||||||
|
|
||||||
// Custom ACME CA
|
// Custom ACME CA
|
||||||
CADirURL string `json:"ca_dir_url,omitempty"`
|
CADirURL string `json:"ca_dir_url,omitempty"`
|
||||||
CACerts []string `json:"ca_certs,omitempty"`
|
CACerts []string `json:"ca_certs,omitempty"`
|
||||||
@@ -111,6 +114,12 @@ func (cfg *Config) Validate() gperr.Error {
|
|||||||
return b.Error()
|
return b.Error()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (cfg *Config) dns01Options() []dns01.ChallengeOption {
|
||||||
|
return []dns01.ChallengeOption{
|
||||||
|
dns01.CondOption(len(cfg.Resolvers) > 0, dns01.AddRecursiveNameservers(cfg.Resolvers)),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (cfg *Config) GetLegoConfig() (*User, *lego.Config, gperr.Error) {
|
func (cfg *Config) GetLegoConfig() (*User, *lego.Config, gperr.Error) {
|
||||||
if err := cfg.Validate(); err != nil {
|
if err := cfg.Validate(); err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
|
|||||||
@@ -286,7 +286,7 @@ func (p *Provider) initClient() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
err = legoClient.Challenge.SetDNS01Provider(p.cfg.challengeProvider)
|
err = legoClient.Challenge.SetDNS01Provider(p.cfg.challengeProvider, p.cfg.dns01Options()...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user