diff --git a/features/dbrest/dbrest.go b/features/dbrest/dbrest.go index 38aef4f9..fd1fb523 100644 --- a/features/dbrest/dbrest.go +++ b/features/dbrest/dbrest.go @@ -77,9 +77,11 @@ type DatabaseClient struct { var DbClient DatabaseClient -func InitDbClient(dbType, dbUser, dbPassword, dbHost, dbPort, dbName string) error { - DbClient.dbUrl = fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&collation=utf8mb4_general_ci&parseTime=true&loc=Local", - dbUser, dbPassword, dbHost, dbPort, dbName) +func InitDbClient(dbType, dbUser, dbPassword, dbHost, dbPort, dbName, dbParam string) error { + // DbClient.dbUrl = fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&collation=utf8mb4_general_ci&parseTime=true&loc=Local", + // dbUser, dbPassword, dbHost, dbPort, dbName) + DbClient.dbUrl = fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?%s", + dbUser, dbPassword, dbHost, dbPort, dbName, dbParam) DbClient.dbType = dbType DbClient.dbConnMaxLifetime = 0 DbClient.dbMaxIdleConns = 0 @@ -87,8 +89,7 @@ func InitDbClient(dbType, dbUser, dbPassword, dbHost, dbPort, dbName string) err if log.GetLevel() == log.LOG_TRACE { DbClient.IsShowSQL = true } - log.Debugf("dbType:%s dbUrl:%s:******@tcp(%s:%s)/%s??charset=utf8mb4&collation=utf8mb4_general_ci&parseTime=true&loc=Local", - dbType, dbUser, dbHost, dbPort, dbName) + log.Debugf("dbType:%s dbUrl:%s:", dbType, DbClient.dbUrl) var err error DbClient.XEngine, err = xorm.NewEngine(DbClient.dbType, DbClient.dbUrl) diff --git a/features/fm/alarm.go b/features/fm/alarm.go index 53081414..45cfcaf7 100644 --- a/features/fm/alarm.go +++ b/features/fm/alarm.go @@ -151,9 +151,9 @@ type DatabaseClient struct { var DbClient DatabaseClient -func InitDbClient(dbType, dbUser, dbPassword, dbHost, dbPort, dbName string) error { - DbClient.dbUrl = fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&collation=utf8mb4_general_ci&parseTime=true&loc=Local", - dbUser, dbPassword, dbHost, dbPort, dbName) +func InitDbClient(dbType, dbUser, dbPassword, dbHost, dbPort, dbName, dbParam string) error { + DbClient.dbUrl = fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?%s", + dbUser, dbPassword, dbHost, dbPort, dbName, dbParam) DbClient.dbType = dbType DbClient.dbConnMaxLifetime = 0 DbClient.dbMaxIdleConns = 0 @@ -161,8 +161,7 @@ func InitDbClient(dbType, dbUser, dbPassword, dbHost, dbPort, dbName string) err if log.GetLevel() == log.LOG_TRACE { DbClient.IsShowSQL = true } - log.Debugf("dbType:%s dbUrl:%s:******@tcp(%s:%s)/%s??charset=utf8mb4&collation=utf8mb4_general_ci&parseTime=true&loc=Local", - dbType, dbUser, dbHost, dbPort, dbName) + log.Debugf("dbType:%s dbUrl:%s:", dbType, DbClient.dbUrl) var err error DbClient.XEngine, err = xorm.NewEngine(DbClient.dbType, DbClient.dbUrl) diff --git a/features/lm/logbak.go b/features/lm/logbak.go index aa65696d..1b8008a1 100644 --- a/features/lm/logbak.go +++ b/features/lm/logbak.go @@ -50,9 +50,9 @@ var DbClient DatabaseClient // conf.Database.Host, conf.Database.Port, conf.Database.Name) // } -func InitDbClient(dbType, dbUser, dbPassword, dbHost, dbPort, dbName string) error { - DbClient.dbUrl = fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&collation=utf8mb4_general_ci&parseTime=true&loc=Local", - dbUser, dbPassword, dbHost, dbPort, dbName) +func InitDbClient(dbType, dbUser, dbPassword, dbHost, dbPort, dbName, dbParam string) error { + DbClient.dbUrl = fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?%s", + dbUser, dbPassword, dbHost, dbPort, dbName, dbParam) DbClient.dbType = dbType DbClient.dbConnMaxLifetime = 0 DbClient.dbMaxIdleConns = 0 @@ -60,8 +60,7 @@ func InitDbClient(dbType, dbUser, dbPassword, dbHost, dbPort, dbName string) err if log.GetLevel() == log.LOG_TRACE { DbClient.IsShowSQL = true } - log.Debugf("dbType:%s dbUrl:%s:******@tcp(%s:%s)/%s??charset=utf8mb4&collation=utf8mb4_general_ci&parseTime=true&loc=Local", - dbType, dbUser, dbHost, dbPort, dbName) + log.Debugf("dbType:%s dbUrl:%s:", dbType, DbClient.dbUrl) var err error DbClient.XEngine, err = xorm.NewEngine(DbClient.dbType, DbClient.dbUrl) diff --git a/features/pm/performance.go b/features/pm/performance.go index fd66426c..078fccb5 100644 --- a/features/pm/performance.go +++ b/features/pm/performance.go @@ -96,9 +96,9 @@ type DatabaseClient struct { var DbClient DatabaseClient -func InitDbClient(dbType, dbUser, dbPassword, dbHost, dbPort, dbName string) error { - DbClient.dbUrl = fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&collation=utf8mb4_general_ci&parseTime=true&loc=Local", - dbUser, dbPassword, dbHost, dbPort, dbName) +func InitDbClient(dbType, dbUser, dbPassword, dbHost, dbPort, dbName, dbParam string) error { + DbClient.dbUrl = fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?%s", + dbUser, dbPassword, dbHost, dbPort, dbName, dbParam) DbClient.dbType = dbType DbClient.dbConnMaxLifetime = 0 DbClient.dbMaxIdleConns = 0 @@ -106,8 +106,7 @@ func InitDbClient(dbType, dbUser, dbPassword, dbHost, dbPort, dbName string) err if log.GetLevel() == log.LOG_TRACE { DbClient.IsShowSQL = true } - log.Debugf("dbType:%s dbUrl:%s:******@tcp(%s:%s)/%s??charset=utf8mb4&collation=utf8mb4_general_ci&parseTime=true&loc=Local", - dbType, dbUser, dbHost, dbPort, dbName) + log.Debugf("dbType:%s dbUrl:%s:", dbType, DbClient.dbUrl) var err error DbClient.XEngine, err = xorm.NewEngine(DbClient.dbType, DbClient.dbUrl) diff --git a/lib/dborm/dborm.go b/lib/dborm/dborm.go index 102e410f..cc206583 100644 --- a/lib/dborm/dborm.go +++ b/lib/dborm/dborm.go @@ -45,9 +45,9 @@ type DatabaseClient struct { var DbClient DatabaseClient -func InitDbClient(dbType, dbUser, dbPassword, dbHost, dbPort, dbName string) error { - DbClient.dbUrl = fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&collation=utf8mb4_general_ci&parseTime=true&loc=Local", - dbUser, dbPassword, dbHost, dbPort, dbName) +func InitDbClient(dbType, dbUser, dbPassword, dbHost, dbPort, dbName, dbParam string) error { + DbClient.dbUrl = fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?%s", + dbUser, dbPassword, dbHost, dbPort, dbName, dbParam) DbClient.dbType = dbType DbClient.dbConnMaxLifetime = 0 DbClient.dbMaxIdleConns = 0 @@ -55,8 +55,7 @@ func InitDbClient(dbType, dbUser, dbPassword, dbHost, dbPort, dbName string) err if log.GetLevel() == log.LOG_TRACE { DbClient.IsShowSQL = true } - log.Debugf("dbType:%s dbUrl:%s:******@tcp(%s:%s)/%s??charset=utf8mb4&collation=utf8mb4_general_ci&parseTime=true&loc=Local", - dbType, dbUser, dbHost, dbPort, dbName) + log.Debugf("dbType:%s dbUrl:%s:", dbType, DbClient.dbUrl) var err error DbClient.XEngine, err = xorm.NewEngine(DbClient.dbType, DbClient.dbUrl) diff --git a/restagent/config/config.go b/restagent/config/config.go index 39cb6eed..24338c69 100644 --- a/restagent/config/config.go +++ b/restagent/config/config.go @@ -12,13 +12,14 @@ import ( ) type DbConfig struct { - Type string `yaml:"type"` - User string `yaml:"user"` - Password string `yaml:"password"` - Host string `yaml:"host"` - Port string `yaml:"port"` - Name string `yaml:"name"` - Backup string `yaml:"backup"` + Type string `yaml:"type"` + User string `yaml:"user"` + Password string `yaml:"password"` + Host string `yaml:"host"` + Port string `yaml:"port"` + Name string `yaml:"name"` + ConnParam string `yaml:"connParam,omitempty"` + Backup string `yaml:"backup"` } // Yaml struct of config @@ -30,16 +31,18 @@ type YamlConfig struct { Count int `yaml:"count"` } `yaml:"logger"` - Rest []struct { - IPv4 string `yaml:"ipv4"` - IPv6 string `yaml:"ipv6"` - Port uint16 `yaml:"port"` - Scheme string `yaml:"scheme"` - ClientAuthType int `yaml:"clientAuthType"` - CaFile string `yaml:"caFile"` - CertFile string `yaml:"certFile"` - KeyFile string `yaml:"keyFile"` - } `yaml:"rest"` + // Rest []struct { + // IPv4 string `yaml:"ipv4"` + // IPv6 string `yaml:"ipv6"` + // Port uint16 `yaml:"port"` + // Scheme string `yaml:"scheme"` + // ClientAuthType int `yaml:"clientAuthType"` + // CaFile string `yaml:"caFile"` + // CertFile string `yaml:"certFile"` + // KeyFile string `yaml:"keyFile"` + // } `yaml:"rest"` + + Rest []RestParam WebServer struct { Enabled bool `yaml:"enabled"` @@ -157,6 +160,17 @@ type YamlConfig struct { } `yaml:"testConfig"` } +type RestParam struct { + IPv4 string `yaml:"ipv4"` + IPv6 string `yaml:"ipv6"` + Port uint16 `yaml:"port"` + Scheme string `yaml:"scheme,omitempty" default:"http"` + ClientAuthType int `yaml:"clientAuthType"` + CaFile string `yaml:"caFile"` + CertFile string `yaml:"certFile"` + KeyFile string `yaml:"keyFile"` +} + type TestDatas struct { UDM struct { CapUsed uint32 `yaml:"capUsed"` @@ -188,7 +202,17 @@ type TestDataMap struct { NeTestDatas []map[string]NeTestData } -var yamlConfig YamlConfig +var yamlConfig YamlConfig = NewYamlConfig() + +// set default value for yaml config +func NewYamlConfig() YamlConfig { + return YamlConfig{ + Database: DbConfig{ + Type: "mysql", + ConnParam: "charset=utf8mb4&collation=utf8mb4_general_ci&loc=Local", + }, + } +} func ReadConfig(configFile string) { yamlFile, err := os.ReadFile(configFile) @@ -327,6 +351,23 @@ func GetDefaultUserAgent() string { return "OMC-restagent/" + global.Version } +func GetOMCHostUrl() string { + var omcip string = "127.0.0.1" + var rest RestParam = yamlConfig.Rest[0] + var port uint16 = rest.Port + if rest.IPv4 != "0.0.0.0" && rest.IPv4 != "" { + omcip = rest.IPv4 + } else if rest.IPv6 != "::" && rest.IPv6 != "" { + omcip = "[" + rest.IPv6 + "]" + } + var scheme string = "http" + if rest.Scheme != "" { + scheme = rest.Scheme + } + + return fmt.Sprintf("%s://%s:%d", scheme, omcip, port) +} + // const defaultConfigFile = "./etc/restconf.yaml" // func init() { diff --git a/restagent/restagent.go b/restagent/restagent.go index f8b49a92..63571157 100644 --- a/restagent/restagent.go +++ b/restagent/restagent.go @@ -197,31 +197,31 @@ func main() { log.Infof("OMC restagent version: %s %s %s", global.Version, global.BuildTime, global.GoVer) err := dborm.InitDbClient(conf.Database.Type, conf.Database.User, conf.Database.Password, - conf.Database.Host, conf.Database.Port, conf.Database.Name) + conf.Database.Host, conf.Database.Port, conf.Database.Name, conf.Database.ConnParam) if err != nil { fmt.Println("dborm.initDbClient err:", err) os.Exit(4) } err = fm.InitDbClient(conf.Database.Type, conf.Database.User, conf.Database.Password, - conf.Database.Host, conf.Database.Port, conf.Database.Name) + conf.Database.Host, conf.Database.Port, conf.Database.Name, conf.Database.ConnParam) if err != nil { fmt.Println("dborm.initDbClient err:", err) os.Exit(4) } err = pm.InitDbClient(conf.Database.Type, conf.Database.User, conf.Database.Password, - conf.Database.Host, conf.Database.Port, conf.Database.Name) + conf.Database.Host, conf.Database.Port, conf.Database.Name, conf.Database.ConnParam) if err != nil { fmt.Println("dborm.initDbClient err:", err) os.Exit(4) } err = dbrest.InitDbClient(conf.Database.Type, conf.Database.User, conf.Database.Password, - conf.Database.Host, conf.Database.Port, conf.Database.Name) + conf.Database.Host, conf.Database.Port, conf.Database.Name, conf.Database.ConnParam) if err != nil { fmt.Println("dbrest.initDbClient err:", err) os.Exit(4) } err = lm.InitDbClient(conf.Database.Type, conf.Database.User, conf.Database.Password, - conf.Database.Host, conf.Database.Port, conf.Database.Name) + conf.Database.Host, conf.Database.Port, conf.Database.Name, conf.Database.ConnParam) if err != nil { fmt.Println("lm.initDbClient err:", err) os.Exit(4) @@ -244,6 +244,7 @@ func main() { // 开启监控采集 // monitor.StartMonitor(false, "") + var listenLocalhost bool = false for _, rest := range conf.Rest { // ipv4 goroutines if rest.IPv4 != "" { @@ -254,7 +255,8 @@ func main() { go HttpListen(listen, app) } } - if rest.IPv4 != "0.0.0.0" { + if rest.IPv4 != "0.0.0.0" && !listenLocalhost { + listenLocalhost = true // 默认启动localhost侦听 listenLocal := "127.0.0.1" + ":" + strconv.Itoa(int(rest.Port)) if strings.ToLower(rest.Scheme) == "https" {