#!/usr/bin/env bash
# Compare Apache proxy port vs node/.env PORT.
set -euo pipefail

ROOT="$(cd "$(dirname "$0")/.." && pwd)"
# shellcheck source=lib/node-env-port.sh
source "$ROOT/scripts/lib/node-env-port.sh"

APACHE_VHOST="${CALENDAR_APACHE_VHOST:-/etc/apache2/sites-available/calendar.gventure.info-le-ssl.conf}"
PUBLIC_URL="${CALENDAR_PUBLIC_URL:-https://calendar.gventure.info/api/v1/health}"

API_PORT="$(node_env_port "$ROOT")"

printf 'API port (node/.env):  %s\n' "$API_PORT"

apache_port=""
if [[ -f "$APACHE_VHOST" ]]; then
  apache_port="$(grep -E 'Define CALENDAR_API' "$APACHE_VHOST" 2>/dev/null \
    | grep -oE '127\.0\.0\.1:[0-9]+' | head -1 | cut -d: -f2 || true)"
  printf 'Apache Define:         %s (%s)\n' "${apache_port:-unknown}" "$APACHE_VHOST"
  if [[ -n "$apache_port" && "$API_PORT" != "$apache_port" ]]; then
    echo "" >&2
    echo "MISMATCH — Apache Define CALENDAR_API uses :$apache_port but node/.env PORT=$API_PORT" >&2
    echo "Fix: sudo bash scripts/configure-apache.sh" >&2
    exit 1
  fi
else
  printf 'Apache vhost:          not found at %s\n' "$APACHE_VHOST"
fi

code="$(curl -sS -o /dev/null -w '%{http_code}' "http://127.0.0.1:${API_PORT}/v1/health" || echo 000)"
printf 'Local API:             HTTP %s\n' "$code"

pub_code="$(curl -sS -o /dev/null -w '%{http_code}' "$PUBLIC_URL" 2>/dev/null || echo 000)"
printf 'Public URL:            HTTP %s (%s)\n' "$pub_code" "$PUBLIC_URL"

if [[ "$pub_code" == "503" ]]; then
  echo "" >&2
  echo "503 via HTTPS — Apache cannot reach the API backend." >&2
  echo "  sudo bash scripts/configure-apache.sh" >&2
  echo "  pm2 logs calendar-api --lines 80" >&2
  exit 1
fi

echo "OK: node/.env PORT matches Apache."
