feat(provider): add name.com

This commit is contained in:
RangerCD
2024-12-24 18:56:41 +08:00
parent ba73e04046
commit 6217d3aacd
16 changed files with 263 additions and 1 deletions

View File

@@ -39,6 +39,7 @@ const (
configTypeCloudflare = "cloudflare"
configTypeGoDaddy = "godaddy"
configTypeHuaweiCloud = "huaweicloud"
configTypeNameDotCom = "namedotcom"
configTypeNameSilo = "namesilo"
configTypePowerDNS = "powerdns"
configTypeTencentCloud = "tencentcloud"
@@ -219,6 +220,8 @@ func GetWithTypeOption(t string, option *ApplyOption) (Applicant, error) {
return NewAws(option), nil
case configTypeCloudflare:
return NewCloudflare(option), nil
case configTypeNameDotCom:
return NewNameDotCom(option), nil
case configTypeNameSilo:
return NewNamesilo(option), nil
case configTypeGoDaddy:
@@ -250,7 +253,7 @@ type SSLProviderEab struct {
}
func apply(option *ApplyOption, provider challenge.Provider) (*Certificate, error) {
record, _ := app.GetApp().Dao().FindFirstRecordByFilter("settings", "name='sslProvider'")
record, _ := app.GetApp().Dao().FindFirstRecordByFilter("settings", "nameDotCom='sslProvider'")
sslProvider := &SSLProviderConfig{
Config: SSLProviderConfigContent{},

View File

@@ -0,0 +1,36 @@
package applicant
import (
"encoding/json"
"time"
"github.com/go-acme/lego/v4/providers/dns/namedotcom"
"github.com/usual2970/certimate/internal/domain"
)
type nameDotCom struct {
option *ApplyOption
}
func NewNameDotCom(option *ApplyOption) Applicant {
return &nameDotCom{
option: option,
}
}
func (n *nameDotCom) Apply() (*Certificate, error) {
access := &domain.NameDotComAccess{}
json.Unmarshal([]byte(n.option.Access), access)
config := namedotcom.NewDefaultConfig()
config.Username = access.Username
config.APIToken = access.ApiToken
config.PropagationTimeout = time.Duration(n.option.Timeout) * time.Second
dnsProvider, err := namedotcom.NewDNSProviderConfig(config)
if err != nil {
return nil, err
}
return apply(n.option, dnsProvider)
}

View File

@@ -77,6 +77,11 @@ type GodaddyAccess struct {
ApiSecret string `json:"apiSecret"`
}
type NameDotComAccess struct {
Username string `json:"username"`
ApiToken string `json:"apiToken"`
}
type PdnsAccess struct {
ApiUrl string `json:"apiUrl"`
ApiKey string `json:"apiKey"`