56 lines
1.5 KiB
Go
56 lines
1.5 KiB
Go
package config
|
|
|
|
import (
|
|
"os"
|
|
|
|
"github.com/joho/godotenv"
|
|
)
|
|
|
|
type Config struct {
|
|
DBHost string
|
|
DBPort string
|
|
DBUser string
|
|
DBPassword string
|
|
DBName string
|
|
Port string
|
|
UseEmbedded bool
|
|
JWTSecret string
|
|
AdminUser string
|
|
AdminPassword string
|
|
MailDataDir string
|
|
PostqueuePath string
|
|
PostsuperPath string
|
|
DovecotQuotaCmd string
|
|
JournalctlPath string
|
|
RspamdAPI 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"),
|
|
Port: getEnv("PORT", "8080"),
|
|
UseEmbedded: getEnv("USE_EMBEDDED", "true") == "true",
|
|
JWTSecret: getEnv("JWT_SECRET", "change-this-secret"),
|
|
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"),
|
|
}
|
|
}
|
|
|
|
func getEnv(key, defaultValue string) string {
|
|
if value := os.Getenv(key); value != "" {
|
|
return value
|
|
}
|
|
return defaultValue
|
|
}
|