83 lines
1.8 KiB
Go
83 lines
1.8 KiB
Go
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
|
|
}
|
|
}
|