#!/bin/bash DB="/opt/docker-composes/rustdesk/data/db_v2.sqlite3" HBBR="hbbr" PORT="21117" case "$1" in peers) sqlite3 "$DB" "SELECT COUNT(*) FROM peer;" ;; peer_ip) ID="$2" sqlite3 -noheader "$DB" \ "SELECT json_extract(info, '\$.ip') FROM peer WHERE id='$ID';" | sed 's/^::ffff://' ;; discovery) sqlite3 -separator '|' -noheader "$DB" \ "SELECT id, json_extract(info, '$.ip') FROM peer ORDER BY created_at DESC;" | while IFS='|' read -r id ip; do ip="${ip#::ffff:}" printf '%s|%s\n' "$id" "$ip" done | jq -R -s ' split("\n") | map(select(length > 0)) | map(split("|")) | map({ "{#RD_ID}": .[0], "{#RD_IP}": .[1] }) ' ;; connections) PID="$(docker inspect -f '{{.State.Pid}}' "$HBBR" 2>/dev/null)" || exit 1 if [ -z "$PID" ] || [ "$PID" = "0" ]; then echo "0" exit 0 fi nsenter -t "$PID" -n \ ss -H -tn state established '( sport = :21117 )' 2>/dev/null | wc -l ;; sessions) PID="$(docker inspect -f '{{.State.Pid}}' "$HBBR" 2>/dev/null)" || exit 1 if [ -z "$PID" ] || [ "$PID" = "0" ]; then echo "0" exit 0 fi CONNECTIONS="$( nsenter -t "$PID" -n \ ss -H -tn state established '( sport = :21117 )' 2>/dev/null | wc -l )" echo $((CONNECTIONS / 2)) ;; relay_ips) nsenter -t "$(docker inspect -f '{{.State.Pid}}' "$HBBR")" -n \ ss -H -tn state established '( sport = :21117 )' | awk '{print $4}' | sed -E 's/^\[::ffff:([^]]+)\]:[0-9]+$/\1/' | sort -u ;; relay_json) nsenter -t "$(docker inspect -f '{{.State.Pid}}' "$HBBR")" -n \ ss -H -tn state established '( sport = :21117 )' | awk '{print $5}' | sed -E \ -e 's/^\[::ffff://g' \ -e 's/\]:[0-9]+$//g' | sort -u | jq -R -s ' split("\n") | map(select(length > 0)) | { connections: length, ips: . } ' ;; json) peers=$(sqlite3 "$DB" "SELECT COUNT(*) FROM peer;") connections=$( nsenter -t "$(docker inspect -f '{{.State.Pid}}' "$HBBR")" -n \ ss -H -tn state established '( sport = :21117 )' | wc -l ) sessions=$((connections / 2)) jq -n \ --argjson peers "$peers" \ --argjson connections "$connections" \ --argjson sessions "$sessions" \ '{ peers: $peers, relay_connections: $connections, relay_sessions: $sessions }' ;; *) echo "Usage:" echo " $0 peers" echo " $0 peer_ip " echo " $0 discovery" echo " $0 connections" echo " $0 sessions" echo " $0 relay_ips" echo " $0 relay_json" echo " $0 json" exit 1 ;; esac