#!/bin/sh
# Готовит /etc/nginx/certs/{fullchain,privkey}.pem ДО того, как штатный
# entrypoint официального образа nginx (20-envsubst-on-templates.sh, потом
# сам nginx) прочитает конфиг с `ssl_certificate` (см.
# deploy/nginx/nginx.conf.template). Монтируется томом в docker-compose.yml
# в /docker-entrypoint.d/ (рядом с nginx.conf.template — конфиг и
# entrypoint-скрипты nginx монтируются, а не запекаются в образ, чтобы правки
# не требовали пересборки фронта), где нативный entrypoint nginx исполняет
# все *.sh по алфавиту до старта самого nginx.
#
# Прод: реальный сертификат смонтирован с хоста в /etc/letsencrypt (ro,
# см. docker-compose.yml) — копируем его.
# Dev (docs/deploy/dev-setup.md, `docker compose up` без реальных сертификатов
# Let's Encrypt): каталог пуст/отсутствует — генерируем самоподписанный
# сертификат, чтобы локальный стек стартовал без ручной настройки TLS.
set -e

CERT_NAME="${NGINX_CERT_NAME:-localhost}"
SRC="/etc/letsencrypt/live/${CERT_NAME}"
DEST=/etc/nginx/certs

mkdir -p "$DEST"

if [ -f "$SRC/fullchain.pem" ] && [ -f "$SRC/privkey.pem" ]; then
    echo "[nginx-certs] Использую боевой сертификат из $SRC"
    cp "$SRC/fullchain.pem" "$DEST/fullchain.pem"
    cp "$SRC/privkey.pem" "$DEST/privkey.pem"
else
    echo "[nginx-certs] $SRC не найден — генерирую самоподписанный сертификат (ТОЛЬКО для локальной разработки, в проде смонтируйте /etc/letsencrypt)"
    openssl req -x509 -nodes -newkey rsa:2048 -days 365 \
        -keyout "$DEST/privkey.pem" -out "$DEST/fullchain.pem" \
        -subj "/CN=${CERT_NAME}" 2>/dev/null
fi

chmod 644 "$DEST/fullchain.pem" "$DEST/privkey.pem"
