#!/usr/bin/env bash
# serve.sh
# Arranca un HTTP server simple en :8080 sirviendo el proyecto entero.
# Imprime IP LAN del Lenovo para que se pueda apuntar el Mecool KM1.

set -euo pipefail

PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
PORT="${PORT:-8080}"

# Detecta IP LAN principal (no loopback, no docker, no tailscale)
LAN_IP="$(ip -4 addr show scope global up 2>/dev/null \
    | grep -v -E 'docker|tailscale|virbr|br-' \
    | awk '/inet / {print $2}' \
    | cut -d/ -f1 \
    | head -1)"

if [[ -z "$LAN_IP" ]]; then
    LAN_IP="$(hostname -I | awk '{print $1}')"
fi

cat <<EOF
==========================================
LAN Media Server iniciado
==========================================

URL para el Mecool KM1:
   http://${LAN_IP}:${PORT}/player/

Atajos:
   http://${LAN_IP}:${PORT}/         (directory listing — debug)
   http://localhost:${PORT}/player/  (testing local antes del Mecool)

Firewall (si bloquea):
   sudo ufw allow from 192.168.1.0/24 to any port ${PORT}

Para detener: Ctrl+C

==========================================
EOF

cd "$PROJECT_ROOT"
# npx serve: HTTP/1.1 + Accept-Ranges correctos (python3 http.server solo hace HTTP/1.0
# lo que rompe streaming MP3 vía Caddy HTTP/2 con Range requests)
exec npx --yes serve . -l "$PORT" --no-clipboard
