Files
wol-sol-agent/config/config.go
2025-11-11 17:19:49 +01:00

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
}
}