projects/vpn: browsergebundene VPN-Tray-Apps (Wuerth/Heron) + Build-Scripts
This commit is contained in:
Executable
+67
@@ -0,0 +1,67 @@
|
||||
#!/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" <<PAC
|
||||
function FindProxyForURL(url, host) {
|
||||
if (shExpMatch(host, "${INTERNAL_GLOB}")) {
|
||||
return "SOCKS5 127.0.0.1:${PORT}";
|
||||
}
|
||||
return "DIRECT";
|
||||
}
|
||||
PAC
|
||||
|
||||
# Edge blockt file://-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
|
||||
Reference in New Issue
Block a user