blob: 9ff88fcc740ceeda25df8f1757288e6418c53b1b (
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
|
#!/usr/bin/env bash
ivpn_status_output () {
ivpn status
}
ivpn_connected () {
ivpn status | grep -q '^VPN.*: CONNECTED'
}
toggle_status () {
if ivpn_connected; then
ivpn disconnect
else
ivpn connect -f
fi
}
case $1 in
--status)
status_output="$(ivpn_status_output)"
if echo "$status_output" | grep -q '^VPN.*: CONNECTED'; then
# Line after "VPN : CONNECTED" holds server + location,
# e.g. "de.gw.ivpn.net [de3.gw.ivpn.net], Frankfurt (DE), Germany"
server_line=$(echo "$status_output" | awk '/^VPN.*CONNECTED/{getline; sub(/^[ \t]+/, ""); print}')
protocol=$(echo "$status_output" | awk -F': ' '/^[ \t]*Protocol/{print $2}')
server_ip=$(echo "$status_output" | awk -F': ' '/^[ \t]*Server IP/{print $2}')
endpoint="${server_line%%,*} (${protocol})"
location="${server_line#*, } (${server_ip})"
echo "{\"text\":\"\",\"class\":\"connected\",\"alt\":\"connected\", \"tooltip\": \"${endpoint}\\n${location}\"}"
else
echo "{\"text\":\"\",\"class\":\"disconnected\",\"alt\":\"disconnected\", \"tooltip\": \"VPN is not active.\"}"
fi
;;
--toggle)
toggle_status
;;
esac
|