1
0
Fork 0
dotfiles/.local/bin/scripts/vpn
2025-06-16 11:04:16 +03:00

63 lines
1.2 KiB
Bash
Executable file

#!/bin/bash
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="rix"
while [ "$#" -gt 0 ]; do
case "$1" in
'm'|'msk') IFNAME='msk';;
'-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