Files
BitSrunLoginGo/internal/config/config.go
2024-09-25 21:48:07 +08:00

73 lines
1.7 KiB
Go

package config
import (
"github.com/Mmx233/BitSrunLoginGo/internal/config/flags"
"github.com/Mmx233/BitSrunLoginGo/internal/config/keys"
"github.com/Mmx233/BitSrunLoginGo/pkg/srun"
"github.com/Mmx233/tool"
log "github.com/sirupsen/logrus"
"os"
"time"
)
type ConfFromFile struct {
Form srun.LoginForm `json:"form" yaml:"form"`
Meta srun.LoginMeta `json:"meta" yaml:"meta"`
Settings SettingsConf `json:"settings" yaml:"settings"`
}
var (
Form *srun.LoginForm
Meta *srun.LoginMeta
Settings *SettingsConf
Timeout time.Duration
)
func init() {
logger := log.New().WithField(keys.LogComponent, "init")
reader := newReaderFromPath(flags.Path)
// 生成配置文件
exist, err := tool.File.Exists(flags.Path)
if err != nil {
logger.Fatalln("读取配置文件失败:", err)
} else if !exist {
var data []byte
data, err = reader.Marshal(&defaultConfig)
if err != nil {
logger.Fatalln("生成配置文件失败:", err)
}
if err = os.WriteFile(flags.Path, data, 0600); err != nil {
logger.Fatalln("写入配置文件失败:", err)
}
logger.Infoln("已生成配置文件,请编辑 '" + flags.Path + "' 然后重试")
os.Exit(0)
}
// 读取配置文件
data, err := os.ReadFile(flags.Path)
if err != nil {
logger.Fatalln("读取配置失败:", err)
}
var fileConf ConfFromFile
if err = reader.Unmarshal(data, &fileConf); err != nil {
logger.Fatalln("解析配置失败:", err)
}
Form = &fileConf.Form
Meta = &fileConf.Meta
Settings = &fileConf.Settings
Timeout = time.Duration(Settings.Basic.Timeout) * time.Second
// flag 配置覆写
if flags.Debug {
Settings.Log.DebugLevel = true
}
if flags.Acid != "" {
Meta.Acid = flags.Acid
}
initLog()
initBackoff()
}