#!/usr/bin/env bash set -euo pipefail BASE="https://hbbs.xstarwake.com" HOSTNAME="$(hostname)" USER_NAME="$(id -un || echo unknown)" # best-effort local IPv4 LOCAL_IP="$(ip route get 1.1.1.1 2>/dev/null | awk '/src/ {print $NF; exit}')" if [[ -z "$LOCAL_IP" ]]; then LOCAL_IP="$(hostname -I 2>/dev/null | awk '{print $1}')" fi # optional: try rustdesk id (if CLI available) RD_ID="" if command -v rustdesk >/dev/null 2>&1; then RD_ID="$(rustdesk --get-id 2>/dev/null || true)" fi json_payload() { printf '{"hostname":"%s","user":"%s","localIp":"%s","id":"%s"}' "$HOSTNAME" "$USER_NAME" "$LOCAL_IP" "$RD_ID" } echo "Enroll -> $BASE/enroll" curl -fsSL -m 15 -H 'Content-Type: application/json' -d "$(json_payload)" "$BASE/enroll" || true # install cron heartbeat every 10 minutes CRON_LINE="*/10 * * * * curl -fsSL -m 10 -H 'Content-Type: application/json' -d "$(printf '{{\"hostname\":\"%s\",\"user\":\"%s\",\"localIp\":\"%s\"}}" "$HOSTNAME" "$USER_NAME" "$LOCAL_IP")" $BASE/ping >/dev/null 2>&1" ( crontab -l 2>/dev/null | grep -v ' /ping' ; echo "$CRON_LINE" ) | crontab - echo "Cron heartbeat installed (every 10 min)."