#!/bin/bash
#
# Skrypt dodaje domene pobierzsterownik.x25.pl do istniejacej konfiguracji
# Apache dla projektu Django (drivers.conf) oraz do CSRF_TRUSTED_ORIGINS
# w settings.py. Tworzy kopie zapasowe przed edycja.
#
# Uzycie:
#   sudo bash dodaj_domene.sh

set -e

CONF_FILE="/etc/apache2/sites-available/drivers.conf"
SETTINGS_FILE="/var/www/pobierzsterownik/drivers/settings.py"
NOWA_DOMENA="pobierzsterownik.x25.pl"
STARA_DOMENA="pobierzsterownik.ovh"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)

if [ "$EUID" -ne 0 ]; then
    echo "Ten skrypt musi byc uruchomiony jako root (uzyj: sudo bash $0)"
    exit 1
fi

echo "=== 1. Sprawdzanie plikow ==="
if [ ! -f "$CONF_FILE" ]; then
    echo "BLAD: nie znaleziono $CONF_FILE"
    exit 1
fi
echo "OK: znaleziono $CONF_FILE"

if [ ! -f "$SETTINGS_FILE" ]; then
    echo "UWAGA: nie znaleziono $SETTINGS_FILE - pomijam edycje settings.py"
    SETTINGS_FILE=""
else
    echo "OK: znaleziono $SETTINGS_FILE"
fi

echo ""
echo "=== 2. Tworzenie kopii zapasowych ==="
cp "$CONF_FILE" "${CONF_FILE}.bak_${TIMESTAMP}"
echo "Kopia: ${CONF_FILE}.bak_${TIMESTAMP}"
if [ -n "$SETTINGS_FILE" ]; then
    cp "$SETTINGS_FILE" "${SETTINGS_FILE}.bak_${TIMESTAMP}"
    echo "Kopia: ${SETTINGS_FILE}.bak_${TIMESTAMP}"
fi

echo ""
echo "=== 3. Dodawanie ServerAlias w drivers.conf ==="
if grep -q "ServerAlias ${NOWA_DOMENA}" "$CONF_FILE"; then
    echo "Wpis ServerAlias ${NOWA_DOMENA} juz istnieje - pomijam."
else
    # Dodaje nowa linie ServerAlias zaraz po kazdej istniejacej linii
    # "ServerAlias pobierzsterownik.ovh" (dziala dla obu blokow VirtualHost)
    sed -i "/ServerAlias ${STARA_DOMENA}/a\\        ServerAlias ${NOWA_DOMENA}" "$CONF_FILE"
    echo "Dodano ServerAlias ${NOWA_DOMENA} w obu blokach VirtualHost."
fi

echo ""
echo "=== 4. Dodawanie CSRF_TRUSTED_ORIGINS w settings.py ==="
if [ -n "$SETTINGS_FILE" ]; then
    if grep -q "CSRF_TRUSTED_ORIGINS" "$SETTINGS_FILE"; then
        if grep -q "${NOWA_DOMENA}" "$SETTINGS_FILE"; then
            echo "CSRF_TRUSTED_ORIGINS juz zawiera ${NOWA_DOMENA} - pomijam."
        else
            echo "UWAGA: CSRF_TRUSTED_ORIGINS juz istnieje w pliku, ale nie zawiera nowej domeny."
            echo "Dodaj recznie: 'https://${NOWA_DOMENA}' do listy CSRF_TRUSTED_ORIGINS w ${SETTINGS_FILE}"
        fi
    else
        # Dodaje sekcje CSRF_TRUSTED_ORIGINS zaraz po ALLOWED_HOSTS = [ ... ]
        python3 - "$SETTINGS_FILE" "$STARA_DOMENA" "$NOWA_DOMENA" << 'PYEOF'
import sys, re

path, stara, nowa = sys.argv[1], sys.argv[2], sys.argv[3]
with open(path, "r", encoding="utf-8") as f:
    content = f.read()

block = (
    "\n\nCSRF_TRUSTED_ORIGINS = [\n"
    f"    'https://{stara}',\n"
    f"    'https://{nowa}',\n"
    "]\n"
)

# Wstaw po zamknieciu listy ALLOWED_HOSTS (pierwsze wystapienie "]\n" po ALLOWED_HOSTS)
match = re.search(r"(ALLOWED_HOSTS\s*=\s*\[.*?\n\])", content, re.DOTALL)
if match:
    insert_at = match.end()
    content = content[:insert_at] + block + content[insert_at:]
    with open(path, "w", encoding="utf-8") as f:
        f.write(content)
    print("Dodano blok CSRF_TRUSTED_ORIGINS po ALLOWED_HOSTS.")
else:
    print("UWAGA: nie znaleziono ALLOWED_HOSTS w pliku - dodaj CSRF_TRUSTED_ORIGINS recznie.")
PYEOF
    fi
else
    echo "Pomijam (nie znaleziono settings.py pod oczekiwana sciezka)."
fi

echo ""
echo "=== 5. Sprawdzanie skladni Apache ==="
if apache2ctl configtest; then
    echo "Skladnia OK."
else
    echo "BLAD SKLADNI - przywracam kopie zapasowa drivers.conf i przerywam."
    cp "${CONF_FILE}.bak_${TIMESTAMP}" "$CONF_FILE"
    exit 1
fi

echo ""
echo "=== 6. Przeladowanie Apache ==="
systemctl reload apache2
echo "Apache przeladowany."

echo ""
echo "=== 7. Certyfikat SSL (certbot) ==="
echo "Sprawdz najpierw czy DNS wskazuje juz na ten serwer:"
echo "  dig +short ${NOWA_DOMENA}"
echo ""
read -p "Czy DNS jest juz ustawiony i chcesz teraz wygenerowac certyfikat SSL? [t/N]: " ODP
if [[ "$ODP" =~ ^[tT]$ ]]; then
    certbot --apache -d "${NOWA_DOMENA}"
else
    echo "Pomijam certbot. Uruchom recznie pozniej:"
    echo "  sudo certbot --apache -d ${NOWA_DOMENA}"
fi

echo ""
echo "=== 8. Restart Apache (odswieza rowniez proces mod_wsgi/Django) ==="
systemctl restart apache2
echo "Gotowe."

echo ""
echo "=== PODSUMOWANIE ==="
echo "- ServerAlias dla ${NOWA_DOMENA} dodany w ${CONF_FILE}"
echo "- Kopie zapasowe zapisane z sufiksem .bak_${TIMESTAMP}"
echo "- Sprawdz strone: https://${NOWA_DOMENA}"
