224 lines
4.1 KiB
Go
224 lines
4.1 KiB
Go
|
package conf
|
||
|
|
||
|
import (
|
||
|
"errors"
|
||
|
"flag"
|
||
|
"go-common/library/cache/memcache"
|
||
|
"go-common/library/cache/redis"
|
||
|
"go-common/library/conf"
|
||
|
"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/trace"
|
||
|
"go-common/library/queue/databus"
|
||
|
xtime "go-common/library/time"
|
||
|
|
||
|
"go-common/library/net/rpc/warden"
|
||
|
|
||
|
"github.com/BurntSushi/toml"
|
||
|
)
|
||
|
|
||
|
var (
|
||
|
confPath string
|
||
|
client *conf.Client
|
||
|
// Conf config
|
||
|
Conf = &Config{}
|
||
|
)
|
||
|
|
||
|
// Config .
|
||
|
type Config struct {
|
||
|
Log *log.Config
|
||
|
BM *HTTPGeneral
|
||
|
Verify *verify.Config
|
||
|
Tracer *trace.Config
|
||
|
Redis *redis.Config
|
||
|
BfRedis *redis.Config
|
||
|
Memcache *memcache.Config
|
||
|
MySQL *sql.Config
|
||
|
MySQLCms *sql.Config
|
||
|
MySQLOffline *sql.Config
|
||
|
Ecode *ecode.Config
|
||
|
Scheduler *Scheduler
|
||
|
GRPCClient map[string]*GRPCConf
|
||
|
//berserker
|
||
|
Berserker *Berserker
|
||
|
TagMap *TagMap
|
||
|
Databus map[string]*databus.Config
|
||
|
Mail *Mail
|
||
|
URLs map[string]string
|
||
|
Download *Download
|
||
|
FTP *FTP
|
||
|
VST *Vst
|
||
|
Path map[string]string
|
||
|
SubBvcControl *Sub
|
||
|
}
|
||
|
|
||
|
//Sub ...
|
||
|
type Sub struct {
|
||
|
Control int8
|
||
|
}
|
||
|
|
||
|
//Vst ...
|
||
|
type Vst struct {
|
||
|
TmpStatus int64
|
||
|
}
|
||
|
|
||
|
// FTP FTP.
|
||
|
type FTP struct {
|
||
|
Addr string
|
||
|
User string
|
||
|
Password string
|
||
|
RemotePath map[string]string
|
||
|
Timeout xtime.Duration
|
||
|
LocalPath map[string]string
|
||
|
}
|
||
|
|
||
|
//GRPCConf .
|
||
|
type GRPCConf struct {
|
||
|
WardenConf *warden.ClientConfig
|
||
|
Addr string
|
||
|
}
|
||
|
|
||
|
// Download .
|
||
|
type Download struct {
|
||
|
File string
|
||
|
}
|
||
|
|
||
|
//Mail ...
|
||
|
type Mail struct {
|
||
|
Host string
|
||
|
Port int
|
||
|
From string
|
||
|
Password string
|
||
|
To []string
|
||
|
}
|
||
|
|
||
|
//TagMap ...
|
||
|
type TagMap struct {
|
||
|
TagTidMap map[string]string
|
||
|
TagSubTidMap map[string]string
|
||
|
}
|
||
|
|
||
|
// HTTPGeneral conf
|
||
|
type HTTPGeneral struct {
|
||
|
Server *bm.ServerConfig
|
||
|
Client *bm.ClientConfig
|
||
|
}
|
||
|
|
||
|
// Berserker conf
|
||
|
type Berserker struct {
|
||
|
Key *BerSerkerKeyList
|
||
|
API *BerserkerAPI
|
||
|
}
|
||
|
|
||
|
// BerserkerAPI conf
|
||
|
type BerserkerAPI struct {
|
||
|
Rankdaily string
|
||
|
Userdmg string
|
||
|
Upuserdmg string
|
||
|
Operaonce string
|
||
|
Userbasic string
|
||
|
Upmid string
|
||
|
VideoView string
|
||
|
UserProfile string
|
||
|
UserProfileBuvid string
|
||
|
}
|
||
|
|
||
|
// BerSerkerKeyList conf
|
||
|
type BerSerkerKeyList struct {
|
||
|
YYC *BerSerkerKey
|
||
|
HSC *BerSerkerKey
|
||
|
LZQ *BerSerkerKey
|
||
|
LJ *BerSerkerKey
|
||
|
DW *BerSerkerKey
|
||
|
HM *BerSerkerKey
|
||
|
}
|
||
|
|
||
|
// BerSerkerKey conf
|
||
|
type BerSerkerKey struct {
|
||
|
Appkey string
|
||
|
Secret string
|
||
|
}
|
||
|
|
||
|
//Scheduler .
|
||
|
type Scheduler struct {
|
||
|
CheckVideo2ES string
|
||
|
SyncUserDmg string
|
||
|
Test string
|
||
|
SyncUpUserDmg string
|
||
|
CheckVideo string
|
||
|
CheckVideoSt string
|
||
|
CheckVideoStHv string
|
||
|
CheckVideoTag string
|
||
|
CheckTag string
|
||
|
SyncVideoOper string
|
||
|
DeliveryNewVideoToCms string
|
||
|
SyncUsrSta string
|
||
|
SyncSearch string
|
||
|
VideoViewHistory string
|
||
|
SysMsgTask string
|
||
|
UserProfileBbq string
|
||
|
TransToReview string
|
||
|
TransToCheckBack string
|
||
|
}
|
||
|
|
||
|
// Databus .
|
||
|
type Databus struct {
|
||
|
Video *databus.Config
|
||
|
VideoRep *databus.Config
|
||
|
BvcSub *databus.Config
|
||
|
}
|
||
|
|
||
|
func init() {
|
||
|
flag.StringVar(&confPath, "conf", "", "default config path")
|
||
|
}
|
||
|
|
||
|
// Init init conf
|
||
|
func Init() error {
|
||
|
if confPath != "" {
|
||
|
return local()
|
||
|
}
|
||
|
return remote()
|
||
|
}
|
||
|
|
||
|
func local() (err error) {
|
||
|
_, err = toml.DecodeFile(confPath, &Conf)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
func remote() (err error) {
|
||
|
if client, err = conf.New(); err != nil {
|
||
|
return
|
||
|
}
|
||
|
if err = load(); err != nil {
|
||
|
return
|
||
|
}
|
||
|
go func() {
|
||
|
for range client.Event() {
|
||
|
log.Info("config reload")
|
||
|
if load() != nil {
|
||
|
log.Error("config reload error (%v)", err)
|
||
|
}
|
||
|
}
|
||
|
}()
|
||
|
return
|
||
|
}
|
||
|
|
||
|
func load() (err error) {
|
||
|
var (
|
||
|
s string
|
||
|
ok bool
|
||
|
tmpConf *Config
|
||
|
)
|
||
|
if s, ok = client.Toml2(); !ok {
|
||
|
return errors.New("load config center error")
|
||
|
}
|
||
|
if _, err = toml.Decode(s, &tmpConf); err != nil {
|
||
|
return errors.New("could not decode config")
|
||
|
}
|
||
|
*Conf = *tmpConf
|
||
|
return
|
||
|
}
|