mirror of
https://github.com/yusing/godoxy.git
synced 2025-05-20 20:52:33 +02:00
26 lines
632 B
Go
26 lines
632 B
Go
package autocert
|
|
|
|
import (
|
|
"github.com/go-acme/lego/v4/challenge"
|
|
"github.com/yusing/go-proxy/internal/gperr"
|
|
"github.com/yusing/go-proxy/internal/utils"
|
|
)
|
|
|
|
type Generator func(map[string]any) (challenge.Provider, gperr.Error)
|
|
|
|
var Providers = make(map[string]Generator)
|
|
|
|
func DNSProvider[CT any, PT challenge.Provider](
|
|
defaultCfg func() *CT,
|
|
newProvider func(*CT) (PT, error),
|
|
) Generator {
|
|
return func(opt map[string]any) (challenge.Provider, gperr.Error) {
|
|
cfg := defaultCfg()
|
|
err := utils.Deserialize(opt, &cfg)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
p, pErr := newProvider(cfg)
|
|
return p, gperr.Wrap(pErr)
|
|
}
|
|
}
|