package Config import ( "SafeLine-Acme/internal/app/logger" "SafeLine-Acme/internal/class/Acme" "SafeLine-Acme/internal/class/DNSProvider" "SafeLine-Acme/internal/class/SafeLine" "SafeLine-Acme/pkg/utils" "encoding/json" "flag" "log" "os" ) func (config *Object) 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.CheckFile() } func (config *Object) Write(path string) { data, _ := json.MarshalIndent(config, "", " ") _ = os.WriteFile(path, data, 0644) } func (config *Object) 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.Object{ Host: *host, ApiToken: *apiToken, } config.Acme = Acme.Object{ Email: *email, DNSProvider: DNSProvider.Object{ 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.CheckCommand() } func (config *Object) CheckFile() { a := config.Server.CheckFile() b := config.Acme.CheckFile() if !a || !b { log.Printf("配置检查完毕,请检查相关配置后重新运行!") os.Exit(0) } log.Printf("配置检查完毕,即将开始检查证书相关内容!") } func (config *Object) CheckCommand() { a := config.Server.CheckCommand() b := config.Acme.CheckCommand() if !a || !b { log.Printf("配置检查完毕,请检查相关配置后重新运行!") os.Exit(0) } log.Printf("配置检查完毕,即将开始检查证书相关内容!") }