49 lines
1.2 KiB
Go
49 lines
1.2 KiB
Go
package config
|
||
|
||
import (
|
||
"sync"
|
||
)
|
||
|
||
// Config 配置结构体
|
||
type Config struct {
|
||
Server struct {
|
||
Port string `mapstructure:"port"`
|
||
} `mapstructure:"server"`
|
||
|
||
Auth struct {
|
||
Secret string `mapstructure:"secret"` // TOTP密钥
|
||
AuthFilePath string `mapstructure:"auth_file"` // 授权文件路径
|
||
TimeOffsetAllowed int64 `mapstructure:"time_offset_allowed"` // 允许的时间偏移(秒)
|
||
} `mapstructure:"auth"`
|
||
|
||
WatchdogCenter struct {
|
||
URL string `mapstructure:"url"` // 一级授权中心地址
|
||
} `mapstructure:"watchdog_center"`
|
||
}
|
||
|
||
var (
|
||
config Config
|
||
once sync.Once
|
||
)
|
||
|
||
// LoadConfig 加载配置
|
||
func LoadConfig(path string) error {
|
||
once.Do(func() {
|
||
// 设置默认配置值
|
||
config.Server.Port = "8080"
|
||
config.Auth.Secret = "default-secret-key-please-change-in-production"
|
||
config.Auth.AuthFilePath = "./auth-storage.json"
|
||
config.Auth.TimeOffsetAllowed = 3600 // 默认允许1小时的时间偏移
|
||
config.WatchdogCenter.URL = "http://localhost:8081"
|
||
|
||
// 这里可以添加从文件加载配置的逻辑,比如使用标准库读取JSON或YAML文件
|
||
// 但目前使用默认值替代
|
||
})
|
||
return nil
|
||
}
|
||
|
||
// GetConfig 获取配置
|
||
func GetConfig() *Config {
|
||
return &config
|
||
}
|