Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 

143 linhas
4.7 KiB

  1. package config
  2. import (
  3. "fmt"
  4. "os"
  5. "time"
  6. )
  7. type Config struct {
  8. HTTPAddr string
  9. WSAddr string
  10. MQTTHost string
  11. MQTTUser string
  12. MQTTPass string
  13. MQTTClientID string
  14. KafkaURL string
  15. DBHost string
  16. DBUser string
  17. DBPass string
  18. DBName string
  19. HTTPClientID string
  20. ClientSecret string
  21. HTTPUsername string
  22. HTTPPassword string
  23. HTTPAudience string
  24. ConfigPath string
  25. APIBaseURL string
  26. APIAuthURL string
  27. APIAuthREALM string
  28. // TLSInsecureSkipVerify enables skipping TLS cert verification (e.g. for dev); default false.
  29. TLSInsecureSkipVerify bool
  30. }
  31. func getEnv(key, def string) string {
  32. if v := os.Getenv(key); v != "" {
  33. return v
  34. }
  35. return def
  36. }
  37. func getEnvBool(key string, defaultVal bool) bool {
  38. switch os.Getenv(key) {
  39. case "1", "true", "TRUE", "yes":
  40. return true
  41. case "0", "false", "FALSE", "no":
  42. return false
  43. }
  44. return defaultVal
  45. }
  46. func getEnvPanic(key string) string {
  47. if v := os.Getenv(key); v != "" {
  48. return v
  49. }
  50. panic(fmt.Sprintf("environment variable %s is not set", key))
  51. }
  52. func Load() *Config {
  53. return &Config{
  54. HTTPAddr: getEnv("HTTP_HOST_PATH", "0.0.0.0:1902"),
  55. WSAddr: getEnv("HTTPWS_HOST_PATH", "0.0.0.0:8088"),
  56. MQTTHost: getEnv("MQTT_HOST", "192.168.1.101"),
  57. MQTTUser: getEnvPanic("MQTT_USERNAME"),
  58. MQTTPass: getEnvPanic("MQTT_PASSWORD"),
  59. MQTTClientID: getEnvPanic("MQTT_CLIENT_ID"),
  60. KafkaURL: getEnv("KAFKA_URL", "127.0.0.1:9092"),
  61. DBHost: getEnv("DBHost", "127.0.0.1"),
  62. DBUser: getEnvPanic("DBUser"),
  63. DBPass: getEnvPanic("DBPass"),
  64. DBName: getEnv("DBName", "go_crud_db"),
  65. HTTPClientID: getEnvPanic("HTTPClientID"),
  66. ClientSecret: getEnvPanic("ClientSecret"),
  67. HTTPUsername: getEnvPanic("HTTPUsername"),
  68. HTTPPassword: getEnvPanic("HTTPPassword"),
  69. HTTPAudience: getEnvPanic("HTTPAudience"),
  70. ConfigPath: getEnv("CONFIG_PATH", "/app/cmd/server/config.json"),
  71. APIBaseURL: getEnv("API_BASE_URL", "https://10.251.0.30:5050"),
  72. APIAuthREALM: getEnv("API_AUTH_REALM", "realms/API.Server.local/protocol/openid-connect/token"),
  73. TLSInsecureSkipVerify: getEnvBool("TLS_INSECURE_SKIP_VERIFY", false),
  74. }
  75. }
  76. func LoadDecoder() *Config {
  77. return &Config{
  78. KafkaURL: getEnv("KAFKA_URL", "127.0.0.1:9092"),
  79. }
  80. }
  81. func LoadServer() *Config {
  82. return &Config{
  83. KafkaURL: getEnv("KAFKA_URL", "127.0.0.1:9092"),
  84. HTTPAddr: getEnv("HTTP_HOST_PATH", "0.0.0.0:1902"),
  85. DBHost: getEnv("DBHost", "127.0.0.1"),
  86. DBUser: getEnvPanic("DBUser"),
  87. DBPass: getEnvPanic("DBPass"),
  88. DBName: getEnv("DBName", "go_crud_db"),
  89. HTTPClientID: getEnvPanic("HTTPClientID"),
  90. ClientSecret: getEnvPanic("ClientSecret"),
  91. HTTPUsername: getEnvPanic("HTTPUsername"),
  92. HTTPPassword: getEnvPanic("HTTPPassword"),
  93. HTTPAudience: getEnvPanic("HTTPAudience"),
  94. ConfigPath: getEnv("CONFIG_PATH", "/app/cmd/server/config.json"),
  95. APIBaseURL: getEnv("API_BASE_URL", "https://10.251.0.30:5050"),
  96. APIAuthURL: getEnv("API_AUTH_URL", "https://10.251.0.30:10002"),
  97. APIAuthREALM: getEnv("API_AUTH_REALM", "realms/API.Server.local/protocol/openid-connect/token"),
  98. TLSInsecureSkipVerify: getEnvBool("TLS_INSECURE_SKIP_VERIFY", false),
  99. }
  100. }
  101. func LoadBridge() *Config {
  102. return &Config{
  103. KafkaURL: getEnv("KAFKA_URL", "127.0.0.1:9092"),
  104. MQTTHost: getEnv("MQTT_HOST", "192.168.1.101"),
  105. MQTTUser: getEnvPanic("MQTT_USERNAME"),
  106. MQTTPass: getEnvPanic("MQTT_PASSWORD"),
  107. MQTTClientID: getEnvPanic("MQTT_CLIENT_ID"),
  108. }
  109. }
  110. func LoadLocation() *Config {
  111. return &Config{
  112. KafkaURL: getEnv("KAFKA_URL", "127.0.0.1:9092"),
  113. TLSInsecureSkipVerify: getEnvBool("TLS_INSECURE_SKIP_VERIFY", false),
  114. HTTPClientID: getEnvPanic("HTTPClientID"),
  115. ClientSecret: getEnvPanic("ClientSecret"),
  116. HTTPUsername: getEnvPanic("HTTPUsername"),
  117. HTTPPassword: getEnvPanic("HTTPPassword"),
  118. HTTPAudience: getEnvPanic("HTTPAudience"),
  119. APIAuthURL: getEnv("API_AUTH_URL", "https://10.251.0.30:10002"),
  120. APIBaseURL: getEnv("API_BASE_URL", "https://10.251.0.30:5050"),
  121. APIAuthREALM: getEnv("API_AUTH_REALM", "realms/API.Server.local/protocol/openid-connect/token"),
  122. }
  123. }
  124. const (
  125. SMALL_CHANNEL_SIZE = 200
  126. MEDIUM_CHANNEL_SIZE = 500
  127. LARGE_CHANNEL_SIZE = 2000
  128. SMALL_TICKER_INTERVAL = 1 * time.Second
  129. MEDIUM_TICKER_INTERVAL = 2 * time.Second
  130. LARGE_TICKER_INTERVAL = 5 * time.Second
  131. )