Files
selfcare/proxy/config/config.go
2025-03-25 09:46:16 +08:00

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()
}