package config import ( "encoding/json" "fmt" "git.finogeeks.club/base/apm" "github.com/caarlos0/env/v6" ) // 例子 type Config struct { HttpPort string `env:"HTTP_PORT" envDefault:"8080"` GrpcPort string `env:"GRPC_PORT" envDefault:"9090"` ConsulAddr string `env:"" envDefault:""` ConsulHttpIp string `env:"CONSUL_HTTP_IP" envDefault:""` ConsulPort string `env:"CONSUL_PORT" envDefault:"8500"` ConsulTag string `env:"CONSUL_TAG" envDefault:"mop-finstore"` //consul tag Mode string `env:"MODE" envDefault:""` MongoURL string `env:"MONGO_URL" envDefault:"mongodb://localhost:27017"` //mongo地址 DBName string `env:"DB_NAME" envDefault:"mop-account-system"` LogMode string `env:"LOG_MODE" envDefault:"debug"` HttpMode string `env:"HTTP_MODE" envDefault:"debug"` KongMode string `env:"KONG_MODE" envDefault:"use_db"` KongUrlPrefix string `env:"KONG_URL_PREFIX" envDefault:"http://gateway.gateway:8001"` CommonVerifyCode string `env:"COMMON_VERIFY_CODE" envDefault:"185890"` OrganExpiredM string `env:"ORGAN_EXPIRED_MONTH" envDefault:"12"` //企业过期时间 单位:month RedisAddr string `env:"REDIS_ADDR" envDefault:"redis://redis:6379/11"` RedisPassword string `env:"REDIS_PASSWORD" envDefault:""` RedisMode string `env:"REDIS_MODE" envDefault:"single"` ResetPassword string `env:"RESET_PASSWORD" envDefault:"123Abc"` OperAdminName string `env:"OPER_ADMIN_NAME" envDefault:"admin"` OperAdminAccount string `env:"OPER_ADMIN_ACCOUNT" envDefault:"admin"` OperAdminPhone string `env:"OPER_ADMIN_PHONE" envDefault:""` OperAdminPwd string `env:"OPER_ADMIN_PASSWORD" envDefault:"123Abc"` DeviceSecurityUrlPrefix string `env:"DEVICE_SECURITY_URL_PREFIX" envDefault:"http://mop-device-security:8080"` TokenExpireTime int `env:"TOKEN_EXPIRE_TIME" envDefault:"1036800"` MaxRedisClientNum int `env:"MAX_REDIS_CLIENT_NUM" envDefault:"100"` OperAdminEmail string `env:"OPER_ADMIN_EMAIL" envDefault:"admin@open.com"` KafkaAddr string `env:"KAFKA_ADDR" envDefault:"kafka-service.kafka:9093"` KafkaVersion string `env:"KAFKA_VERSION" envDefault:"2.3.0"` DevelopLevel string `env:"DEVELOP_LEVEL" envDefault:"release"` VerifyCodeUrlPrefix string `env:"VERIFY_CODE_SERVER_HOST" envDefault:"http://mop-verify-code-gateway:8080"` VerifyCodeServerHost string `env:"VERIFY_CODE_URL_PREFIX" envDefault:"http://mop-verify-code-server:8080"` SetLoginFirstServerHost string `env:"SET_LOGIN_FIRST_HOST" envDefault:"http://mop-fast-trial-manager:8080"` DelPhoneLimitUrl string `env:"DEL_PHONE_CODE_LIMIT_URL" envDefault:"/api/v1/mop/finogeeks-verify-code-server/phone-limit"` OperateLogTopic string `env:"OPERATE_LOG_TOPIC" envDefault:"mop_operation_log"` NotifyDataTopic string `env:"NOTIFY_DATA_TOPIC" envDefault:"mop_notify_data_topic"` CompanyUpdateTopic string `env:"COMPANY_UPDATE_TOPIC" envDefault:"mop_purchasing_rights_manager_topic"` ZipKinUrl string `env:"ZIPKIN_URL" envDefault:""` ServerName string `env:"SERVER_NAME" envDefault:"mop-account-system"` PwdErrCountLimit int `env:"PWD_ERR_COUNT_LIMITE" envDefault:"5"` PwdErrTimeLimit int `env:"PWD_ERR_TIME_LIMIT" envDefault:"86400"` //密码错误,账号封禁时间 单位:秒 VerifyCodeType string `env:"VERIFY_CODE_TYPE" envDefault:"mop"` PerAccountExpireMon int `env:"PER_ACCOUNT_EXPIRE_MON" envDefault:"12"` NotifyFinstoreInfoUpUrl string `env:"FINSTORE_NOTIFY_INFO_URL" envDefault:"http://mop-app-manage-svr:8080/api/v1/mop/finstore/notify"` //数量限制 AllowApplyIdNum int `env:"ALLOW_APPLY_ID_NUM" envDefault:"10"` AllowBindNum int `env:"ALLOW_BIND_NUM" envDefault:"10"` AllowMemNum int `env:"ALLOW_MEM_NUM" envDefault:"99"` PerAllowAppIdNum int `env:"PER_ALLOW_APPID_NUM" envDefault:"2"` PerAllowBindNum int `env:"PER_ALLOW_BIND_NUM" envDefault:"1"` PerAllowMemNum int `env:"PER_ALLOW_MEM_NUM" envDefault:"0"` Env string `env:"ENV" envDefault:"mop-uat"` //mop-uat、mop-fdep、mop-private、mop-community //redis RedisSentinelAddr string `env:"REDIS_SENTINEL_ADDR" envDefault:"redis://redis-cluster-redis-cluster-sentinel.redis-cluster:26379/"` RedisMasterName string `env:"REDIS_MASTER_NAME" envDefault:"mymaster"` RedisDatabase int `env:"REDIS_INDEX" envDefault:"11"` RedisSentinelPassword string `env:"REDIS_SENTINEL_PASSWORD" envDefault:""` RightUrlPrefix string `env:"RIGHT_UTL_PREFIX" envDefault:"http://mop-purchasing-rights-manager.mop-finstore:8080"` OrderRightsModifyURL string `env:"ORDER_RIGHTS_MODIFY_URL" envDefault:"http://mop-purchasing-rights-manager:8080/api/v1/mop/mop-purchasing-rights-manager/rights/modify"` MysqlUserName string `env:"MYSQL_USER_NAME" envDefault:"root"` MysqlPassword string `env:"MYSQL_PASSWORD" envDefault:""` MysqlURL string `env:"MYSQL_URL" envDefault:"localhost"` MysqlPort int `env:"MYSQL_PORT" envDefault:"3306"` DBMode string `env:"DB_MODE" envDefault:"mongo"` MysqlAddr string `env:"MYSQL_ADDR" envDefault:""` SkyWalkingUrl string `env:"SKYWALKING_URL" envDefault:"127.0.0.1:11800"` SkyWalkingEnable bool `env:"SKYWALKING_ENABLE" envDefault:"false"` SkyWalkingPartitions uint32 `env:"SKYWALKING_PARTITIONS" envDefault:"1"` AuditManageHost string `env:"AUDIT_MANAGE_HOST" envDefault:"http://mop-audit-manage-svr:8080"` } var Cfg *Config func init() { //Cfg = getConfig() Cfg = new(Config) if err := env.Parse(Cfg); err != nil { fmt.Printf("%+v\n", err) panic(err) } if Cfg.ConsulHttpIp != "" { Cfg.ConsulAddr = Cfg.ConsulHttpIp + ":" + Cfg.ConsulPort } else { Cfg.ConsulAddr = "" } b, _ := json.MarshalIndent(Cfg, "", " ") fmt.Println("config:", string(b)) apm.BuildApmClient(apm.CreateBuild(Cfg.SkyWalkingUrl, Cfg.ServerName, Cfg.SkyWalkingPartitions, Cfg.SkyWalkingEnable)) } func GetConfig() *Config { return Cfg } //func getConfig() (cfg *Config) { // config := &Config{} // config.HttpPort = getEnv("HTTP_PORT", "8080") //服务端口 // config.GrpcPort = getEnv("GRPC_PORT", "9090") //grpc服务端口 // config.ConsulHttpIp = getEnv("CONSUL_HTTP_IP", "") // config.ConsulPort = getEnv("CONSUL_PORT", "8500") // if config.ConsulHttpIp != "" { // config.ConsulAddr = config.ConsulHttpIp + ":" + config.ConsulPort // } else { // config.ConsulAddr = "" // } // config.ConsulTag = getEnv("CONSUL_TAG", "mop-finstore") //consul tag // config.Mode = getEnv("MODE", "") //路由模式 // config.MongoURL = getEnv("MONGO_URL", "mongodb://localhost:27017") //mongo地址 // config.DBName = getEnv("DB_NAME", "mop-applets-ecol-account") //db名字 // config.LogMode = getEnv("LOG_MODE", "debug") //日志级别 // config.HttpMode = getEnv("HTTP_MODE", "debug") //http的mode 分"debug" "test" "release" // config.KongUrlPrefix = getEnv("KONG_URL_PREFIX", "http://gateway.gateway:8001") // config.OrganExpiredM = getEnv("ORGAN_EXPIRED_MONTH", "12") //企业过期时间 // config.CommonVerifyCode = getEnv("COMMON_VERIFY_CODE", "185890") //万能验证码,为空的时候不能使用该验证码 // config.RedisAddr = getEnv("REDIS_URL", "redis://redis:6379/11") // config.RedisPassword = getEnv("REDIS_PASSWORD", "") // config.RedisMode = getEnv("REDIS_MODE", "single") //singel:单点模式,sentinel:哨兵模式 // config.ResetPassword = getEnv("RESET_PASSWORD", "123Abc") //重置成员密码 // config.OperAdminName = getEnv("OPER_ADMIN_NAME", "admin") //运营方管理员姓名 // config.OperAdminAccount = getEnv("OPER_ADMIN_ACCOUNT", "admin") //运营方管理员账号 // config.OperAdminPhone = getEnv("OPER_ADMIN_PHONE", "") //运营方管理员电话 // config.OperAdminPwd = getEnv("OPER_ADMIN_PASSWORD", "123Abc") //运营方管理员密码 // config.DeviceSecurityUrlPrefix = getEnv("DEVICE_SECURITY_URL_PREFIX", "http://mop-device-security:8080") // config.TokenExpireTime = getEnvNum("TOKEN_EXPIRE_TIME", 86400*14) // config.MaxRedisClientNum = getEnvNum("MAX_REDIS_CLIENT_NUM", 100) // config.OperAdminEmail = getEnv("OPER_ADMIN_EMAIL", "admin@open.com") // config.KafkaAddr = getEnv("KAFKA_ADDR", "kafka-service.kafka:9093") // config.DevelopLevel = getEnv("DEVELOP_LEVEL", "release") // config.VerifyCodeServerHost = getEnv("VERIFY_CODE_SERVER_HOST", "http://mop-verify-code-server:8080") // config.VerifyCodeUrlPrefix = getEnv("VERIFY_CODE_URL_PREFIX", "http://mop-verify-code-gateway:8080") // config.DelPhoneLimitUrl = getEnv("DEL_PHONE_CODE_LIMIT_URL", "/api/v1/mop/finogeeks-verify-code-server/phone-limit") // config.OperateLogTopic = getEnv("OPERATE_LOG_TOPIC", "mop_operation_log") // config.NotifyDataTopic = getEnv("NOTIFY_DATA_TOPIC", "mop_notify_data_topic") // config.ZipKinUrl = getEnv("ZIPKIN_URL", "") // config.ServerName = getEnv("SERVER_NAME", "mop-account-system") // config.PwdErrCountLimit = getEnvNum("PWD_ERR_COUNT_LIMITE", 5) // config.PwdErrTimeLimit = getEnvNum("PWD_ERR_TIME_LIMIT", 24*60*60) // config.VerifyCodeType = getEnv("VERIFY_CODE_TYPE", "mop") // config.PerAccountExpireMon = getEnvNum("PER_ACCOUNT_EXPIRE_MON", 12) // // config.NotifyFinstoreInfoUpUrl = getEnv("FINSTORE_NOTIFY_INFO_URL", "http://mop-app-manage-svr:8080/api/v1/mop/finstore/notify") // //私有化版本以license为准、saas版以环境变量为准 // config.AllowApplyIdNum = getEnvNum("ALLOW_APPLY_ID_NUM", 10) //初始允许企业创建的最大appid数量 // config.AllowBindNum = getEnvNum("ALLOW_BIND_NUM", 10) //初始允许企业创建的最大应用数量 // config.AllowMemNum = getEnvNum("ALLOW_MEM_NUM", 99) //初始允许企业创建的最大成员数量 // config.PerAllowAppIdNum = getEnvNum("PER_ALLOW_APPID_NUM", 2) //初始个人mock企业创建的最大appid数量 // config.PerAllowBindNum = getEnvNum("PER_ALLOW_BIND_NUM", 1) //初始个人mock企业创建的最大应用数量 // config.PerAllowMemNum = getEnvNum("PER_ALLOW_MEM_NUM", 0) //初始个人mocke企业申请的最大成员数量 // // config.RedisSentinelAddr = getEnv("REDIS_SENTINEL_ADDR", "redis://redis-cluster-redis-cluster-sentinel.redis-cluster:26379/") // config.RedisMasterName = getEnv("REDIS_MASTER_NAME", "mymaster") // config.RedisDatabase = getEnvNum("REDIS_INDEX", 11) // config.RedisSentinelPassword = getEnv("REDIS_SENTINEL_PASSWORD", "") // // config.Env = getEnv("ENV", "mop-uat") //mop-uat、mop-fdep、mop-private // config.RightUrlPrefix = getEnv("RIGHT_UTL_PREFIX", "http://mop-purchasing-rights-manager.mop-finstore:8080") // fmt.Printf("config:%+v\n", config) // return config //} // //func getEnv(key, fallback string) string { // if value, ok := os.LookupEnv(key); ok { // return value // } // return fallback //} // //func getEnvNum(key string, fallback int) int { // if value, ok := os.LookupEnv(key); ok { // num, err := strconv.Atoi(value) // if err != nil { // panic("env param is not int") // } // return num // } // return fallback //}