57 lines
1.4 KiB
Go
57 lines
1.4 KiB
Go
package backend
|
|
|
|
import (
|
|
"encoding/json"
|
|
"os"
|
|
"strings"
|
|
)
|
|
|
|
// Cfg ist die globale App-Konfiguration (config.json). Enthaelt NUR
|
|
// App-/Weiterleitungs-Einstellungen. Die Umzugs-Konten (Quelle->Ziel) leben
|
|
// in der DB (Tabelle accounts) und werden im Browser gepflegt.
|
|
var Cfg Config
|
|
|
|
type Config struct {
|
|
Bind string `json:"bind"`
|
|
Port string `json:"port"`
|
|
AdminUser string `json:"admin_user"`
|
|
AdminPass string `json:"admin_pass"`
|
|
DBPath string `json:"db_path"`
|
|
MboxRoot string `json:"mbox_root"`
|
|
MboxCompression string `json:"mbox_compression"`
|
|
ForwardSMTP SMTPConfig `json:"forward_smtp"`
|
|
}
|
|
|
|
// SMTPConfig ist NUR fuer das manuelle Weiterleiten einzelner Mails aus dem
|
|
// Viewer. Der Umzug selbst nutzt NIEMALS SMTP, sondern IMAP APPEND.
|
|
type SMTPConfig struct {
|
|
Host string `json:"host"`
|
|
Port int `json:"port"`
|
|
User string `json:"user"`
|
|
Pass string `json:"pass"`
|
|
From string `json:"from"`
|
|
}
|
|
|
|
func LoadConfig(path string) error {
|
|
b, err := os.ReadFile(path)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if err := json.Unmarshal(b, &Cfg); err != nil {
|
|
return err
|
|
}
|
|
if Cfg.Bind == "" {
|
|
Cfg.Bind = "127.0.0.1"
|
|
}
|
|
if Cfg.Port == "" {
|
|
Cfg.Port = "8087"
|
|
}
|
|
if Cfg.MboxRoot == "" {
|
|
Cfg.MboxRoot = "./backup"
|
|
}
|
|
Cfg.MboxCompression = strings.ToLower(strings.TrimSpace(Cfg.MboxCompression))
|
|
if Cfg.MboxCompression == "" {
|
|
Cfg.MboxCompression = "none"
|
|
}
|
|
return nil
|
|
}
|