#!/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