#!/usr/bin/env bash
# Генерация самоподписанного TLS-сертификата для верхнего nginx.
#
# Использование:
#   ./nginx/gen-cert.sh                         # домены по умолчанию
#   ./nginx/gen-cert.sh sarex.local api.sarex.local   # свои домены (первый → CN)
#   DAYS=730 ./nginx/gen-cert.sh                 # свой срок действия
#
# Результат: nginx/certs/selfsigned.{crt,key} (в .gitignore).
# MSYS_NO_PATHCONV=1 нужен для Git Bash на Windows; на Linux он безвреден.
set -euo pipefail

CERT_DIR="$(cd "$(dirname "$0")" && pwd)/certs"
DAYS="${DAYS:-365}"

if [ "$#" -gt 0 ]; then
  DOMAINS=("$@")
else
  DOMAINS=(sarex.local admin.sarex.local minio.sarex.local)
fi

# subjectAltName из списка доменов, CN — первый домен
SAN=""
for d in "${DOMAINS[@]}"; do SAN="${SAN}${SAN:+,}DNS:${d}"; done
CN="${DOMAINS[0]}"

mkdir -p "$CERT_DIR"
cd "$CERT_DIR"   # пишем относительными именами: не ломается конверсия путей в Git Bash
MSYS_NO_PATHCONV=1 openssl req -x509 -nodes -newkey rsa:2048 -days "$DAYS" \
  -keyout selfsigned.key \
  -out    selfsigned.crt \
  -subj "/CN=${CN}" \
  -addext "subjectAltName=${SAN}"

echo "OK: сертификат на ${DAYS} дней → $CERT_DIR/selfsigned.{crt,key}"
echo "SAN: ${SAN}"
