Files
dots/config/polybar/scripts/wireguard.sh
2025-11-24 19:46:30 +07:00

55 lines
1.7 KiB
Bash
Executable File

#! /bin/bash
connected_interface=$(awg show interfaces | grep -P "awg\d+" -o)
connect() {
# doas wg-quick up wg0 && doas route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.1.1 enp5s0 && notify-send -i /home/$USER/.config/dunst/scripts/vpn.png 'VPN connected'
doas awg-quick up awg0 && sleep 3 && doas route add -host 178.49.132.41 gw 192.168.1.1 enp5s0 && doas systemctl restart dnsproxy.service && notify-send -i /home/$USER/.config/dunst/scripts/vpn.png 'VPN connected'
# sudo wg-quick up wg0 && sudo route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.1.1 enp9s0 && notify-send -i /home/$USER/.config/dunst/scripts/vpn.png 'VPN connected'
# sudo wg-quick up wg0 && sudo route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.1.1 enp9s0 && sudo route add -host 78.47.125.180 gw 192.168.1.1 enp9s0 && notify-send -i /home/$USER/.config/dunst/scripts/vpn.png 'VPN connected'
}
disconnect() {
# Normally we should have a single connected interface but technically
# there's nothing stopping us from having multiple active intgerfaces so
# let's do this in a loop:
for connected_config in $(awg show interfaces | grep -P "awg\d+" -o); do
doas awg-quick down awg0 && notify-send -i /home/$USER/.config/dunst/scripts/vpn.png 'VPN disconnected'
done
}
toggle() {
if [[ $connected_interface ]]; then
disconnect
else
connect
fi
}
print() {
if [[ $connected_interface ]]; then
echo "%{T1}說%{T-} %{T2}VPN: ON%{T-}"
#echo "%{F#FFDE7D}%{T1}說%{T-} %{T2}VPN: ON%{T-}"
else
echo "%{T1}說%{T-} %{T2}VPN: OFF%{T-}"
#echo "%{F#5f5f5f}%{T1}說%{T-} %{T2}VPN: OFF%{T-}"
fi
}
case "$1" in
--connect)
connect
;;
--disconnect)
disconnect
;;
--toggle)
toggle
;;
*)
print
;;
esac