blob: e2e1debc79ac30248c1d94c7803ffd6cba7b1979 (
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
|
#!/usr/bin/env bash
STATUS_KEY="BackendState"
RUNNING="Running"
tailscale_status () {
status="$(tailscale status --json | jq -r '.'$STATUS_KEY)"
if [ "$status" = $RUNNING ]; then
return 0
fi
return 1
}
toggle_status () {
if tailscale_status; then
tailscale down
else
tailscale up
fi
sleep 5
}
case $1 in
--status)
if tailscale_status; then
T=${2:-"green"}
F=${3:-"red"}
peers=$(tailscale status --json | jq -r --arg T "'$T'" --arg F "'$F'" '.Peer[] | ("<span color=" + (if .Online then $T else $F end) + ">" + (.DNSName | split(".")[0]) + "</span>")' | tr '\n' '\r')
exitnode=$(tailscale status --json | jq -r '.Peer[] | select(.ExitNode == true).DNSName | split(".")[0]')
echo "{\"text\":\"${exitnode}\",\"class\":\"connected\",\"alt\":\"connected\", \"tooltip\": \"${peers}\"}"
else
echo "{\"text\":\"\",\"class\":\"stopped\",\"alt\":\"stopped\", \"tooltip\": \"Tailscale is not active.\"}"
fi
;;
--toggle)
toggle_status
;;
esac
|