#!/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 } 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[] | ("" + (.DNSName | split(".")[0]) + "")' | 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