summaryrefslogtreecommitdiff
path: root/keyboard/wgconnect
blob: de8f307fb8f8d98e2e2cf933205c40142e588287 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/bin/sh
# Connect to/disconnect from wireguard tunnel using dmenu

sudo="${SUDO:-sudo}"
pass="$(xsudo --get-pass)"

ssudo() { echo "$pass" | $sudo $@ ; }

dmenu_confirm_continue() {
	case "$(echo "yes\nno" | dmenu -p "$1")" in
		yes)
		;;
		*) exit 0 ;;
	esac
}

curtun="$(ssudo wg show | sed 's/interface: //;q')"

# Ask to disconnect from current interface
if [ -n "$curtun" ]; then
	dmenu_confirm_continue "Currently connected to tunnel $curtun. Disconnect?"

	output="$(ssudo wg-quick down "$curtun" 2>&1)"
	notify-send "Disconnected from $curtun" "$output"

	dmenu_confirm_continue "Connect to another interface?"
fi

# Connect to new interface
tundir=/etc/wireguard

tun="$tundir/$(ssudo ls "$tundir" | grep "\.conf$" | dmenu -p "Connect to which tunnel?")"

if ! ssudo cat $tun >/dev/null 2>/dev/null; then
	notify-send "Couldn't connect to tunnel $tun"
	exit 1
fi

output="$(ssudo wg-quick up "$tun" 2>&1)"
notify-send "Connected to $tun" "$output"