Fix: Wizard Step 5 — korrekte Fehlermeldungen bei SSL-Fehler
installer.sh / mailwolt-apply-domains: - State-Dateien jetzt korrekt pro Domain: "done" nur wenn LE-Cert existiert, sonst "error" — verhindert grüne Checkmarks bei fehlgeschlagenem certbot - mail-Domain: "skip" statt fälschlich "done" (certbot läuft nicht für MX im Wizard) - sleep 6 nur wenn Cert ausgestellt wurde (nginx-HTTPS-Switch nötig) WizardDomains.php: - Bei frühem DNS-Abbruch: verbleibende "running"-Domains auf "error" setzen statt ewig als "Wird registriert…" hängen zu bleiben Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>main v1.1.262
parent
72973e3ca5
commit
8a654bef89
|
|
@ -50,6 +50,13 @@ class WizardDomains extends Command
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$allOk) {
|
if (!$allOk) {
|
||||||
|
// Domains die noch auf "running" stehen wurden nie verarbeitet → error
|
||||||
|
foreach (['ui', 'mail', 'webmail'] as $key) {
|
||||||
|
$status = trim((string) @file_get_contents(self::STATE_DIR . "/{$key}"));
|
||||||
|
if ($status === 'running') {
|
||||||
|
file_put_contents(self::STATE_DIR . "/{$key}", 'error');
|
||||||
|
}
|
||||||
|
}
|
||||||
file_put_contents(self::STATE_DIR . '/done', '0');
|
file_put_contents(self::STATE_DIR . '/done', '0');
|
||||||
Setting::set('ssl_configured', '0');
|
Setting::set('ssl_configured', '0');
|
||||||
return self::SUCCESS;
|
return self::SUCCESS;
|
||||||
|
|
|
||||||
31
installer.sh
31
installer.sh
|
|
@ -778,20 +778,37 @@ CONF
|
||||||
fi
|
fi
|
||||||
) > "${NGINX_SITE}"
|
) > "${NGINX_SITE}"
|
||||||
|
|
||||||
# State-Dateien VOR dem nginx-Switch schreiben:
|
# State-Dateien schreiben — korrekt pro Domain, nicht pauschal "done"
|
||||||
# Browser-Poll (alle 2s) liest done=1 → Polling stoppt → "Zum Login" erscheint.
|
|
||||||
# Danach 6s sleep → nginx switchet auf HTTPS → User klickt Link → funktioniert.
|
|
||||||
STATE_DIR="/var/lib/mailwolt/wizard"
|
STATE_DIR="/var/lib/mailwolt/wizard"
|
||||||
if [ -d "${STATE_DIR}" ]; then
|
if [ -d "${STATE_DIR}" ]; then
|
||||||
for k in ui mail webmail; do
|
# UI: done nur wenn LE-Cert tatsächlich vorhanden, sonst error
|
||||||
[ -f "${STATE_DIR}/${k}" ] && printf "done" > "${STATE_DIR}/${k}"
|
if [ -f "${STATE_DIR}/ui" ]; then
|
||||||
done
|
if [ "${UI_HAS_CERT}" = "1" ]; then
|
||||||
|
printf "done" > "${STATE_DIR}/ui"
|
||||||
|
else
|
||||||
|
printf "error" > "${STATE_DIR}/ui"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
# Webmail: done nur wenn LE-Cert tatsächlich vorhanden, sonst error
|
||||||
|
if [ -f "${STATE_DIR}/webmail" ]; then
|
||||||
|
if [ "${WM_HAS_CERT}" = "1" ]; then
|
||||||
|
printf "done" > "${STATE_DIR}/webmail"
|
||||||
|
else
|
||||||
|
printf "error" > "${STATE_DIR}/webmail"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
# Mail-Domain: kein certbot im Wizard für MX → skip (kein Fehler, nur nicht zutreffend)
|
||||||
|
[ -f "${STATE_DIR}/mail" ] && printf "skip" > "${STATE_DIR}/mail"
|
||||||
|
|
||||||
|
# done-Signal: immer schreiben damit der 2s-Poll stoppt
|
||||||
if [ "${UI_HAS_CERT}" = "1" ] || [ "${WM_HAS_CERT}" = "1" ]; then
|
if [ "${UI_HAS_CERT}" = "1" ] || [ "${WM_HAS_CERT}" = "1" ]; then
|
||||||
|
# Erst done schreiben, dann 6s warten bevor nginx auf HTTPS wechselt —
|
||||||
|
# so hat der Browser Zeit den "Zum Login"-Button zu rendern bevor der Switch passiert
|
||||||
printf "1" > "${STATE_DIR}/done"
|
printf "1" > "${STATE_DIR}/done"
|
||||||
|
sleep 6
|
||||||
else
|
else
|
||||||
printf "0" > "${STATE_DIR}/done"
|
printf "0" > "${STATE_DIR}/done"
|
||||||
fi
|
fi
|
||||||
sleep 6
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
nginx -t && systemctl reload nginx
|
nginx -t && systemctl reload nginx
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue