#!/usr/bin/env bash
set -euo pipefail

NGINX_CONF="/etc/nginx/conf.d/belabox-remote-ui.conf"
SERVER_CONF="/etc/belabox-remote-ui/server.conf"
STAMP="$(date +%Y%m%d-%H%M%S)"
BACKUP="${NGINX_CONF}.backup-${STAMP}"

if [ "${EUID}" -ne 0 ]; then
  echo "Fehler: Bitte mit sudo ausfuehren." >&2
  exit 1
fi

if [ ! -f "${NGINX_CONF}" ]; then
  echo "Fehler: ${NGINX_CONF} wurde nicht gefunden." >&2
  echo "Dieser Fix ist nur fuer BelaRemoteUI gedacht." >&2
  exit 1
fi

if [ ! -f "${SERVER_CONF}" ] || ! grep -Eq '^ENABLE_HTTPS=(1|"1")$' "${SERVER_CONF}"; then
  echo "Fehler: BelaRemoteUI meldet HTTPS nicht als aktiv." >&2
  echo "Richte zuerst HTTPS mit --setup-https ein." >&2
  exit 1
fi

if ! grep -q 'ssl_certificate ' "${NGINX_CONF}"; then
  echo "Fehler: In der BelaRemoteUI-Nginx-Datei wurde kein TLS-Zertifikat gefunden." >&2
  exit 1
fi

if ! grep -q 'SameSite=Lax"' "${NGINX_CONF}"; then
  if grep -q 'SameSite=Lax; Secure"' "${NGINX_CONF}"; then
    echo "Secure-Cookie ist bereits aktiv. Keine Aenderung notwendig."
    exit 0
  fi
  echo "Fehler: Die erwarteten BelaRemoteUI-Cookie-Zeilen wurden nicht gefunden." >&2
  echo "Moeglicherweise hat sich das Projekt geaendert. Nicht automatisch fortfahren." >&2
  exit 1
fi

cp --preserve=mode,ownership,timestamps "${NGINX_CONF}" "${BACKUP}"
sed -i 's/SameSite=Lax"/SameSite=Lax; Secure"/g' "${NGINX_CONF}"

if ! nginx -t; then
  cp --preserve=mode,ownership,timestamps "${BACKUP}" "${NGINX_CONF}"
  echo "Nginx-Test fehlgeschlagen. Die Sicherung wurde wiederhergestellt." >&2
  exit 1
fi

if ! systemctl reload nginx; then
  cp --preserve=mode,ownership,timestamps "${BACKUP}" "${NGINX_CONF}"
  nginx -t && systemctl reload nginx
  echo "Nginx konnte nicht neu geladen werden. Die Sicherung wurde wiederhergestellt." >&2
  exit 1
fi

echo "BelaRemoteUI-Cookies verwenden jetzt das Secure-Attribut."
echo "Sicherung: ${BACKUP}"
echo "Hinweis: Nach einem erneuten Lauf des offiziellen Serverskripts diesen Fix kontrollieren und gegebenenfalls erneut anwenden."
