mirror of
https://github.com/Dvorinka/Containr.git
synced 2026-06-04 04:22:57 +00:00
85 lines
1.9 KiB
Go
85 lines
1.9 KiB
Go
package config
|
|
|
|
import (
|
|
"os"
|
|
"strconv"
|
|
)
|
|
|
|
type Config struct {
|
|
Environment string
|
|
Port string
|
|
DatabaseURL string
|
|
RedisURL string
|
|
JWTSecret string
|
|
CORS CORSConfig
|
|
Proxmox ProxmoxConfig
|
|
}
|
|
|
|
type CORSConfig struct {
|
|
AllowedOrigins []string
|
|
}
|
|
|
|
type ProxmoxConfig struct {
|
|
BaseURL string
|
|
Username string
|
|
Password string
|
|
TokenID string
|
|
Token string
|
|
}
|
|
|
|
func Load() *Config {
|
|
cfg := &Config{
|
|
Environment: getEnv("ENVIRONMENT", "development"),
|
|
Port: getEnv("PORT", "8080"),
|
|
DatabaseURL: getEnv("DATABASE_URL", "postgres://containr:password@localhost:5432/containr?sslmode=disable"),
|
|
RedisURL: getEnv("REDIS_URL", "redis://localhost:6379"),
|
|
JWTSecret: getEnv("JWT_SECRET", "your-secret-key-change-in-production"),
|
|
CORS: CORSConfig{
|
|
AllowedOrigins: []string{
|
|
"http://localhost:3000", // Vite dev server
|
|
"http://localhost:5173", // Alternative Vite port
|
|
},
|
|
},
|
|
Proxmox: ProxmoxConfig{
|
|
BaseURL: getEnv("PROXMOX_BASE_URL", ""),
|
|
Username: getEnv("PROXMOX_USERNAME", ""),
|
|
Password: getEnv("PROXMOX_PASSWORD", ""),
|
|
TokenID: getEnv("PROXMOX_TOKEN_ID", ""),
|
|
Token: getEnv("PROXMOX_TOKEN", ""),
|
|
},
|
|
}
|
|
|
|
// Add production origins if in production
|
|
if cfg.Environment == "production" {
|
|
cfg.CORS.AllowedOrigins = append(cfg.CORS.AllowedOrigins,
|
|
getEnv("FRONTEND_URL", "https://your-domain.com"))
|
|
}
|
|
|
|
return cfg
|
|
}
|
|
|
|
func getEnv(key, defaultValue string) string {
|
|
if value := os.Getenv(key); value != "" {
|
|
return value
|
|
}
|
|
return defaultValue
|
|
}
|
|
|
|
func getEnvAsBool(key string, defaultValue bool) bool {
|
|
if value := os.Getenv(key); value != "" {
|
|
if parsed, err := strconv.ParseBool(value); err == nil {
|
|
return parsed
|
|
}
|
|
}
|
|
return defaultValue
|
|
}
|
|
|
|
func getEnvAsInt(key string, defaultValue int) int {
|
|
if value := os.Getenv(key); value != "" {
|
|
if parsed, err := strconv.Atoi(value); err == nil {
|
|
return parsed
|
|
}
|
|
}
|
|
return defaultValue
|
|
}
|