Files
runtipi/apps/rego-tunnel-linux/source/entrypoint.sh
alexz cfb6b04563
Some checks failed
Test / test (push) Has been cancelled
Add systemd support and pre-installed Cisco 5.1.14.145 binaries
- Add systemd, dbus packages to Dockerfile
- Pre-install Cisco Secure Client 5.1.14.145 binaries
- Add hosts entries for VPN servers at runtime
- Add cgroup volume mount for systemd support
- Start dbus daemon in entrypoint for Cisco client

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-24 21:51:26 +00:00

77 lines
1.8 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
NOVNC_PORT="${NOVNC_PORT:-8806}"
VNC_PASSWORD="${VNC_PASSWORD:-vpnpass}"
DISPLAY_ADDR="${DISPLAY:-:1}"
pids=()
setup_hosts() {
# Add VPN hosts entries (Docker manages /etc/hosts, so add at runtime)
grep -q "vpn-ord1.dovercorp.com" /etc/hosts || echo "162.209.24.100 vpn-ord1.dovercorp.com" >> /etc/hosts
grep -q "vpn.dovercorp.com" /etc/hosts || echo "13.67.192.27 vpn.dovercorp.com" >> /etc/hosts
}
start_dbus() {
# Start dbus for Cisco Secure Client
mkdir -p /run/dbus
rm -f /run/dbus/pid
dbus-daemon --system --fork 2>/dev/null || true
}
start_gui() {
mkdir -p /root/.vnc
x11vnc -storepasswd "$VNC_PASSWORD" /root/.vnc/pass >/dev/null 2>&1 || true
rm -f /tmp/.X1-lock /tmp/.X11-unix/X1 2>/dev/null || true
Xvfb "$DISPLAY_ADDR" -screen 0 ${XVFB_WxHxD:-1280x800x24} +extension RANDR &
pids+=($!)
sleep 0.5
export DISPLAY="$DISPLAY_ADDR"
fluxbox >/tmp/fluxbox.log 2>&1 &
pids+=($!)
x11vnc -display "$DISPLAY_ADDR" -rfbauth /root/.vnc/pass -forever -shared -rfbport 5900 -quiet &
pids+=($!)
websockify --web=/usr/share/novnc/ 0.0.0.0:"$NOVNC_PORT" localhost:5900 >/tmp/websockify.log 2>&1 &
pids+=($!)
}
start_vpnagent() {
# Start Cisco VPN agent daemon
/opt/cisco/secureclient/bin/vpnagentd &
pids+=($!)
}
setup_tun() {
mkdir -p /dev/net
if [ ! -c /dev/net/tun ]; then
mknod /dev/net/tun c 10 200
chmod 600 /dev/net/tun
fi
}
setup_nat() {
sysctl -w net.ipv4.ip_forward=1 >/dev/null 2>&1 || true
}
start_terminal() {
sleep 1
xterm -fa 'Monospace' -fs 11 -bg black -fg white -geometry 120x35+50+50 \
-T "Rego VPN" -e bash &
pids+=($!)
}
trap 'kill 0' INT TERM
echo "Starting Rego VPN container..."
setup_hosts
setup_tun
setup_nat
start_dbus
start_gui
start_vpnagent
start_terminal
echo "All services started. noVNC available on port $NOVNC_PORT"
wait