AvanzaCast/packages/broadcast-panel/e2e/start-chrome-remote.sh

88 lines
3.1 KiB
Bash
Executable File

#!/usr/bin/env zsh
# start-chrome-remote.sh
# Abre Google Chrome/Chromium en modo remote-debugging y usa un perfil persistente
# Uso:
# chmod +x start-chrome-remote.sh
# ./start-chrome-remote.sh
#
# Mejoras:
# - Permite configurar REMOTE_DEBUG_ADDRESS (por defecto 127.0.0.1).
# - Si REMOTE_DEBUG_PUBLIC=1 se fuerza 0.0.0.0 (exponer a red pública, INSEGURO).
# - Permite configurar REMOTE_DEBUG_PORT (por defecto 9222).
# - Permite pasar flags adicionales con EXTRA_CHROME_FLAGS.
# - Mantiene comportamiento headless cuando no hay DISPLAY.
PROFILE_DIR="$HOME/.config/avanzacast-e2e-profile"
mkdir -p "$PROFILE_DIR"
# Permite sobreescribir binario con variable de entorno CHROME_BIN
CHROME_BIN=${CHROME_BIN:-/usr/bin/google-chrome}
if [ ! -x "$CHROME_BIN" ]; then
CHROME_BIN=/usr/bin/google-chrome-stable
fi
if [ ! -x "$CHROME_BIN" ]; then
CHROME_BIN=/usr/bin/chromium-browser
fi
if [ ! -x "$CHROME_BIN" ]; then
CHROME_BIN=/usr/bin/chromium
fi
if [ ! -x "$CHROME_BIN" ]; then
echo "No se encontró un binario de Chrome/Chromium. Exporta CHROME_BIN o instala Chrome/Chromium." >&2
exit 1
fi
# Configurables
REMOTE_DEBUG_PORT=${REMOTE_DEBUG_PORT:-9222}
# By default restrict debugging to localhost; set REMOTE_DEBUG_PUBLIC=1 to allow 0.0.0.0
if [ "${REMOTE_DEBUG_PUBLIC:-0}" = "1" ]; then
REMOTE_DEBUG_ADDRESS=${REMOTE_DEBUG_ADDRESS:-0.0.0.0}
else
REMOTE_DEBUG_ADDRESS=${REMOTE_DEBUG_ADDRESS:-127.0.0.1}
fi
# Extra flags puede ser usado para ajustar comportamiento en CI o debug
EXTRA_CHROME_FLAGS=${EXTRA_CHROME_FLAGS:-}
echo "Arrancando Chrome/Chromium con remote-debugging en http://${REMOTE_DEBUG_ADDRESS}:${REMOTE_DEBUG_PORT} usando perfil: $PROFILE_DIR"
if [ "${REMOTE_DEBUG_PUBLIC:-0}" = "1" ]; then
echo "ADVERTENCIA: REMOTE_DEBUG_PUBLIC=1 permite conexiones desde cualquier host. Asegúrate de usar firewall/SSH tunneling para seguridad." >&2
fi
# Opciones: usa headless nuevo por defecto si se ejecuta en CI (no hay DISPLAY), pero permite pasar flags extra.
FLAGS=(
--remote-debugging-port=${REMOTE_DEBUG_PORT}
--remote-debugging-address=${REMOTE_DEBUG_ADDRESS}
--user-data-dir="$PROFILE_DIR"
--no-first-run
--disable-extensions
--disable-backgrounding-occluded-windows
--window-size=1280,900
--enable-logging
--v=1
)
# Si no hay DISPLAY, arrancamos headless; si hay DISPLAY, arrancamos en modo normal
if [ -z "$DISPLAY" ]; then
FLAGS+=(--headless=new --disable-gpu --no-sandbox --disable-dev-shm-usage)
fi
# Añadir flags extra si se proporcionan
if [ -n "$EXTRA_CHROME_FLAGS" ]; then
# Separa por espacio, permite pasar múltiples flags
FLAGS+=(${=EXTRA_CHROME_FLAGS})
fi
# Ejecutar en background y devolver control
"$CHROME_BIN" "${(@)FLAGS}" "$@" &
CHROME_PID=$!
echo "Chrome PID: $CHROME_PID"
echo "Remote debugging URL: http://${REMOTE_DEBUG_ADDRESS}:${REMOTE_DEBUG_PORT}/"
# Notas de uso:
# - Para exponer a otra máquina de forma segura, crea un tunnel SSH en lugar de exponer el puerto públicamente:
# ssh -L 9222:localhost:9222 user@remoteserver
# - Para probar la disponibilidad del endpoint:
# curl -sS http://localhost:${REMOTE_DEBUG_PORT}/json/version