-
Notifications
You must be signed in to change notification settings - Fork 0
/
conf.go
166 lines (149 loc) · 2.68 KB
/
conf.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
package conf
import (
"errors"
"flag"
"go-common/library/conf"
"go-common/library/database/orm"
"go-common/library/database/sql"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/rpc"
"go-common/library/net/rpc/warden"
"go-common/library/net/trace"
"go-common/library/time"
"github.com/BurntSushi/toml"
)
var (
// ConfPath local config path
ConfPath string
// Conf config
Conf = &Config{}
client *conf.Client
)
// Config str
type Config struct {
// base
// channal len
ChanSize int64
// log
Log *log.Config
// identify
App *bm.App
// tracer
Tracer *trace.Config
// tick load pgc
Tick time.Duration
// orm
ORM *ORM
// host
Host *Host
// Bfs
Bfs *Bfs
// http client
HTTPClient *bm.ClientConfig
// image client
ImageClient *bm.ClientConfig
// BM HTTPServers
BM *bm.ServerConfig
// budget
Budget *Budget
// rpc client
VipRPC *rpc.ClientConfig
// grpc client
Account *warden.ClientConfig
// shell config
ShellConf *ShellConfig
OtherConf *OtherConfig
}
// ORM is orm config
type ORM struct {
Allowance *sql.Config
Growup *orm.Config
}
// Host is hosts
type Host struct {
Message string
Common string
VideoType string
ColumnType string
Creative string
API string
}
// Bfs struct.
type Bfs struct {
Addr string
Bucket string
Key string
Secret string
MaxFileSize int
}
// Budget config.
type Budget struct {
Video *BBudget
Column *BBudget
Bgm *BBudget
}
// BBudget config.
type BBudget struct {
Year int64
AnnualBudget int64
DayBudget int64
}
//ShellConfig 贝壳系统配置
type ShellConfig struct {
CustomID string
Token string
PayHost string
CallbackURL string
}
//OtherConfig 其他配置
type OtherConfig struct {
// true需要consume数据,false不consume数据
OfflineOrderConsume bool
}
func init() {
flag.StringVar(&ConfPath, "conf", "", "default config path")
}
// Init init conf
func Init() (err 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
}