124 lines
3.1 KiB
Go
124 lines
3.1 KiB
Go
package config
|
|
|
|
import (
|
|
"encoding/xml"
|
|
"flag"
|
|
"fmt"
|
|
"io/ioutil"
|
|
"strings"
|
|
)
|
|
|
|
type Command struct {
|
|
LogLevel int
|
|
SaveDay bool
|
|
Filesize int
|
|
ConfigPath string
|
|
ChildId int
|
|
ChildNum int
|
|
IsClub int // 0:非俱乐部
|
|
MinRoomId int // 最小房间id
|
|
MaxRoomId int // 最大房间id
|
|
LogPath string // 日志相对路径
|
|
}
|
|
|
|
var Config XmlConfig
|
|
var Cmd Command
|
|
|
|
type XmlConfig struct {
|
|
Logger Logger `xml:"logger"`
|
|
Application Application `xml:"Application"`
|
|
Rabbitmq Rabbitmq `xml:"Rabbitmq"`
|
|
DBConfig DBConfig `xml:"Mysql"`
|
|
Redis RedisConfig `xml:"Redis"`
|
|
ClickHouse ClickHouseConfig `xml:"ClickHouse"`
|
|
}
|
|
|
|
type Logger struct {
|
|
Encode string `xml:"encode"`
|
|
Level string `xml:"level"`
|
|
SaveDay string `xml:"saveday"`
|
|
Filesize string `xml:"filesize"`
|
|
Monitor string `xml:"monitor"`
|
|
}
|
|
|
|
type Application struct {
|
|
Gm int `xml:"Gm"`
|
|
//RoomMinId int `xml:"RoomMinId"`
|
|
//RoomMaxId int `xml:"RoomMaxId"`
|
|
//IsClub int `xml:"IsClub"`
|
|
}
|
|
|
|
type Rabbitmq struct {
|
|
Host string `xml:"Host"`
|
|
Port string `xml:"Port"`
|
|
Username string `xml:"Username"`
|
|
Password string `xml:"Password"`
|
|
VHost string `xml:"VHost"`
|
|
}
|
|
|
|
type DBConfig struct {
|
|
ConfigDB string `xml:"ConfigDB"`
|
|
UserDB string `xml:"UserDB"`
|
|
PayDB string `xml:"PayDB"`
|
|
DataDB string `xml:"DataDB"`
|
|
Host string `xml:"Host"`
|
|
Port string `xml:"Port"`
|
|
Username string `xml:"Username"`
|
|
Password string `xml:"Password"`
|
|
}
|
|
|
|
type RedisEntry struct {
|
|
XMLName xml.Name `xml:"Entry"`
|
|
Key string `xml:"key,attr"`
|
|
Host string `xml:"Host"`
|
|
Port string `xml:"Port"`
|
|
Password string `xml:"Password"`
|
|
DB0 int `xml:"DB0"`
|
|
}
|
|
|
|
type RedisConfig struct {
|
|
Entries []RedisEntry `xml:"Entry"`
|
|
}
|
|
|
|
type ClickHouseConfig struct {
|
|
Host string `xml:"Host"`
|
|
Port string `xml:"Port"`
|
|
Username string `xml:"Username"`
|
|
Password string `xml:"Password"`
|
|
DbName string `xml:"DbName"`
|
|
}
|
|
|
|
func Load(path string) error {
|
|
data, err := ioutil.ReadFile(path)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
//log.Debug(fmt.Sprintf("load xml:%v", string(data)))
|
|
err = xml.Unmarshal(data, &Config)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return err
|
|
}
|
|
|
|
func RabbitmqUrl() string {
|
|
return fmt.Sprintf("amqp://%s:%s@%s:%s/%s", Config.Rabbitmq.Username, Config.Rabbitmq.Password, Config.Rabbitmq.Host, Config.Rabbitmq.Port, Config.Rabbitmq.VHost)
|
|
}
|
|
|
|
func ParseCommand() *Command {
|
|
flag.IntVar(&Cmd.LogLevel, "log", -1, "log level")
|
|
flag.StringVar(&Cmd.ConfigPath, "config", "default path", "xml config path")
|
|
flag.IntVar(&Cmd.ChildId, "id", 0, "current service id")
|
|
flag.IntVar(&Cmd.ChildNum, "service_num", 1, "number of services")
|
|
flag.IntVar(&Cmd.IsClub, "is_club", 0, "is club service")
|
|
flag.IntVar(&Cmd.MinRoomId, "min_room_id", 0, "min room id")
|
|
flag.IntVar(&Cmd.MaxRoomId, "max_room_id", 0, "max room id")
|
|
flag.StringVar(&Cmd.LogPath, "log_path", "./log", "log path")
|
|
flag.Parse()
|
|
if strings.Contains(Cmd.ConfigPath, "_dev") && Cmd.LogPath == "./log" {
|
|
Cmd.LogPath = "./log_dev"
|
|
}
|
|
//Cmd.Version = fmt.Sprintf("版本编译时间:%s", time.Now().Format("2006-01-02 15:04:05"))
|
|
return &Cmd
|
|
}
|