| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- package config
- import (
- "fmt"
- "github.com/spf13/viper"
- "strings"
- "time"
- )
- const (
- DebugMode = "debug"
- ReleaseMode = "release"
- DefaultConfig = "conf/config.yaml"
- )
- type App struct {
- WebClient int `mapstructure:"web-client"`
- Register bool `mapstructure:"register"`
- RegisterStatus int `mapstructure:"register-status"`
- ShowSwagger int `mapstructure:"show-swagger"`
- TokenExpire time.Duration `mapstructure:"token-expire"`
- WebSso bool `mapstructure:"web-sso"`
- DisablePwdLogin bool `mapstructure:"disable-pwd-login"`
- CaptchaThreshold int `mapstructure:"captcha-threshold"`
- BanThreshold int `mapstructure:"ban-threshold"`
- }
- type Admin struct {
- Title string `mapstructure:"title"`
- Hello string `mapstructure:"hello"`
- HelloFile string `mapstructure:"hello-file"`
- IdServerPort int `mapstructure:"id-server-port"`
- RelayServerPort int `mapstructure:"relay-server-port"`
- }
- type Config struct {
- Lang string `mapstructure:"lang"`
- App App
- Admin Admin
- Gorm Gorm
- Mysql Mysql
- Gin Gin
- Logger Logger
- Redis Redis
- Cache Cache
- Oss Oss
- Jwt Jwt
- Rustdesk Rustdesk
- Proxy Proxy
- Ldap Ldap
- }
- func (a *Admin) Init() {
- if a.IdServerPort == 0 {
- a.IdServerPort = DefaultIdServerPort
- }
- if a.RelayServerPort == 0 {
- a.RelayServerPort = DefaultRelayServerPort
- }
- }
- // Init 初始化配置
- func Init(rowVal *Config, path string) *viper.Viper {
- if path == "" {
- path = DefaultConfig
- }
- v := viper.GetViper()
- v.AutomaticEnv()
- v.SetEnvKeyReplacer(strings.NewReplacer(".", "_", "-", "_"))
- v.SetEnvPrefix("RUSTDESK_API")
- v.SetConfigFile(path)
- v.SetConfigType("yaml")
- err := v.ReadInConfig()
- if err != nil {
- panic(fmt.Errorf("Fatal error config file: %s \n", err))
- }
- /*
- v.WatchConfig()
- //监听配置修改没什么必要
- v.OnConfigChange(func(e fsnotify.Event) {
- //配置文件修改监听
- fmt.Println("config file changed:", e.Name)
- if err2 := v.Unmarshal(rowVal); err2 != nil {
- fmt.Println(err2)
- }
- rowVal.Rustdesk.LoadKeyFile()
- rowVal.Rustdesk.ParsePort()
- })
- */
- if err := v.Unmarshal(rowVal); err != nil {
- panic(fmt.Errorf("Fatal error config: %s \n", err))
- }
- rowVal.Rustdesk.LoadKeyFile()
- rowVal.Admin.Init()
- return v
- }
- // ReadEnv 读取环境变量
- func ReadEnv(rowVal interface{}) *viper.Viper {
- v := viper.New()
- v.AutomaticEnv()
- if err := v.Unmarshal(rowVal); err != nil {
- fmt.Println(err)
- }
- return v
- }
|