88 lines
3.1 KiB
Bash
Executable File
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
|