2020-12-17 18:22:15 +00:00
|
|
|
#!/bin/bash
|
|
|
|
|
2020-12-17 23:40:20 +00:00
|
|
|
# Read from keychain on macOS by default
|
|
|
|
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
|
|
SERVER=$(security find-generic-password -l "Openconnect VPN Server" -w)
|
|
|
|
USERNAME=$(security find-generic-password -l "Openconnect Username" -w)
|
|
|
|
SEED=$(security find-generic-password -l "Openconnect TOTP Seed" -w)
|
|
|
|
PASSWORD=$(security find-generic-password -l "Openconnect Account Password" -w)
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Allow reading from environment
|
|
|
|
if [[ -z "$OC_SERVER" ]]; then :; else
|
|
|
|
SERVER="$OC_SERVER"
|
|
|
|
fi
|
|
|
|
if [[ -z "$OC_USERNAME" ]]; then :; else
|
|
|
|
USERNAME="$OC_USERNAME"
|
|
|
|
fi
|
|
|
|
if [[ -z "$OC_SEED" ]]; then :; else
|
|
|
|
SEED="$OC_SEED"
|
|
|
|
fi
|
|
|
|
if [[ -z "$OC_PASSWORD" ]]; then :; else
|
|
|
|
PASSWORD="$OC_PASSWORD"
|
|
|
|
fi
|
2020-12-17 18:22:15 +00:00
|
|
|
|
2020-12-17 23:05:16 +00:00
|
|
|
SCRIPT=`realpath $0`
|
|
|
|
SCRIPTPATH=`dirname $SCRIPT`
|
|
|
|
ROUTE_FILE=routes.txt
|
|
|
|
|
2020-12-17 18:22:15 +00:00
|
|
|
# trap ctrl-c and call ctrl_c()
|
|
|
|
trap ctrl_c INT
|
|
|
|
|
|
|
|
function ctrl_c() {
|
|
|
|
killall openconnect
|
|
|
|
echo "Bye!"
|
|
|
|
exit
|
|
|
|
}
|
|
|
|
|
2020-12-17 23:05:16 +00:00
|
|
|
SCRIPT_INCLUDE=""
|
|
|
|
|
2020-12-17 18:22:15 +00:00
|
|
|
while true; do
|
|
|
|
echo "Connecting to VPN"
|
|
|
|
|
2020-12-17 23:05:16 +00:00
|
|
|
if test -f "$ROUTE_FILE"; then
|
|
|
|
SCRIPT_INCLUDE="--script=\"$SCRIPTPATH/routing.sh\""
|
|
|
|
fi
|
|
|
|
|
2020-12-18 00:46:55 +00:00
|
|
|
# If yubikey is not used, use the TOTP seed
|
|
|
|
if [[ -z "$OC_YUBIKEY" ]]; then
|
|
|
|
TOTP=$(oathtool --totp=sha1 -b "$SEED")
|
|
|
|
PASSWORD="$PASSWORD\n$TOTP"
|
|
|
|
else
|
|
|
|
YUBIKEY_TOTP="--token-mode=yubioath --token-secret=$OC_YUBIKEY"
|
|
|
|
fi
|
2020-12-17 23:59:40 +00:00
|
|
|
|
2020-12-18 00:46:55 +00:00
|
|
|
echo -e "$PASSWORD" | sudo openconnect \
|
2020-12-17 18:22:15 +00:00
|
|
|
--csd-wrapper hostscan-bypass.sh \
|
|
|
|
--passwd-on-stdin \
|
2020-12-17 19:00:59 +00:00
|
|
|
--os=mac-intel \
|
2020-12-18 00:46:55 +00:00
|
|
|
$YUBIKEY_TOTP \
|
2020-12-17 23:05:16 +00:00
|
|
|
$SCRIPT_INCLUDE \
|
2020-12-17 18:22:15 +00:00
|
|
|
-u $USERNAME \
|
|
|
|
$SERVER
|
|
|
|
|
|
|
|
echo "Openconnect closed. Waiting 3 seconds."
|
|
|
|
sleep 3
|
|
|
|
|
|
|
|
done
|