107 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			107 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| 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("配置检查完毕,即将开始更新证书!")
 | |
| }
 |