feat(sol): UDP + HTTP listener
This commit is contained in:
82
config/config.go
Normal file
82
config/config.go
Normal file
@@ -0,0 +1,82 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"os"
|
||||
"strconv"
|
||||
|
||||
"git.secnex.io/secnex/masterlog"
|
||||
)
|
||||
|
||||
const (
|
||||
// Default ports
|
||||
DefaultSOLPort = 9999
|
||||
DefaultAPIPort = 8080
|
||||
)
|
||||
|
||||
// Config holds the application configuration
|
||||
type Config struct {
|
||||
SOLPort int
|
||||
APIPort int
|
||||
APIEnabled bool
|
||||
AuthUser string
|
||||
AuthPass string
|
||||
}
|
||||
|
||||
// Load loads configuration from environment variables
|
||||
func Load() *Config {
|
||||
cfg := &Config{
|
||||
SOLPort: getPortFromEnv("SOL_PORT", DefaultSOLPort),
|
||||
APIPort: getPortFromEnv("API_PORT", DefaultAPIPort),
|
||||
APIEnabled: getBoolFromEnv("API_ENABLED", false),
|
||||
AuthUser: os.Getenv("SOL_AUTH_USER"),
|
||||
AuthPass: os.Getenv("SOL_AUTH_PASSWORD"),
|
||||
}
|
||||
|
||||
if cfg.AuthUser == "" || cfg.AuthPass == "" {
|
||||
masterlog.Error("Environment variables not set", map[string]interface{}{
|
||||
"variables": "SOL_AUTH_USER, SOL_AUTH_PASSWORD",
|
||||
})
|
||||
return nil
|
||||
}
|
||||
|
||||
return cfg
|
||||
}
|
||||
|
||||
func getPortFromEnv(envVar string, defaultPort int) int {
|
||||
if portStr := os.Getenv(envVar); portStr != "" {
|
||||
if port, err := strconv.Atoi(portStr); err == nil && port > 0 && port < 65536 {
|
||||
return port
|
||||
} else {
|
||||
masterlog.Error("Invalid environment variable value", map[string]interface{}{
|
||||
"error": err,
|
||||
"variable": envVar,
|
||||
"value": portStr,
|
||||
"default": defaultPort,
|
||||
"type": "port",
|
||||
})
|
||||
}
|
||||
}
|
||||
return defaultPort
|
||||
}
|
||||
|
||||
func getBoolFromEnv(envVar string, defaultValue bool) bool {
|
||||
if val := os.Getenv(envVar); val != "" {
|
||||
if val == "true" || val == "TRUE" || val == "True" || val == "1" {
|
||||
return true
|
||||
} else {
|
||||
masterlog.Error("Invalid environment variable value", map[string]interface{}{
|
||||
"variable": envVar,
|
||||
"value": val,
|
||||
"type": "boolean",
|
||||
})
|
||||
}
|
||||
return false
|
||||
} else {
|
||||
masterlog.Error("Invalid environment variable value", map[string]interface{}{
|
||||
"variable": envVar,
|
||||
"value": val,
|
||||
"type": "boolean",
|
||||
})
|
||||
return false
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user