重构项目
This commit is contained in:
60
internal/class/DNSProvider/Method.go
Normal file
60
internal/class/DNSProvider/Method.go
Normal file
@ -0,0 +1,60 @@
|
||||
package DNSProvider
|
||||
|
||||
import (
|
||||
"github.com/go-acme/lego/v4/challenge"
|
||||
"github.com/go-acme/lego/v4/providers/dns/alidns"
|
||||
"github.com/go-acme/lego/v4/providers/dns/dode"
|
||||
"github.com/go-acme/lego/v4/providers/dns/huaweicloud"
|
||||
"github.com/go-acme/lego/v4/providers/dns/rainyun"
|
||||
"github.com/go-acme/lego/v4/providers/dns/tencentcloud"
|
||||
"github.com/go-acme/lego/v4/providers/dns/westcn"
|
||||
)
|
||||
|
||||
func (tencent TencentCloud) Provider() (challenge.Provider, error) {
|
||||
cfg := tencentcloud.NewDefaultConfig()
|
||||
cfg.SecretID = tencent.SecretID
|
||||
cfg.SecretKey = tencent.SecretKey
|
||||
p, err := tencentcloud.NewDNSProviderConfig(cfg)
|
||||
return p, err
|
||||
}
|
||||
|
||||
func (ali AliCloud) Provider() (challenge.Provider, error) {
|
||||
cfg := alidns.NewDefaultConfig()
|
||||
cfg.SecurityToken = ali.STSToken
|
||||
cfg.SecretKey = ali.AccessKeySecret
|
||||
cfg.RAMRole = ali.RAMRole
|
||||
cfg.APIKey = ali.AccessKeyId
|
||||
p, err := alidns.NewDNSProviderConfig(cfg)
|
||||
return p, err
|
||||
}
|
||||
|
||||
func (huawei HuaweiCloud) Provider() (challenge.Provider, error) {
|
||||
cfg := huaweicloud.NewDefaultConfig()
|
||||
cfg.Region = huawei.Region
|
||||
cfg.AccessKeyID = huawei.AccessKeyId
|
||||
cfg.SecretAccessKey = huawei.SecretAccessKey
|
||||
p, err := huaweicloud.NewDNSProviderConfig(cfg)
|
||||
return p, err
|
||||
}
|
||||
|
||||
func (west WestCN) Provider() (challenge.Provider, error) {
|
||||
cfg := westcn.NewDefaultConfig()
|
||||
cfg.Username = west.Username
|
||||
cfg.Password = west.Password
|
||||
p, err := westcn.NewDNSProviderConfig(cfg)
|
||||
return p, err
|
||||
}
|
||||
|
||||
func (rain RainYun) Provider() (challenge.Provider, error) {
|
||||
cfg := rainyun.NewDefaultConfig()
|
||||
cfg.APIKey = rain.ApiKey
|
||||
p, err := rainyun.NewDNSProviderConfig(cfg)
|
||||
return p, err
|
||||
}
|
||||
|
||||
func (Dode Dode) Provider() (challenge.Provider, error) {
|
||||
cfg := dode.NewDefaultConfig()
|
||||
cfg.Token = Dode.Token
|
||||
p, err := dode.NewDNSProviderConfig(cfg)
|
||||
return p, err
|
||||
}
|
||||
32
internal/class/DNSProvider/Object.go
Normal file
32
internal/class/DNSProvider/Object.go
Normal file
@ -0,0 +1,32 @@
|
||||
package DNSProvider
|
||||
|
||||
type TencentCloud struct {
|
||||
SecretID string `json:"SecretId,omitempty"`
|
||||
SecretKey string `json:"SecretKey,omitempty"`
|
||||
}
|
||||
|
||||
type AliCloud struct {
|
||||
AccessKeyId string `json:"AccessKeyId,omitempty"`
|
||||
AccessKeySecret string `json:"AccessKeySecret,omitempty"`
|
||||
RAMRole string `json:"RAMRole,omitempty"`
|
||||
STSToken string `json:"STSToken,omitempty"`
|
||||
}
|
||||
|
||||
type HuaweiCloud struct {
|
||||
AccessKeyId string `json:"AccessKeyId,omitempty"`
|
||||
Region string `json:"Region,omitempty"`
|
||||
SecretAccessKey string `json:"SecretAccessKey,omitempty"`
|
||||
}
|
||||
|
||||
type WestCN struct {
|
||||
Username string `json:"Username,omitempty"`
|
||||
Password string `json:"Password,omitempty"`
|
||||
}
|
||||
|
||||
type RainYun struct {
|
||||
ApiKey string `json:"ApiKey,omitempty"`
|
||||
}
|
||||
|
||||
type Dode struct {
|
||||
Token string `json:"Token,omitempty"`
|
||||
}
|
||||
43
internal/class/DNSProvider/Objects.go
Normal file
43
internal/class/DNSProvider/Objects.go
Normal file
@ -0,0 +1,43 @@
|
||||
package DNSProvider
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
|
||||
"github.com/go-acme/lego/v4/challenge"
|
||||
)
|
||||
|
||||
type DNSProvider struct {
|
||||
TencentCloud TencentCloud `json:"TencentCloud,omitempty"`
|
||||
AliCloud AliCloud `json:"AliCloud,omitempty"`
|
||||
HuaweiCloud HuaweiCloud `json:"HuaweiCloud,omitempty"`
|
||||
WestCN WestCN `json:"WestCN,omitempty"`
|
||||
RainYun RainYun `json:"RainYun,omitempty"`
|
||||
Dode Dode `json:"Dode,omitempty"`
|
||||
}
|
||||
|
||||
func (dnsProvider *DNSProvider) Choose() ([]challenge.Provider, []error) {
|
||||
|
||||
var Providers []challenge.Provider
|
||||
var Errors []error
|
||||
v := reflect.ValueOf(dnsProvider).Elem()
|
||||
|
||||
for i := 0; i < v.NumField(); i++ {
|
||||
field := v.Field(i)
|
||||
if field.Kind() == reflect.Struct {
|
||||
for ii := 0; ii < field.NumField(); ii++ {
|
||||
if field.Field(ii).String() != "" {
|
||||
method, _ := field.Type().MethodByName("Provider")
|
||||
results := method.Func.Call([]reflect.Value{field})
|
||||
err, _ := results[1].Interface().(error)
|
||||
if err != nil {
|
||||
Errors = append(Errors, err)
|
||||
} else {
|
||||
Providers = append(Providers, results[0].Interface().(challenge.Provider))
|
||||
}
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return Providers, Errors
|
||||
}
|
||||
9
internal/class/DNSProvider/SubObject.go
Normal file
9
internal/class/DNSProvider/SubObject.go
Normal file
@ -0,0 +1,9 @@
|
||||
package DNSProvider
|
||||
|
||||
import "github.com/go-acme/lego/v4/challenge"
|
||||
|
||||
type Result struct {
|
||||
Provider challenge.Provider
|
||||
Error error
|
||||
}
|
||||
type Msg map[string]Result
|
||||
Reference in New Issue
Block a user