ETCD后台服务
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

106 lines
3.1 KiB

package config
import (
"fmt"
"os"
"etcd/program/common"
"github.com/naoina/toml"
)
// Config 配置
type Config struct {
Debug bool `toml:"debug"`
LogPath string `toml:"log_path"`
HTTP *HTTP `toml:"http"`
DB *MsSQLConfig `toml:"db"`
ETCD *EtcdConfig `toml:"etcd"`
}
// HTTP http 件套配置
type HTTP struct {
Address string `toml:"address"`
Port int `toml:"port"`
TLSEnable bool `toml:"tls_enable"` // 是否启用tls连接
TLSConfig *HTTPTls `toml:"tls_config"` // 启用tls时必须配置此内容
TLSEncryptEnable bool `toml:"tls_encrypt_enable"` // 是否启用 Let's Encrypt tls
TLSEncryptDomainNames []string `toml:"tls_encrypt_domain_names"` // 启用 Let's Encrypt 时的域名列表
}
// HTTPTls http tls配置
type HTTPTls struct {
CertFile string `toml:"cert_file"`
KeyFile string `toml:"key_file"`
}
// MySQLConfig 数据库配置
type MySQLConfig struct {
Debug bool `toml:"debug"` // 是否调试模式
Address string `toml:"address"` // 数据库连接地址
Port int `toml:"port"` // 数据库端口
MaxIdleConns int `toml:"max_idle_conns"` // 连接池最大连接数
MaxOpenConns int `toml:"max_open_conns"` // 默认打开连接数
User string `toml:"user"` // 数据库用户名
Passwd string `toml:"passwd"` // 数据库密码
DbName string `toml:"db_name"` // 数据库名
}
type MsSQLConfig struct {
Debug bool `toml:"debug"` // 是否调试模式
Address string `toml:"address"` // 数据库连接地址
Port int `toml:"port"` // 数据库端口
MaxIdleConns int `toml:"max_idle_conns"` // 连接池最大连接数
MaxOpenConns int `toml:"max_open_conns"` // 默认打开连接数
User string `toml:"user"` // 数据库用户名
Passwd string `toml:"passwd"` // 数据库密码
DbName string `toml:"db_name"` // 数据库名
}
// Config etcd 连接配置
type EtcdConfig struct {
EtcdId int32 `toml:"etcd_id"`
Version string `toml:"version"`
Address string `toml:"address"`
TlsEnable bool `toml:"tls_enable"`
CertFile string `toml:"cert_file"`
KeyFile string `toml:"key_file"`
CaFile string `toml:"ca_file"`
Username string `toml:"username"`
Password string `toml:"password"`
}
var (
cfg *Config
)
// GetCfg 获取配置
func GetCfg() *Config {
if cfg == nil {
LoadConfig("")
}
return cfg
}
// LoadConfig 读取配置
func LoadConfig(cfgPath string) (*Config, error) {
cfgPath = getCfgPath(cfgPath)
f, err := os.Open(cfgPath)
fmt.Println(cfgPath)
if err != nil {
return nil, err
}
defer f.Close()
cfg = new(Config)
if err := toml.NewDecoder(f).Decode(cfg); err != nil {
return nil, err
}
return cfg, nil
}
func getCfgPath(cfgPath string) string {
if cfgPath == "" {
cfgPath = common.GetRootDir() + "config/cfg.toml"
}
return cfgPath
}