bilibili-backup/app/service/bbq/user/internal/conf/conf.go
2019-04-22 02:59:20 +00:00

80 lines
1.8 KiB
Go

package conf
import (
"context"
"encoding/json"
"go-common/library/cache/redis"
"go-common/library/database/sql"
ecode "go-common/library/ecode/tip"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/http/blademaster/middleware/verify"
"go-common/library/net/rpc/warden"
"go-common/library/net/trace"
"go-common/library/queue/databus"
"github.com/BurntSushi/toml"
)
var (
// Conf config
Conf = &Config{}
// UnameConf .
UnameConf = &UnameConfig{}
)
// UnameConfig .
type UnameConfig struct {
ForbiddenUname []string `json:"forbidden_uname"`
unameSet map[string]bool
}
// UnameForbidden 判断uname是否被禁用
func (c *UnameConfig) UnameForbidden(uname string) bool {
_, exists := c.unameSet[uname]
return exists
}
// Set .
func (c *UnameConfig) Set(text string) error {
log.Infow(context.Background(), "log", "reload uname config")
if err := json.Unmarshal([]byte(text), &UnameConf); err != nil {
panic(err)
}
c.unameSet = make(map[string]bool)
for _, uname := range c.ForbiddenUname {
c.unameSet[uname] = true
}
log.Infow(context.Background(), "log", "reload uname config succ", "uname_size", len(c.unameSet))
return nil
}
// Config .
type Config struct {
Log *log.Config
BM *bm.ServerConfig
Verify *verify.Config
Tracer *trace.Config
Redis *redis.Config
MySQL *sql.Config
Ecode *ecode.Config
GRPC *warden.ServerConfig
GRPCClient map[string]*GRPCConf
Databus map[string]*databus.Config
}
//GRPCConf .
type GRPCConf struct {
WardenConf *warden.ClientConfig
Addr string
}
// Set .
func (c *Config) Set(text string) error {
log.Infow(context.Background(), "log", "reload config")
if _, err := toml.Decode(text, c); err != nil {
panic(err)
}
return nil
}