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

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_DIR="$(cd "${SCRIPT_DIR}/../.." && pwd)"
ENV_FILE="${ENV_FILE:-${REPO_DIR}/deploy/env/cam1.env}"

if [[ "${EUID}" -ne 0 ]]; then
  echo "Run this script with sudo or as root."
  exit 1
fi

if [[ ! -f "${ENV_FILE}" ]]; then
  echo "Missing env file: ${ENV_FILE}"
  echo "Create it first with:"
  echo "  cp deploy/env/cam1.env.example deploy/env/cam1.env"
  exit 1
fi

source "${ENV_FILE}"

: "${CAM1_SOURCE_RTSP:?CAM1_SOURCE_RTSP must be set in ${ENV_FILE}}"

SITE_DOMAIN="${SITE_DOMAIN:-dev.cc-group.org}"
SITE_ROOT="${SITE_ROOT:-/var/www/${SITE_DOMAIN}}"
LETSENCRYPT_EMAIL="${LETSENCRYPT_EMAIL:-admin@example.com}"
MEDIA_MTX_VERSION="${MEDIA_MTX_VERSION:-v1.8.4}"

export SITE_DOMAIN SITE_ROOT LETSENCRYPT_EMAIL MEDIA_MTX_VERSION CAM1_SOURCE_RTSP REPO_DIR ENV_FILE

apt-get update
apt-get install -y \
  apache2 \
  curl \
  ffmpeg \
  openssl \
  php \
  libapache2-mod-php \
  ca-certificates

a2enmod headers proxy proxy_http proxy_wstunnel ssl rewrite >/dev/null

bash "${SCRIPT_DIR}/install-mediamtx.sh"

if ! command -v websock_rtsp_proxy >/dev/null 2>&1; then
  tmp_deb="$(mktemp /tmp/ws_rtsp_proxy.XXXXXX.deb)"
  curl -L "https://streamedian.com/cabinet/downloads/proxy/deb/3.3" -o "${tmp_deb}"
  dpkg -i "${tmp_deb}" || apt-get install -f -y
  rm -f "${tmp_deb}"
fi

bash "${SCRIPT_DIR}/configure-site.sh"

echo
echo "Deployment complete."
echo "Verification URLs:"
echo "  http://${SITE_DOMAIN}/vidx_embed/index-page.html"
echo "  http://${SITE_DOMAIN}/vidx_embed/hls-proxy.php?path=cam1&file=index.m3u8"
echo "  http://${SITE_DOMAIN}:8088"
echo
echo "Service checks:"
echo "  systemctl status mediamtx"
echo "  systemctl status cam1"
echo "  systemctl status ws_rtsp"
echo "  sudo systemctl status apache2"
