#!/usr/bin/env bash
# Generate a 10-year self-signed wildcard certificate for pre-switch testing and upload it to
# Nginx Proxy Manager as custom certificate "selfsigned-wildcard".
#   selfsigned-wildcard.sh [domain ...]   (default: logship.de blut24.com)
set -euo pipefail
HERE="$(cd "$(dirname "$0")" && pwd)"; source "$HERE/npm-api.sh"
DOMAINS=("$@"); [ ${#DOMAINS[@]} -gt 0 ] || DOMAINS=(logship.de blut24.com)
san=""; for d in "${DOMAINS[@]}"; do san="${san:+$san,}DNS:*.$d,DNS:$d"; done
tmp=$(mktemp -d)
openssl req -x509 -newkey rsa:2048 -sha256 -days 3650 -nodes \
  -keyout "$tmp/key.pem" -out "$tmp/cert.pem" \
  -subj "/O=LogYou GmbH/OU=edge-proxy self-signed/CN=*.${DOMAINS[0]}" \
  -addext "subjectAltName=$san" -addext "basicConstraints=CA:FALSE" -addext "keyUsage=digitalSignature,keyEncipherment" \
  -addext "extendedKeyUsage=serverAuth" 2>/dev/null
npm_login
existing=$(npm_cert_id_by_name selfsigned-wildcard)
if [ -n "$existing" ]; then echo "certificate 'selfsigned-wildcard' exists as #$existing — delete it in the UI first to replace"; exit 0; fi
id=$(npm_cert_upload selfsigned-wildcard "$tmp/cert.pem" "$tmp/key.pem")
rm -rf "$tmp"
echo "uploaded self-signed wildcard ($san) as certificate #$id"
