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