package ConfigUtil import ( "fmt" "gopkg.in/ini.v1" "os" "strings" ) var ( //要发布到的主机信息 DistributeIp string DistributePort int32 DistributeUser string DistributePwd string DistributeRemotePath string DistributeLocalPath string //服务器的端口 ServerPort string //运行时配置 StartPathWindows string StartPathLinux string //rpc服务IP和端口 RpcServerIp string RpcServerPort string //mysql配置 MysqlIp string MysqlPort string MysqlDbName string //REDIS配置 RedisIp string RedisPort string RedisDb string RedisExpireTime int64 //项目名称 ProjectName string //kafka地址 //KafkaAddress string KafkaBrokers []string //kafka web日志主题 KafkaAccessLogTopic string KafkaParts int64 KafkaReply int64 //Sso配置 SsoServerNw string SsoServerWw string AuthCodeURI string AuthTokenURI string AuthLogoutURI string ClientIdNw string ClientIdWw string ClientSecretNw string ClientSecretWw string ResponseType string GrantType string RedirectURINw string RedirectURIWw string AccessTokenKey string IntranetIP string DiffTime int64 ) //cookie中的SessionId名称 var SessionId = "ds_sso_sessionid" //登录名到会话ID的前缀 var SearchSessionIdPrefix = "ds_sso_search_session_" // 判断所给路径文件/文件夹是否存在 func Exists(path string) bool { _, err := os.Stat(path) //os.Stat获取文件信息 if err != nil { if os.IsExist(err) { return true } return false } return true } func init() { //判断是不是单元测试,如果是的话,那么配置文件的路径需要加上一个. var configIniFile = "./Config/Config.ini" //判断文件不是存在 if !Exists(configIniFile) { configIniFile = "." + configIniFile } //再不存在,直接走物理路径 if !Exists(configIniFile) { configIniFile = "/usr/local/dsMin/dsBaseWeb/Config/Config.ini" } iniParser := IniParser{} if err := iniParser.Load(configIniFile); err != nil { fmt.Printf("try load config file[%s] error[%s]\n", configIniFile, err.Error()) return } //发布的远端IP DistributeIp = iniParser.GetString("distribute", "ip") //发布的远端端口 DistributePort = iniParser.GetInt32("distribute", "port") //发布的远端用户名 DistributeUser = iniParser.GetString("distribute", "user") //发布的远端密码 DistributePwd = iniParser.GetString("distribute", "pwd") //远端路径 DistributeRemotePath = iniParser.GetString("distribute", "remotePath") //本地路径 DistributeLocalPath = iniParser.GetString("distribute", "localPath") //rpc服务器IP RpcServerIp = iniParser.GetString("rpcServer", "ip") //rpc服务器的端口 RpcServerPort = iniParser.GetString("rpcServer", "port") //web服务器端口 ServerPort = iniParser.GetString("server", "port") //读取redis配置 RedisIp = iniParser.GetString("redis", "ip") RedisPort = iniParser.GetString("redis", "port") RedisDb = iniParser.GetString("redis", "db") RedisExpireTime = iniParser.GetInt64("redis", "expireTime") //项目名称 ProjectName = iniParser.GetString("project", "project_name") //change by zhangjun 2020-08-03 //kafka地址 //KafkaAddress = iniParser.GetString("kafka", "KafkaAddress") KafkaBrokers=strings.Split(iniParser.GetString("kafka", "brokers"),",") //kafka WEB日志主题 KafkaAccessLogTopic = iniParser.GetString("kafka", "KafkaAccessLogTopic") KafkaReply =iniParser.GetInt64("kafka", "replication") KafkaParts=iniParser.GetInt64("kafka", "partition") SsoServerNw = iniParser.GetString("sso", "ssoServerNw") SsoServerWw = iniParser.GetString("sso", "ssoServerWw") AuthCodeURI = iniParser.GetString("sso", "authCodeURI") AuthTokenURI = iniParser.GetString("sso", "authTokenURI") AuthLogoutURI = iniParser.GetString("sso", "authLogoutURI") ClientIdNw = iniParser.GetString("sso", "clientIdNw") ClientSecretNw = iniParser.GetString("sso", "clientSecretNw") ClientIdWw = iniParser.GetString("sso", "clientIdWw") ClientSecretWw = iniParser.GetString("sso", "clientSecretWw") ResponseType = iniParser.GetString("sso", "responseType") GrantType = iniParser.GetString("sso", "grantType") RedirectURINw = iniParser.GetString("sso", "redirectURINw") RedirectURIWw = iniParser.GetString("sso", "redirectURIWw") AccessTokenKey = iniParser.GetString("sso", "accessTokenKey") //mysql MysqlIp = iniParser.GetString("mysql", "ip") MysqlPort = iniParser.GetString("mysql", "port") MysqlDbName = iniParser.GetString("mysql", "db_name") DiffTime = iniParser.GetInt64("deleteXlsx", "diffTime") IntranetIP = iniParser.GetString("IP", "intranetIP") } type IniParser struct { confReader *ini.File // config reader } type IniParserError struct { errorInfo string } func (e *IniParserError) Error() string { return e.errorInfo } func (this *IniParser) Load(configFileName string) error { conf, err := ini.Load(configFileName) if err != nil { this.confReader = nil return err } this.confReader = conf return nil } func (this *IniParser) GetString(section string, key string) string { if this.confReader == nil { return "" } s := this.confReader.Section(section) if s == nil { return "" } return s.Key(key).String() } func (this *IniParser) GetInt32(section string, key string) int32 { if this.confReader == nil { return 0 } s := this.confReader.Section(section) if s == nil { return 0 } valueInt, _ := s.Key(key).Int() return int32(valueInt) } func (this *IniParser) GetUint32(section string, key string) uint32 { if this.confReader == nil { return 0 } s := this.confReader.Section(section) if s == nil { return 0 } valueInt, _ := s.Key(key).Uint() return uint32(valueInt) } func (this *IniParser) GetInt64(section string, key string) int64 { if this.confReader == nil { return 0 } s := this.confReader.Section(section) if s == nil { return 0 } valueInt, _ := s.Key(key).Int64() return valueInt } func (this *IniParser) GetUint64(section string, key string) uint64 { if this.confReader == nil { return 0 } s := this.confReader.Section(section) if s == nil { return 0 } valueInt, _ := s.Key(key).Uint64() return valueInt } func (this *IniParser) GetFloat32(section string, key string) float32 { if this.confReader == nil { return 0 } s := this.confReader.Section(section) if s == nil { return 0 } valueFloat, _ := s.Key(key).Float64() return float32(valueFloat) } func (this *IniParser) GetFloat64(section string, key string) float64 { if this.confReader == nil { return 0 } s := this.confReader.Section(section) if s == nil { return 0 } valueFloat, _ := s.Key(key).Float64() return valueFloat }