package config import ( "os" "github.com/joho/godotenv" ) type Config struct { DBHost string DBPort string DBUser string DBPassword string DBName string Bind string Port string UseEmbedded bool JWTSecret string AdminUser string AdminPassword string MailDataDir string PostqueuePath string PostsuperPath string DovecotQuotaCmd string JournalctlPath string RspamdAPI string SMTPHost string SMTPPort string SMTPUser string SMTPPassword string SMTPFrom string BaseURL string } func Load() *Config { godotenv.Load("backend/.env") return &Config{ DBHost: getEnv("DB_HOST", "localhost"), DBPort: getEnv("DB_PORT", "3306"), DBUser: getEnv("DB_USER", "mailadmin"), DBPassword: getEnv("DB_PASSWORD", ""), DBName: getEnv("DB_NAME", "mailserver"), Bind: getEnv("BIND", "0.0.0.0"), Port: getEnv("PORT", "8080"), UseEmbedded: getEnv("USE_EMBEDDED", "true") == "true", JWTSecret: getEnv("JWT_SECRET", "change-this-secret-in-production"), AdminUser: getEnv("ADMIN_USER", ""), AdminPassword: getEnv("ADMIN_PASSWORD", ""), MailDataDir: getEnv("MAIL_DATA_DIR", "/var/vmail"), PostqueuePath: getEnv("POSTQUEUE_PATH", "/usr/sbin/postqueue"), PostsuperPath: getEnv("POSTSUPER_PATH", "/usr/sbin/postsuper"), DovecotQuotaCmd: getEnv("DOVECOT_QUOTA_CMD", "/usr/bin/doveadm"), JournalctlPath: getEnv("JOURNALCTL_PATH", "/usr/bin/journalctl"), RspamdAPI: getEnv("RSPAMD_API", "http://127.0.0.1:11334"), SMTPHost: getEnv("SMTP_HOST", "localhost"), SMTPPort: getEnv("SMTP_PORT", "587"), SMTPUser: getEnv("SMTP_USER", ""), SMTPPassword: getEnv("SMTP_PASSWORD", ""), SMTPFrom: getEnv("SMTP_FROM", "noreply@localhost"), BaseURL: getEnv("BASE_URL", "http://localhost:8080"), } } func getEnv(key, defaultValue string) string { if value := os.Getenv(key); value != "" { return value } return defaultValue }