package coolconfig import ( "github.com/gogf/gf/v2/frame/g" ) // cool config type sConfig struct { AutoMigrate bool `json:"auto_migrate,omitempty"` // 是否自动创建表 Eps bool `json:"eps,omitempty"` // 是否开启eps File *file `json:"file,omitempty"` // 文件上传配置 Name string `json:"name"` // 项目名称 // LoginPort string `json:"port"` GameOnlineID uint16 `json:"port_bl"` //这个是命令行输入的参数 ServerInfo ServerList Address string //rpc端口 } type ServerList struct { OnlineID uint16 `gorm:"column:online_id;comment:'在线ID';uniqueIndex" json:"online_id"` //服务器名称Desc Name string `gorm:"comment:'服务器名称'" json:"name"` IP string `gorm:"type:string;comment:'服务器IP'" json:"ip"` Port uint16 `gorm:"comment:'端口号,通常是小整数'" json:"port"` IsOpen uint8 `gorm:"default:0;not null;comment:'是否开启'" json:"is_open"` //登录地址 LoginAddr string `gorm:"type:string;comment:'登录地址'" json:"login_addr"` //账号 Account string `gorm:"type:string;comment:'账号'" json:"account"` //密码 Password string `gorm:"type:string;comment:'密码'" json:"password"` CanPort []uint32 `gorm:"type:jsonb;comment:'可连接端口'" json:"can_port"` //是否测试服 IsVip uint32 `gorm:"default:0;not null;comment:'是否为VIP服务器'" json:"is_vip"` //isdebug 是否本地服 IsDebug uint8 `gorm:"default:0;comment:'是否为调试模式'" json:"is_debug"` //服务器异色概率设定ServerList ShinyRate uint8 `gorm:"default:0;comment:'异色概率'" json:"shiny_rate"` //服务器天气设定ServerList WeatherRate uint8 `gorm:"default:0;comment:'天气概率'" json:"weather_rate"` //服务器属主Desc Owner uint32 `gorm:"comment:'服务器属主'" json:"owner"` Desc string `gorm:"comment:'服务器描述'" json:"desc"` OldScreen string `gorm:"comment:'服务器screen参数'" json:"old_screen"` } // OSS相关配置 type oss struct { Endpoint string `json:"endpoint"` AccessKeyID string `json:"accessKeyID"` SecretAccessKey string `json:"secretAccessKey"` UseSSL bool `json:"useSSL"` BucketName string `json:"bucketName"` Location string `json:"location"` } // 文件上传配置 type file struct { Mode string `json:"mode"` // 模式 local oss Domain string `json:"domain"` // 域名 http:// Oss *oss `json:"oss,omitempty"` } // NewConfig new config func newConfig() *sConfig { var ctx g.Ctx config := &sConfig{ AutoMigrate: GetCfgWithDefault(ctx, "blazing.autoMigrate", g.NewVar(false)).Bool(), Name: GetCfgWithDefault(ctx, "server.name", g.NewVar("")).String(), Eps: GetCfgWithDefault(ctx, "blazing.eps", g.NewVar(false)).Bool(), // LoginPort: string(GetCfgWithDefault(ctx, "server.port", g.NewVar("8080")).String()), Address: GetCfgWithDefault(ctx, "server.address", g.NewVar("8080")).String(), //GamePort: GetCfgWithDefault(ctx, "server.game", g.NewVar("8080")).Uint64s(), File: &file{ Mode: GetCfgWithDefault(ctx, "blazing.file.mode", g.NewVar("none")).String(), Domain: GetCfgWithDefault(ctx, "blazing.file.domain", g.NewVar("http://127.0.0.1:8300")).String(), Oss: &oss{ Endpoint: GetCfgWithDefault(ctx, "blazing.file.oss.endpoint", g.NewVar("127.0.0.1:9000")).String(), AccessKeyID: GetCfgWithDefault(ctx, "blazing.file.oss.accessKeyID", g.NewVar("")).String(), SecretAccessKey: GetCfgWithDefault(ctx, "blazing.file.oss.secretAccessKey", g.NewVar("")).String(), UseSSL: GetCfgWithDefault(ctx, "blazing.file.oss.useSSL", g.NewVar(false)).Bool(), BucketName: GetCfgWithDefault(ctx, "blazing.file.oss.bucketName", g.NewVar("blazing")).String(), Location: GetCfgWithDefault(ctx, "blazing.file.oss.location", g.NewVar("us-east-1")).String(), }, }, } return config } // qiniu 七牛云配置 type qiniu struct { AccessKey string `json:"ak"` SecretKey string `json:"sk"` Bucket string `json:"bucket"` CDN string `json:"cdn"` } // Config config var Config = newConfig() // GetCfgWithDefault get config with default value func GetCfgWithDefault(ctx g.Ctx, key string, defaultValue *g.Var) *g.Var { value, err := g.Cfg().GetWithEnv(ctx, key) if err != nil { return defaultValue } if value.IsEmpty() || value.IsNil() { return defaultValue } return value }