#!/usr/bin/env bash # Baut das Wuerth-VPN rootlos auf (openconnect + ocproxy, SOCKS5 statt tun) # und startet Edge mit eigenem, isoliertem Profil ueber diesen Proxy. # Beim Schliessen von Edge wird openconnect beendet. set -euo pipefail export PATH="/opt/homebrew/bin:$PATH" SERVER="loki.witglobal.net" VPN_USER="ex08802409" PORT=11080 PACPORT=11081 PROFILE="$HOME/.wuerth-edge" EDGE="/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge" START_URL="https://gitops.apps.ocp-dev01.wgn.wuerth.com" # Hosts, die ueber das VPN (SOCKS) laufen sollen; alles andere geht direkt. INTERNAL_GLOB="*.wgn.wuerth.com" read -rsp "VPN-Passwort fuer ${VPN_USER}: " VPN_PW; echo printf '%s\n' "$VPN_PW" | openconnect \ --protocol=anyconnect \ --user "$VPN_USER" \ --passwd-on-stdin \ --script "ocproxy -D ${PORT}" \ --script-tun \ "https://${SERVER}" & OC_PID=$! # PAC-Datei: nur INTERNAL_GLOB ueber den VPN-SOCKS, Rest direkt ins Internet. PACDIR="$(mktemp -d)" cat >"$PACDIR/wuerth.pac" < ueber lokalen HTTP-Server ausliefern. python3 -m http.server "$PACPORT" --bind 127.0.0.1 --directory "$PACDIR" >/dev/null 2>&1 & HTTP_PID=$! cleanup() { kill "$OC_PID" "$HTTP_PID" 2>/dev/null || true; rm -rf "$PACDIR"; } trap cleanup EXIT INT TERM # Warten, bis ocproxy den SOCKS-Port geoeffnet hat (max. 30 s) for _ in $(seq 1 60); do if nc -z 127.0.0.1 "$PORT" 2>/dev/null; then break; fi if ! kill -0 "$OC_PID" 2>/dev/null; then echo "openconnect beendet sich (Auth fehlgeschlagen?)." >&2 exit 1 fi sleep 0.5 done echo "SOCKS5 auf 127.0.0.1:${PORT} aktiv. Starte Edge..." "$EDGE" \ --user-data-dir="$PROFILE" \ --proxy-pac-url="http://127.0.0.1:${PACPORT}/wuerth.pac" \ --host-resolver-rules="MAP ${INTERNAL_GLOB} ~NOTFOUND" \ --no-first-run --no-default-browser-check \ "$START_URL" # Edge beendet -> trap raeumt openconnect ab