63 lines
1.2 KiB
Bash
Executable file
63 lines
1.2 KiB
Bash
Executable file
#!/bin/bash -x
|
|
|
|
PIPE="/var/run/vpnd.sock"
|
|
send_cmd() {
|
|
[ -p $PIPE ] && echo "$@" > $PIPE && \
|
|
cat < $PIPE
|
|
}
|
|
|
|
send_router_cmd() {
|
|
touch "${HOME}/.local/state/.vpn_loading"
|
|
pkill -36 dwmblocks
|
|
ssh router vpn "$1" laptop 2>/dev/null
|
|
rm "${HOME}/.local/state/.vpn_loading"
|
|
}
|
|
|
|
DEFAULT_LINK="$(resolvectl status | grep 'Default Route: yes' -B10 | grep 'Link' | tail -1 | grep -Eo '\(.*\)' | tr -d '()')"
|
|
|
|
if resolvectl domain "$DEFAULT_LINK" | grep -q 'wzray.com'; then
|
|
IS_LOCAL=1
|
|
fi
|
|
|
|
IFNAME='ext'
|
|
|
|
while [ "$#" -gt 0 ]; do
|
|
case "$1" in
|
|
'i'|'int') IFNAME='int';;
|
|
'-v'|'--verbose') VERBOSE=1;;
|
|
*) echo "Wrong argument!"; exit 1;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
if [ -z "${VERBOSE}" ]; then
|
|
exec &>/dev/null
|
|
else
|
|
set -x
|
|
fi
|
|
|
|
UP_NAME="$(send_cmd status)"
|
|
|
|
if [ -n "$IS_LOCAL" ]; then
|
|
if [ -n "$UP_NAME" ]; then
|
|
send_cmd down
|
|
else
|
|
send_router_cmd toggle
|
|
fi
|
|
else
|
|
if [ -n "${UP_NAME}" ]; then
|
|
if [ "${UP_NAME}" != "${IFNAME}" ]; then
|
|
send_cmd down
|
|
send_cmd up "$IFNAME"
|
|
else
|
|
send_cmd down
|
|
fi
|
|
else
|
|
send_cmd up "$IFNAME"
|
|
fi
|
|
fi
|
|
|
|
|
|
pkill -36 dwmblocks
|
|
|
|
# vim: ft=bash
|