Fix: mailwolt-apply-domains — dig-Fallback + fertig-Echo

- certbot_safe(): dig ist auf Ubuntu nicht immer installiert (kein dnsutils).
  Mit set -euo pipefail crashte die Funktion lautlos → certbot nie ausgeführt.
  Fallback auf getent ahostsv6 wenn dig fehlt; Zuweisung mit || has_aaaa=""
  damit set -e nicht greift falls beide Befehle scheitern.

- echo "mailwolt-apply-domains fertig" am Ende: SettingsForm.php prüft ob
  "fertig" im Output steht um ssl_configured=1 zu setzen — ohne diesen Echo
  wurde SSL nie als konfiguriert markiert, selbst wenn Zertifikate vorhanden.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
main v1.1.267
boban 2026-04-26 07:26:44 +02:00
parent 5511498200
commit 831f656b54
1 changed files with 9 additions and 3 deletions

View File

@ -67,10 +67,15 @@ cert_needs_action() {
certbot_safe() {
local domain="$1"
local has_aaaa
has_aaaa=$(dig +short AAAA "${domain}" 2>/dev/null | head -1)
local has_aaaa=""
# dig ist nicht immer installiert — Fallback auf getent
if command -v dig >/dev/null 2>&1; then
has_aaaa=$(dig +short AAAA "${domain}" 2>/dev/null | head -1) || has_aaaa=""
else
has_aaaa=$(getent ahostsv6 "${domain}" 2>/dev/null | awk '{print $1}' | head -1) || has_aaaa=""
fi
if [ -n "${has_aaaa}" ] && ! has_global_ipv6; then
echo "[!] ${domain}: AAAA-Record vorhanden aber kein IPv6 auf diesem Server — Let's Encrypt würde fehlschlagen. Self-signed wird verwendet." >&2
echo "[!] ${domain}: AAAA-Record vorhanden aber kein IPv6 auf diesem Server — Let's Encrypt würde fehlschlagen. Self-signed wird verwendet."
return 1
fi
certbot certonly --webroot \
@ -230,3 +235,4 @@ if [ -d "${STATE_DIR}" ]; then
fi
nginx -t && systemctl reload nginx
echo "mailwolt-apply-domains fertig"