feat(tailscale): watchdog нативного режима и панель пиров тейлнета
- watchdog: проверка native-секции в slow-тире, авторестарт демона после 2 сбоев, TG-алерт раз в час - AI Doctor: узел Tailscale (готов/не установлен/упал) только при настроенном native - провайдер: режим peers — парсинг status --json через per-section socket - RPC get_tailscale_status/get_tailscale_peers/tailscale_restart - дашборд: карточка Tailscale (состояние, IP роутера, до 5 пиров с онлайн-статусом)
This commit is contained in:
@@ -43,9 +43,13 @@ cat >"$STUB_BIN/tailscale" <<EOF
|
||||
printf 'cli %s\n' "\$*" >> '$TS_LOG'
|
||||
case "\$*" in
|
||||
*version*) echo "1.80.3-smoke" ;;
|
||||
*--json*) cat '$WORK_DIR/ts-status.json' ;;
|
||||
*) exit 0 ;;
|
||||
esac
|
||||
EOF
|
||||
cat >"$WORK_DIR/ts-status.json" <<'JSON'
|
||||
{"BackendState":"Running","Self":{"HostName":"router","DNSName":"router.tailnet.ts.net.","TailscaleIPs":["100.64.0.1"]},"Peer":{"k1":{"HostName":"phone","DNSName":"phone.tailnet.ts.net.","TailscaleIPs":["100.64.0.2"],"Online":true},"k2":{"HostName":"laptop","DNSName":"laptop.tailnet.ts.net.","TailscaleIPs":["100.64.0.3"],"Online":false}}}
|
||||
JSON
|
||||
chmod +x "$STUB_BIN/tailscaled" "$STUB_BIN/tailscale"
|
||||
|
||||
STATE_FILE="$WORK_DIR/uci.state"
|
||||
@@ -121,6 +125,14 @@ printf '%s' "$STATUS" | grep -Fq '"configured": true' ||
|
||||
printf '%s' "$STATUS" | grep -Fq '"ready": true' ||
|
||||
fail "status must report ready=true, got: $STATUS"
|
||||
|
||||
PEERS="$(run peers)"
|
||||
printf '%s' "$PEERS" | grep -Fq '"backend_state": "Running"' ||
|
||||
fail "peers must relay backend state, got: $PEERS"
|
||||
printf '%s' "$PEERS" | grep -Fq '"dns_name": "phone.tailnet.ts.net."' ||
|
||||
fail "peers must include tailnet peers, got: $PEERS"
|
||||
printf '%s' "$PEERS" | grep -Fq '"online": false' ||
|
||||
fail "peers must report offline flag, got: $PEERS"
|
||||
|
||||
# --- idempotent restart -----------------------------------------------------
|
||||
run start-runtime || fail "second start-runtime failed"
|
||||
RULE_COUNT=$(ip rule list | grep -cF "lookup 4247")
|
||||
|
||||
Reference in New Issue
Block a user