重构项目
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