zhangzengfei
2024-08-23 5bf9f5cc0ad2689de4e34d628d8ac3168df5142a
config/config.go
@@ -9,11 +9,31 @@
)
type serve struct {
   ID       string `mapstructure:"id"`
   Mode     string `mapstructure:"mode"`
   Host     string `mapstructure:"host"`
   Port     string `mapstructure:"port"`
   Password string `mapstructure:"password"`
   ID        string `mapstructure:"id"`
   Mode      string `mapstructure:"mode"`
   Host      string `mapstructure:"host"`
   Port      string `mapstructure:"port"`
   Realm     string `mapstructure:"realm"`
   Username  string `mapstructure:"username"`
   Password  string `mapstructure:"password"`
   Role      string `mapstructure:"role"` // agent 设备端, proxy 1400中转 不处理deivce, server 全功能
   Keepalive bool   `mapstructure:"keepalive"`
}
type client struct {
   ServerId           string `mapstructure:"server-id"`
   DeviceID           string `mapstructure:"device-id"`
   Username           string `mapstructure:"username"`
   Password           string `mapstructure:"password"`
   ServerAddr         string `mapstructure:"server-addr"`
   ServerPort         string `mapstructure:"server-port"`
   Proto              string `mapstructure:"proto" `             // http, https
   UploadType         string `mapstructure:"upload-type"`        // binary, url
   ChannelNo          string `mapstructure:"channel-number"`     // 通道号, 同id
   HeartbeatInterval  int    `mapstructure:"heartbeat-interval"` // 心跳周期
   HeartbeatFailCount int    `mapstructure:"heartbeat-count"`    // 心跳超时次数
   AddFloorToFaceId   bool   `mapstructure:"add-floor-faceId"`
   Enable             bool   `mapstructure:"enable"`
}
type logConfig struct {
@@ -28,7 +48,23 @@
   ReportServer   string `mapstructure:"report-server"`
   ReportInterval int    `mapstructure:"report-interval"`
   RetryInterval  int    `mapstructure:"retry-interval"`
   FTPServer      string `mapstructure:"ftp-server"`
   RecordServer   string `mapstructure:"record-server"`
}
type image struct {
   CutFaceImage   bool   `mapstructure:"cut-face-image"`
   Enlarge        int    `mapstructure:"enlarge"`
   ImageUriPrefix string `mapstructure:"url-prefix"`
}
// 梯控设备
type nvcs struct {
   Model       string `mapstructure:"model"` // 型号
   Port        string `mapstructure:"port"`  // 端口
   OSD         string `mapstructure:"osd"`
   RunState    bool   `mapstructure:"run-state"`
   WaitRunTime int    `mapstructure:"wait-run-time"`
}
type rateLimitConfig struct {
@@ -40,6 +76,9 @@
var LogConf = &logConfig{}
var ForwardConf = &forward{}
var RateLimitConf = &rateLimitConfig{}
var ClientConf = &client{}
var NVCSConf = &nvcs{}
var ImageConf = &image{}
// Init is an exported method that takes the environment starts the viper
// (external lib) and returns the configuration struct.
@@ -48,6 +87,7 @@
   v := viper.New()
   v.SetConfigType("yaml")
   v.SetConfigName("gat1400")
   v.AddConfigPath("./")
   v.AddConfigPath("./config/")
   v.AddConfigPath("../config/")
   err = v.ReadInConfig()
@@ -67,6 +107,9 @@
   v.UnmarshalKey("log", LogConf)
   v.UnmarshalKey("forward", ForwardConf)
   v.UnmarshalKey("rate-limit", RateLimitConf)
   v.UnmarshalKey("client", ClientConf)
   v.UnmarshalKey("nvcs", NVCSConf)
   v.UnmarshalKey("image", ImageConf)
   if LogConf.Level == "" {
      LogConf.Level = "info"
@@ -80,5 +123,21 @@
      ForwardConf.RetryInterval = 5
   }
   if ClientConf.HeartbeatInterval == 0 {
      ClientConf.HeartbeatInterval = 30
   }
   if ClientConf.Proto == "" {
      ClientConf.Proto = "http"
   }
   if ImageConf.Enlarge == 0 {
      ImageConf.Enlarge = 100
   }
   if NVCSConf.WaitRunTime == 0 {
      NVCSConf.WaitRunTime = 60
   }
   logger.SetLogLevel(LogConf.Level)
}