feat: IMAP host/port in global settings

This commit is contained in:
Claus Lohmar 2026-07-10 11:44:31 +01:00
parent 6b00f081c0
commit 1ca2b028c8

20
main.go
View file

@ -62,6 +62,10 @@ type Settings struct {
User string `yaml:"user"` User string `yaml:"user"`
Sender string `yaml:"sender"` Sender string `yaml:"sender"`
} `yaml:"smtp"` } `yaml:"smtp"`
IMAP struct {
Host string `yaml:"host"`
Port int `yaml:"port"`
} `yaml:"imap"`
} }
// --- Config loading --- // --- Config loading ---
@ -258,9 +262,10 @@ func adminHandler(w http.ResponseWriter, r *http.Request) {
// If settings JSON format requested // If settings JSON format requested
if r.URL.Query().Get("format") == "settings" { if r.URL.Query().Get("format") == "settings" {
w.Header().Set("Content-Type", "application/json") w.Header().Set("Content-Type", "application/json")
jsonData := fmt.Sprintf(`{"company_name":"%s","language":"%s","timezone":"%s","smtp_host":"%s","smtp_port":"%d","smtp_user":"%s","smtp_sender":"%s"}`, jsonData := fmt.Sprintf(`{"company_name":"%s","language":"%s","timezone":"%s","smtp_host":"%s","smtp_port":"%d","smtp_user":"%s","smtp_sender":"%s","imap_host":"%s","imap_port":"%d"}`,
settings.Company.Name, settings.Company.Language, settings.Company.Timezone, settings.Company.Name, settings.Company.Language, settings.Company.Timezone,
settings.SMTP.Host, settings.SMTP.Port, settings.SMTP.User, settings.SMTP.Sender) settings.SMTP.Host, settings.SMTP.Port, settings.SMTP.User, settings.SMTP.Sender,
settings.IMAP.Host, settings.IMAP.Port)
w.Write([]byte(jsonData)) w.Write([]byte(jsonData))
return return
} }
@ -434,6 +439,8 @@ func globalSettingsSaveHandler(w http.ResponseWriter, r *http.Request) {
settings.SMTP.Port, _ = strconv.Atoi(r.FormValue("smtp_port")) settings.SMTP.Port, _ = strconv.Atoi(r.FormValue("smtp_port"))
settings.SMTP.User = r.FormValue("smtp_user") settings.SMTP.User = r.FormValue("smtp_user")
settings.SMTP.Sender = r.FormValue("smtp_sender") settings.SMTP.Sender = r.FormValue("smtp_sender")
settings.IMAP.Host = r.FormValue("imap_host")
settings.IMAP.Port, _ = strconv.Atoi(r.FormValue("imap_port"))
saveSettings(configDir, settings) saveSettings(configDir, settings)
@ -951,6 +958,13 @@ const adminHTML = `<!DOCTYPE html>
<div class="field"><label>Sender Email</label><input type="email" name="smtp_sender" value="{{.Settings.SMTP.Sender}}" placeholder="post@nextwks.eu"></div> <div class="field"><label>Sender Email</label><input type="email" name="smtp_sender" value="{{.Settings.SMTP.Sender}}" placeholder="post@nextwks.eu"></div>
</div> </div>
</div> </div>
<div class="card">
<h3>IMAP (Mail Client)</h3>
<div class="field-row">
<div class="field"><label>IMAP Host</label><input type="text" name="imap_host" value="{{.Settings.IMAP.Host}}" placeholder="imap.openxchange.eu"></div>
<div class="field"><label>IMAP Port</label><input type="number" name="imap_port" value="{{.Settings.IMAP.Port}}" placeholder="993"></div>
</div>
</div>
<div class="card"> <div class="card">
<h3>System (read-only)</h3> <h3>System (read-only)</h3>
<div class="info-grid"> <div class="info-grid">
@ -1051,6 +1065,8 @@ const adminHTML = `<!DOCTYPE html>
document.querySelector('[name="smtp_port"]').value = s.smtp_port || '587'; document.querySelector('[name="smtp_port"]').value = s.smtp_port || '587';
document.querySelector('[name="smtp_user"]').value = s.smtp_user || ''; document.querySelector('[name="smtp_user"]').value = s.smtp_user || '';
document.querySelector('[name="smtp_sender"]').value = s.smtp_sender || ''; document.querySelector('[name="smtp_sender"]').value = s.smtp_sender || '';
document.querySelector('[name="imap_host"]').value = s.imap_host || '';
document.querySelector('[name="imap_port"]').value = s.imap_port || '993';
} }
async function saveGlobal(e) { async function saveGlobal(e) {