47 lines
1005 B
Bash
47 lines
1005 B
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# NOTE commands allowed
|
|
#wg show interfaces
|
|
|
|
# all active connections will be shown
|
|
# parse that
|
|
# loop over those and display all active connections
|
|
|
|
# script copied from polybar-scripts
|
|
connection_status() {
|
|
if [ -f "$config" ]; then
|
|
connection=$(sudo wg show "$config_name" 2>/dev/null | head -n 1 | awk '{print $NF }')
|
|
|
|
if [ "$connection" = "$config_name" ]; then
|
|
echo "1"
|
|
else
|
|
echo "2"
|
|
fi
|
|
else
|
|
echo "3"
|
|
fi
|
|
}
|
|
|
|
config="$HOME/wg/wireguard.conf"
|
|
config_name=$(basename "${config%.*}")
|
|
|
|
case "$1" in
|
|
--toggle)
|
|
if [ "$(connection_status)" = "1" ]; then
|
|
sudo wg-quick down "$config" 2>/dev/null
|
|
else
|
|
sudo wg-quick up "$config" 2>/dev/null
|
|
fi
|
|
;;
|
|
*)
|
|
if [ "$(connection_status)" = "1" ]; then
|
|
echo "#1 $config_name"
|
|
elif [ "$(connection_status)" = "3" ]; then
|
|
echo "#3 Config not found!"
|
|
else
|
|
echo "#2 down"
|
|
fi
|
|
;;
|
|
esac
|