重构项目
This commit is contained in:
		
							
								
								
									
										106
									
								
								internal/class/config/Method.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										106
									
								
								internal/class/config/Method.go
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,106 @@ | ||||
| package config | ||||
|  | ||||
| import ( | ||||
| 	"SafelineAPI/internal/app/logger" | ||||
| 	"SafelineAPI/internal/class/Acme" | ||||
| 	"SafelineAPI/internal/class/DNSProvider" | ||||
| 	"SafelineAPI/internal/class/Safeline" | ||||
| 	"SafelineAPI/pkg/utils" | ||||
| 	"encoding/json" | ||||
| 	"flag" | ||||
| 	"log" | ||||
| 	"os" | ||||
| ) | ||||
|  | ||||
| func (config *Config) Read(path string) { | ||||
| 	data, err := os.ReadFile(path) | ||||
| 	if err != nil { | ||||
| 		logger.Error.Printf("配置文件读取失败: %s%s%s", logger.Red, err, logger.Reset) | ||||
| 		os.Exit(0) | ||||
| 	} | ||||
| 	err = json.Unmarshal(data, &config) | ||||
| 	if err != nil { | ||||
| 		logger.Error.Printf("配置文件读取失败: %s%s%s", logger.Red, err, logger.Reset) | ||||
| 		os.Exit(0) | ||||
| 	} | ||||
| 	config.Verify() | ||||
| } | ||||
| func (config *Config) Write(path string) { | ||||
| 	data, _ := json.MarshalIndent(config, "", "	") | ||||
| 	_ = os.WriteFile(path, data, 0644) | ||||
| } | ||||
|  | ||||
| func (config *Config) Command() { | ||||
| 	var host, apiToken, email *string | ||||
| 	var days, concurrency *int | ||||
|  | ||||
| 	host = flag.String("h", "172.22.222.4:1443", "-h <host>") | ||||
| 	apiToken = flag.String("t", "", "-t <apiToken>") | ||||
| 	days = flag.Int("d", 30, "-t <days>") | ||||
| 	concurrency = flag.Int("c", 3, "-c <concurrency>") | ||||
| 	email = flag.String("e", "", "-e <email>") | ||||
| 	kvp := flag.String("kv", "", "-kv <key=value>,<key=value>...") | ||||
| 	flag.Parse() | ||||
|  | ||||
| 	var KVP = make(utils.KVPair) | ||||
| 	if *kvp != "" { | ||||
| 		KVP.Set(*kvp) | ||||
| 	} | ||||
|  | ||||
| 	config.Days = *days | ||||
| 	config.Concurrency = *concurrency | ||||
| 	config.Server = Safeline.SafeLine{ | ||||
| 		Host:     Safeline.Host(*host), | ||||
| 		ApiToken: Safeline.ApiToken(*apiToken), | ||||
| 	} | ||||
| 	config.Acme = Acme.Acme{ | ||||
| 		Email: *email, | ||||
| 		DNSProvider: DNSProvider.DNSProvider{ | ||||
| 			TencentCloud: DNSProvider.TencentCloud{ | ||||
| 				SecretID:  KVP["SecretID"], | ||||
| 				SecretKey: KVP["SecretKey"], | ||||
| 			}, | ||||
| 			AliCloud: DNSProvider.AliCloud{ | ||||
| 				AccessKeyId:     KVP["AccessKeyId"], | ||||
| 				AccessKeySecret: KVP["AccessKeySecret"], | ||||
| 				RAMRole:         KVP["RAMRole"], | ||||
| 				STSToken:        KVP["STSToken"], | ||||
| 			}, | ||||
| 			HuaweiCloud: DNSProvider.HuaweiCloud{ | ||||
| 				AccessKeyId:     KVP["AccessKeyId"], | ||||
| 				Region:          KVP["Region"], | ||||
| 				SecretAccessKey: KVP["SecretAccessKey"], | ||||
| 			}, | ||||
| 			WestCN: DNSProvider.WestCN{ | ||||
| 				Username: KVP["Username"], | ||||
| 				Password: KVP["Password"], | ||||
| 			}, | ||||
| 			RainYun: DNSProvider.RainYun{ | ||||
| 				ApiKey: KVP["ApiKey"], | ||||
| 			}, | ||||
| 			Dode: DNSProvider.Dode{ | ||||
| 				Token: KVP["Token"], | ||||
| 			}, | ||||
| 		}, | ||||
| 	} | ||||
| 	config.VerifyCommand() | ||||
| } | ||||
| func (config *Config) Verify() { | ||||
| 	a := config.Server.Verify() | ||||
| 	b := config.Acme.Verify() | ||||
| 	if a || b { | ||||
| 		log.Printf("配置检查完毕,请检查相关配置后重新运行!") | ||||
| 		os.Exit(0) | ||||
| 	} | ||||
| 	log.Printf("配置检查完毕,即将开始更新证书!") | ||||
| } | ||||
|  | ||||
| func (config *Config) VerifyCommand() { | ||||
| 	a := config.Server.VerifyCommand() | ||||
| 	b := config.Acme.VerifyCommand() | ||||
| 	if a || b { | ||||
| 		log.Printf("配置检查完毕,请检查相关配置后重新运行!") | ||||
| 		os.Exit(0) | ||||
| 	} | ||||
| 	log.Printf("配置检查完毕,即将开始更新证书!") | ||||
| } | ||||
							
								
								
									
										13
									
								
								internal/class/config/Object.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								internal/class/config/Object.go
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,13 @@ | ||||
| package config | ||||
|  | ||||
| import ( | ||||
| 	"SafelineAPI/internal/class/Acme" | ||||
| 	"SafelineAPI/internal/class/Safeline" | ||||
| ) | ||||
|  | ||||
| type Config struct { | ||||
| 	Concurrency int               `json:"Concurrency"` | ||||
| 	Days        int               `json:"Days"` | ||||
| 	Server      Safeline.SafeLine `json:"Server"` | ||||
| 	Acme        Acme.Acme         `json:"Acme"` | ||||
| } | ||||
							
								
								
									
										49
									
								
								internal/class/config/default.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								internal/class/config/default.go
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,49 @@ | ||||
| package config | ||||
|  | ||||
| import ( | ||||
| 	"SafelineAPI/internal/class/Acme" | ||||
| 	"SafelineAPI/internal/class/DNSProvider" | ||||
| 	"SafelineAPI/internal/class/Safeline" | ||||
| ) | ||||
|  | ||||
| func (config *Config) Default() { | ||||
| 	a := Config{ | ||||
| 		Concurrency: 3, | ||||
| 		Days:        15, | ||||
| 		Server: Safeline.SafeLine{ | ||||
| 			Host:     "192.168.1.4:1443", | ||||
| 			ApiToken: "xxx", | ||||
| 		}, | ||||
| 		Acme: Acme.Acme{ | ||||
| 			Email: "xxx", | ||||
| 			DNSProvider: DNSProvider.DNSProvider{ | ||||
| 				TencentCloud: DNSProvider.TencentCloud{ | ||||
| 					SecretID:  "xxx", | ||||
| 					SecretKey: "xxx", | ||||
| 				}, | ||||
| 				AliCloud: DNSProvider.AliCloud{ | ||||
| 					AccessKeyId:     "xxx", | ||||
| 					AccessKeySecret: "xxx", | ||||
| 					RAMRole:         "xxx(可选)", | ||||
| 					STSToken:        "xxx(可选)", | ||||
| 				}, | ||||
| 				HuaweiCloud: DNSProvider.HuaweiCloud{ | ||||
| 					AccessKeyId:     "xxx", | ||||
| 					Region:          "xxx", | ||||
| 					SecretAccessKey: "xxx", | ||||
| 				}, | ||||
| 				WestCN: DNSProvider.WestCN{ | ||||
| 					Username: "xxx", | ||||
| 					Password: "xxx", | ||||
| 				}, | ||||
| 				RainYun: DNSProvider.RainYun{ | ||||
| 					ApiKey: "xxx", | ||||
| 				}, | ||||
| 				Dode: DNSProvider.Dode{ | ||||
| 					Token: "xxx", | ||||
| 				}, | ||||
| 			}, | ||||
| 		}, | ||||
| 	} | ||||
| 	a.Write("./config.json") | ||||
| } | ||||
		Reference in New Issue
	
	Block a user