#!/usr/bin/env bash
set -euo pipefail
TARGET_URL="${TARGET_URL:-https://example.com}"
SESSION_ID="${SESSION_ID:-unknown}"
IDLE_TIMEOUT="${IDLE_TIMEOUT:-1800}"
ENABLE_HEARTBEAT="${ENABLE_HEARTBEAT:-1}"
TOUCH_PATH="${TOUCH_PATH:-/api/sessions/${SESSION_ID}/touch}"
UNIVERSAL_WEB="${UNIVERSAL_WEB:-0}"
START_URL="${START_URL:-about:blank}"
HOME_URL="${HOME_URL:-$TARGET_URL}"
SCREEN_GEOMETRY="${SCREEN_GEOMETRY:-1920x1080x24}"
CHROME_WINDOW_SIZE="${CHROME_WINDOW_SIZE:-1920,1080}"
if [ "$UNIVERSAL_WEB" = "1" ]; then
HOME_URL="${HOME_URL:-$START_URL}"
fi
mkdir -p /opt/portal
cp -r /usr/share/novnc/* /opt/portal/
cat > /opt/portal/index.html <
Инфра полигон МОНТ
HTML
export DISPLAY=:1
Xvfb :1 -screen 0 "$SCREEN_GEOMETRY" &
fluxbox >/tmp/fluxbox.log 2>&1 &
sleep 1
if [ "$UNIVERSAL_WEB" = "1" ]; then
chromium \
--no-sandbox \
--disable-dev-shm-usage \
--disable-gpu \
--use-gl=swiftshader \
--kiosk \
--remote-debugging-address=0.0.0.0 \
--remote-debugging-port=9222 \
--remote-allow-origins=* \
--disable-translate \
--disable-features=TranslateUI,ExtensionsToolbarMenu \
--disable-pinch \
--overscroll-history-navigation=0 \
--ignore-certificate-errors \
--allow-insecure-localhost \
--allow-running-insecure-content \
--window-size="$CHROME_WINDOW_SIZE" \
--no-first-run \
--no-default-browser-check \
"$START_URL" \
>/tmp/chromium.log 2>&1 &
python3 /manager.py >/tmp/manager.log 2>&1 &
else
chromium \
--no-sandbox \
--disable-dev-shm-usage \
--disable-gpu \
--use-gl=swiftshader \
--kiosk \
--app="$TARGET_URL" \
--disable-translate \
--disable-features=TranslateUI,ExtensionsToolbarMenu \
--disable-pinch \
--overscroll-history-navigation=0 \
--ignore-certificate-errors \
--allow-insecure-localhost \
--allow-running-insecure-content \
--window-size="$CHROME_WINDOW_SIZE" \
--no-first-run \
--no-default-browser-check \
>/tmp/chromium.log 2>&1 &
fi
x11vnc -display :1 -rfbport 5900 -forever -shared -nopw -noxdamage >/tmp/x11vnc.log 2>&1 &
exec websockify --verbose --idle-timeout="$IDLE_TIMEOUT" --web=/opt/portal 6080 localhost:5900