mirror of
https://github.com/Dvorinka/Containr.git
synced 2026-06-03 20:12:58 +00:00
feat: initial implementation of container management platform
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user