94 lines
2.6 KiB
Go
94 lines
2.6 KiB
Go
package config
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"strconv"
|
|
)
|
|
|
|
type AgentConfig struct {
|
|
ServerEndpoint string
|
|
NATSURL string
|
|
NATSUser string
|
|
NATSPass string
|
|
GetIPv4Endpoint string
|
|
GetIPv6Endpoint string
|
|
ZadminID int
|
|
}
|
|
|
|
type ServerConfig struct {
|
|
DatabaseURL string
|
|
NATSURL string
|
|
NATSUser string
|
|
NATSPass string
|
|
ListenAddress string
|
|
}
|
|
|
|
func LoadAgentConfig() (*AgentConfig, error) {
|
|
natsHost := getEnv("NATS_HOST", "localhost")
|
|
natsPort := getEnv("NATS_PORT", "4222")
|
|
natsUser := getEnv("NATS_USER", "agent-1")
|
|
natsPass := getEnv("NATS_PASS", "1")
|
|
natsURL := fmt.Sprintf("nats://%s:%s", natsHost, natsPort)
|
|
|
|
zadminEndpoint := getEnv("ZADMIN_ENDPOINT", "https://zadmin.mziesel.nl")
|
|
zadminIdString := getEnv("ZADMIN_ID", "1")
|
|
zadminID, err := strconv.Atoi(zadminIdString)
|
|
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
ip4Endpoint := getEnv("ZADMIN_IPV4_ENDPOINT", "https://ip4.mziesel.nl/json")
|
|
ip6Endpoint := getEnv("ZADMIN_IPV6_ENDPOINT", "https://ip6.mziesel.nl/json")
|
|
|
|
return &AgentConfig{
|
|
NATSURL: natsURL,
|
|
NATSUser: natsUser,
|
|
NATSPass: natsPass,
|
|
ServerEndpoint: zadminEndpoint,
|
|
GetIPv4Endpoint: ip4Endpoint,
|
|
GetIPv6Endpoint: ip6Endpoint,
|
|
ZadminID: zadminID,
|
|
}, nil
|
|
}
|
|
|
|
func LoadServerConfig() *ServerConfig {
|
|
// Load environment variables with defaults
|
|
dbHost := getEnv("POSTGRES_HOST", "localhost")
|
|
dbUser := getEnv("POSTGRES_USER", "zadmin_user")
|
|
dbPassword := getEnv("POSTGRES_PASSWORD", "s3cret!")
|
|
dbName := getEnv("POSTGRES_DB", "zadmin_dev")
|
|
dbPort := getEnv("POSTGRES_PORT", "5432")
|
|
dbSSLMode := getEnv("POSTGRES_SSLMODE", "disable")
|
|
dbTimeZone := getEnv("POSTGRES_TIMEZONE", "Europe/Amsterdam")
|
|
|
|
databaseURL := fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%s sslmode=%s TimeZone=%s",
|
|
dbHost, dbUser, dbPassword, dbName, dbPort, dbSSLMode, dbTimeZone)
|
|
|
|
natsHost := getEnv("NATS_HOST", "localhost")
|
|
natsPort := getEnv("NATS_PORT", "4222")
|
|
natsUser := getEnv("NATS_USER", "server")
|
|
natsPass := getEnv("NATS_PASS", "server")
|
|
natsURL := fmt.Sprintf("nats://%s:%s", natsHost, natsPort)
|
|
|
|
listenAddress := getEnv("LISTEN_ADDRESS", ":8080")
|
|
|
|
return &ServerConfig{
|
|
DatabaseURL: databaseURL,
|
|
NATSUser: natsUser,
|
|
NATSPass: natsPass,
|
|
NATSURL: natsURL,
|
|
ListenAddress: listenAddress,
|
|
}
|
|
}
|
|
|
|
// getEnv retrieves the value of the environment variable named by the key.
|
|
// It returns the default value if the variable is not present.
|
|
func getEnv(key, defaultValue string) string {
|
|
if value, exists := os.LookupEnv(key); exists {
|
|
return value
|
|
}
|
|
return defaultValue
|
|
}
|