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 ") apiToken = flag.String("t", "", "-t ") days = flag.Int("d", 30, "-t ") concurrency = flag.Int("c", 3, "-c ") email = flag.String("e", "", "-e ") kvp := flag.String("kv", "", "-kv ,...") 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("配置检查完毕,即将开始更新证书!") }