#!/bin/bash adguard_test_domain='check.adguard.test' adguard_home_ip='100.64.64.15' if [[ "$(uname)" == "Darwin" ]]; then # macOS local_ip=$(ifconfig | grep "inet " | grep -v 127.0.0.1 | awk '{print $2}' | head -n1) uptime=$(uptime | awk '{print $3}' | sed 's/,//') else # Linux local_ip=$(hostname -I | awk '{print $1}') uptime=$(uptime -p) fi wan_info=$(curl -s --max-time 10 https://am.i.mullvad.net/json) wan_connected=false if [ ! -z "$wan_info" ]; then wan_connected=true wan_ip=$(echo "$wan_info" | jq -r '.ip') mullvad_exit_ip=$(echo "$wan_info" | jq '.mullvad_exit_ip') blacklisted=$(echo "$wan_info" | jq '.blacklisted.blacklisted') else wan_ip="Unavailable" fi # Check if Tailscale is installed and get IP if command -v tailscale &> /dev/null; then has_tailscale=true tailscale_ip=$(tailscale ip -4) # Get Tailscale exit-node information ts_exitnode_output=$(tailscale exit-node list) # Parse exit node hostname if echo "$ts_exitnode_output" | grep -q 'selected'; then mullvad_exitnode=true # Extract the hostname of the selected exit node mullvad_hostname=$(echo "$ts_exitnode_output" | grep 'selected' | awk '{print $2}') else mullvad_exitnode=false mullvad_hostname="" fi else has_tailscale=false tailscale_ip="Not installed" mullvad_exitnode=false mullvad_hostname="" fi nextdns_info=$(curl -sL --max-time 10 https://test.nextdns.io) if [ -z "$nextdns_info" ]; then echo "Failed to fetch NextDNS status or no internet connection." >&2 nextdns_connected=false nextdns_protocol="" nextdns_client="" else nextdns_status=$(echo "$nextdns_info" | jq -r '.status') if [ "$nextdns_status" = "ok" ]; then nextdns_connected=true nextdns_protocol=$(echo "$nextdns_info" | jq -r '.protocol') nextdns_client=$(echo "$nextdns_info" | jq -r '.clientName') else nextdns_connected=false nextdns_protocol="" nextdns_client="" fi fi # Check AdGuard Home DNS resolved_ip=$(dig +short $adguard_test_domain) if [ "$resolved_ip" = "$adguard_home_ip" ]; then adguard_connected=true adguard_protocol="AdGuard Home" adguard_client="$adguard_home_ip" else adguard_connected=false adguard_protocol="" adguard_client="" fi cat <