summaryrefslogtreecommitdiff
path: root/scriptlets/veepeen_toggler.sh
diff options
context:
space:
mode:
Diffstat (limited to 'scriptlets/veepeen_toggler.sh')
-rwxr-xr-xscriptlets/veepeen_toggler.sh43
1 files changed, 43 insertions, 0 deletions
diff --git a/scriptlets/veepeen_toggler.sh b/scriptlets/veepeen_toggler.sh
new file mode 100755
index 0000000..2e9dd1d
--- /dev/null
+++ b/scriptlets/veepeen_toggler.sh
@@ -0,0 +1,43 @@
+#!/bin/bash
+
+declare -A connections=( ["shigoto"]="shigoto/vpn" ["ucell"]="shigoto/ucell/vpn" ["ums"]="shigoto/ums/vpn" ["telekomsrbija"]="shigoto/telekomsrbija/vpn" )
+
+function get_from_pass () {
+ pass show "$1" | grep "^$2:" | sed -r "s|^$2: ||g"
+}
+
+[[ $# < 1 ]] && echo -e "Please specify a VPN connection profile.\nOptions:\n$( for conn in "${!connections[@]}"; do echo "$conn"; done)" && exit -1
+
+passentry="${connections["$1"]}"
+[[ -z $passentry ]] && echo -e "ERROR. VPN CONNECTION PROFILE NOT FOUND\nOptions:\n$( for conn in "${!connections[@]}"; do echo "$conn"; done)" && exit -2
+CONN_NAME="$( get_from_pass "$passentry" "name" )"
+
+if [[ "$( nmcli c s | grep "$CONN_NAME" | sed -r "s|.*\s+([^ ]+)\s+|\1|g" )" != "--" ]]; then
+ echo "ALREADY CONNECTED. DISCONNECTING..."
+ nmcli con down "$CONN_NAME"
+else
+ CONN_GATEWAY="$( get_from_pass "$passentry" "gateway" )"
+ CONN_CERTIFICATE="$( get_from_pass "$passentry" "certificate" )"
+ CONN_USERAGENT="$( get_from_pass "$passentry" "useragent" )"
+
+ [[ -n $CONN_CERTIFICATE ]] && CERTFLAG="--servercert $CONN_CERTIFICATE" || CERTFLAG=""
+ [[ -n $CONN_USERAGENT ]] && USERAGENT="--useragent $CONN_USERAGENT" || USERAGENT=""
+
+ CONN_USERNAME="$( get_from_pass "$passentry" "username" )"
+ CONN_PASSWORD="$( pass $passentry | head -n1 )"
+ echo "CONNECTING... "
+
+ if get_from_pass "$passentry" "OTP" | grep -q "yes"; then
+ eval ` { echo "$CONN_PASSWORD"; read OTP; echo "$OTP"; } | openconnect $USERAGENT -u "$CONN_USERNAME" --passwd-on-stdin $CERTFLAG --authenticate $CONN_GATEWAY `
+ # eval ` echo "$CONN_PASSWORD" | cat - /dev/tty | openconnect $USERAGENT -u "$CONN_USERNAME" --passwd-on-stdin $CERTFLAG --authenticate $CONN_GATEWAY `
+ else
+ eval ` echo "$CONN_PASSWORD" | openconnect $USERAGENT -u "$CONN_USERNAME" --passwd-on-stdin $CERTFLAG --authenticate $CONN_GATEWAY `
+ fi
+
+ if [ -z "$COOKIE" ]; then
+ echo "ERROR: NO COOKIE"
+ exit 1
+ else
+ nmcli con up "$CONN_NAME" passwd-file /proc/self/fd/5 5< <( printf "%s\n%s\n%s\n%s" "vpn.secrets.cookie:$COOKIE" "vpn.secrets.gwcert:$FINGERPRINT" "vpn.secrets.gateway:$CONN_GATEWAY" "vpn.secrets.resolve:$RESOLVE" )
+ fi
+fi