迁移并重构项目,优化了执行流程
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
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										43
									
								
								internal/class/DNSProvider/Object.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								internal/class/DNSProvider/Object.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,43 @@
 | 
			
		||||
package DNSProvider
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"reflect"
 | 
			
		||||
 | 
			
		||||
	"github.com/go-acme/lego/v4/challenge"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type Object 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 *Object) 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
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										32
									
								
								internal/class/DNSProvider/Objects.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								internal/class/DNSProvider/Objects.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"`
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user