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