68 lines
2 KiB
Go
68 lines
2 KiB
Go
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
|
|
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"),
|
|
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
|
|
}
|