重构项目

This commit is contained in:
2025-10-30 18:26:02 +08:00
parent fbc8bcd089
commit 7e10e2d2da
39 changed files with 728 additions and 464 deletions

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

View 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"`
}

View 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")
}