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

APP_DIR="/opt/scorpio-license-server"
SERVICE_FILE="/etc/systemd/system/scorpio-license.service"
NGINX_SITE="/etc/nginx/sites-available/license.scorpioevents.au"
NGINX_ENABLED="/etc/nginx/sites-enabled/license.scorpioevents.au"

echo "=== Scorpio License Server Installer ==="

if [ "$(id -u)" -ne 0 ]; then
  echo "Run this installer as root: sudo bash install_server.sh"
  exit 1
fi

read -rp "Linux username to own the app files [scorpio]: " APP_USER
APP_USER="${APP_USER:-scorpio}"

if ! id "$APP_USER" >/dev/null 2>&1; then
  useradd --system --create-home --shell /bin/bash "$APP_USER"
fi

apt-get update
apt-get install -y python3 python3-venv python3-pip nginx certbot python3-certbot-nginx

mkdir -p "$APP_DIR"
cp -r app "$APP_DIR/"
cp requirements.txt "$APP_DIR/"
cp .env.example "$APP_DIR/.env"
chown -R "$APP_USER:$APP_USER" "$APP_DIR"

sudo -u "$APP_USER" python3 -m venv "$APP_DIR/venv"
sudo -u "$APP_USER" "$APP_DIR/venv/bin/pip" install --upgrade pip
sudo -u "$APP_USER" "$APP_DIR/venv/bin/pip" install -r "$APP_DIR/requirements.txt"

sed "s/User=scorpio/User=$APP_USER/; s/Group=scorpio/Group=$APP_USER/" scorpio-license.service > "$SERVICE_FILE"
chmod 644 "$SERVICE_FILE"

cp nginx-license.scorpioevents.au.conf "$NGINX_SITE"
ln -sf "$NGINX_SITE" "$NGINX_ENABLED"

nginx -t
systemctl daemon-reload
systemctl enable scorpio-license.service
systemctl restart scorpio-license.service
systemctl reload nginx

echo
echo "=== Installed ==="
echo "1) Edit $APP_DIR/.env and set ADMIN_API_KEY, APP_SHARED_SECRET, and optional webhook/SMTP values."
echo "2) Restart the service: sudo systemctl restart scorpio-license"
echo "3) Point DNS for license.scorpioevents.au to this server."
echo "4) Run SSL setup: sudo certbot --nginx -d license.scorpioevents.au"
echo
echo "Service status:"
systemctl --no-pager --full status scorpio-license.service || true
