142 lines
3.7 KiB
Go
142 lines
3.7 KiB
Go
package config
|
|
|
|
import (
|
|
"gopkg.in/yaml.v2"
|
|
"io/ioutil"
|
|
//"os"
|
|
//"io/ioutil"
|
|
|
|
//"encoding/json"
|
|
l4g "proxy/logger"//"github.com/sirupsen/logrus"
|
|
)
|
|
|
|
type LogConf struct {
|
|
//Output string `yaml:"output"`// file; console
|
|
Level string `yaml:"level"`// debug; info; warn; error
|
|
//Path string `yaml:"path"`
|
|
//MaxAge int `yaml:"maxAge"`// per Hour
|
|
//RotationTime int `yaml:"rotationTime"`// per Hour
|
|
}
|
|
|
|
type MysqlDb struct {
|
|
Addr string `yaml:"addr"`
|
|
Username string `yaml:"username"`
|
|
Password string `yaml:"password"`
|
|
}
|
|
|
|
type RedisDb struct {
|
|
NetType string `yaml:"netType"`
|
|
Addr string `yaml:"addr"`
|
|
Password string `yaml:"password,omitempty"`
|
|
SentinelAddrs []string `yaml:"sentinelAddrs,omitempty"`
|
|
}
|
|
|
|
type TelnetServer struct {
|
|
Addr string `yaml:"addr"`
|
|
}
|
|
|
|
type RestConf struct {
|
|
Enabled bool `yaml:"enabled"`
|
|
HttpAddr string `yaml:"httpAddr"`
|
|
//EmsAddr string `yaml:"emsAddr,omitempty"`
|
|
LocRzIp string `yaml:"locRzIp"`
|
|
LocRzPort int `yaml:"locRzPort"`
|
|
OcsRzIp string `yaml:"ocsRzIp"`
|
|
OcsRzPort int `yaml:"ocsRzPort"`
|
|
//EnableNotification bool `yaml:"enableNotification"`
|
|
}
|
|
|
|
type CanalServer struct {
|
|
Enabled bool `yaml:"enabled"`
|
|
|
|
Addr string `yaml:"addr"`
|
|
Username string `yaml:"username"`
|
|
Password string `yaml:"password"`
|
|
|
|
Reinit bool `yaml:"reinit"`
|
|
FlushBeforeInit bool `yaml:"flushBeforeInit"`
|
|
//Standalone bool `yaml:"standalone"`
|
|
}
|
|
|
|
type CronCfg struct {
|
|
Enabled bool `yaml:"enabled"`
|
|
ClrExp string `yaml:"clrExp,omitempty"`
|
|
NtfSms string `yaml:"ntfSms,omitempty"`
|
|
}
|
|
|
|
type ProvisionCfg struct {
|
|
Enabled bool `yaml:"enabled"`
|
|
Interval int `yaml:"interval"`
|
|
ReadTimout int `yaml:"readTimout"`
|
|
|
|
EmsIp string `yaml:"emsIp"`
|
|
EmsPort int `yaml:"emsPort"`
|
|
Username string `yaml:"username"`
|
|
Password string `yaml:"password"`
|
|
ConnectHss string `yaml:"connectHss,omitempty"`
|
|
ConnectAuc string `yaml:"connectAuc,omitempty"`
|
|
ConnectVms string `yaml:"connectVms,omitempty"`
|
|
DisconnectHss string `yaml:"disconnectHss,omitempty"`
|
|
DisconnectAuc string `yaml:"disconnectAuc,omitempty"`
|
|
DisconnectVms string `yaml:"disconnectVms,omitempty"`
|
|
|
|
SsEntryIdInCrm int `yaml:"ssEntryIdInCrm,omitempty"`
|
|
}
|
|
|
|
type BundleUsageNotify struct {
|
|
//Enabled bool `yaml:"enabled"`
|
|
Voice75Percent bool `yaml:"voice75Percent"`
|
|
Data75Percent bool `yaml:"data75Percent"`
|
|
Sms75Percent bool `yaml:"sms75Percent"`
|
|
}
|
|
|
|
type DbConfig struct {
|
|
Log *LogConf `yaml:"log,omitempty"`
|
|
MysqlDb MysqlDb `yaml:"mysqlDb"`
|
|
RedisDb RedisDb `yaml:"redisDb"`
|
|
TelnetServer TelnetServer `yaml:"telnetServer"`
|
|
Rest RestConf `json:"rest"`
|
|
CanalServer CanalServer `yaml:"canalServer"`
|
|
CronCfg CronCfg `yaml:"cronCfg"`
|
|
Provision ProvisionCfg `yaml:"provision"`
|
|
BundleUsageNotify BundleUsageNotify `yaml:"bundleUsageNotify"`
|
|
}
|
|
|
|
var Config = DbConfig{ /*mysql: "192.168.1.151:3306", username: "root", password: "rootaa"*/}
|
|
|
|
func ReadConfig() error {
|
|
if content, err := ioutil.ReadFile("/usr/local/restproxy/etc/config.yaml"); err != nil {
|
|
return err
|
|
} else {
|
|
if yamlErr := yaml.Unmarshal(content, &Config); yamlErr != nil {
|
|
return yamlErr
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func SavePcfCfg() {
|
|
if content, err := yaml.Marshal(&Config); err != nil {
|
|
l4g.CfgLog.Errorf("Marshal failed error %s", err.Error())
|
|
return
|
|
} else if fileErr := ioutil.WriteFile("/usr/local/restproxy/etc/config.yaml", content, 0644); fileErr != nil {
|
|
l4g.CfgLog.Errorf("WriteFile failed error %s", fileErr.Error())
|
|
return
|
|
}
|
|
}
|
|
|
|
func SetBundleUsageNtf(serviceType int, bEnable bool) {
|
|
switch serviceType {
|
|
case 1:
|
|
Config.BundleUsageNotify.Voice75Percent = bEnable
|
|
case 2:
|
|
Config.BundleUsageNotify.Data75Percent = bEnable
|
|
case 3:
|
|
Config.BundleUsageNotify.Sms75Percent = bEnable
|
|
default:
|
|
}
|
|
SavePcfCfg()
|
|
}
|
|
|