Add Starlink status lines for the physical gateway pane (closes #3)
check / check (push) Failing after 1s
check / check (push) Failing after 1s
When the non-VPN physical gateway is a Starlink dish, two lines are shown under that pane: state, uptime, obstruction and alert count; then pop-ping latency and drop rate with downlink/uplink throughput. They turn red when the dish is not connected or an alert is active. Detection is a TCP connect to the dish's fixed endpoint 192.168.100.1:9200, bound to the physical interface the same way the latency probes bind. Until a dish answers nothing is drawn and no status is fetched, so an absent dish adds no noise. Status comes from the dish's local get_status gRPC call. Detection and the fetch sit behind a small Client interface; the loop and the pure Render function are tested with a fake, no dish and no network. Model: opus-4-8
This commit is contained in:
@@ -67,6 +67,21 @@ Anything outside this matrix — on Linux, only one of the named pair present, o
|
||||
no/multiple default routes when neither is present; on macOS, no default route
|
||||
or more than one physical default route — exits with a clear error.
|
||||
|
||||
## Starlink status
|
||||
|
||||
When the non-VPN physical gateway is a Starlink dish, two extra lines appear
|
||||
under that pane: dish state, uptime, obstruction and alert count on the first,
|
||||
and pop-ping latency and drop rate with downlink/uplink throughput on the
|
||||
second. They turn red when the dish is not connected or an alert is active.
|
||||
|
||||
Detection is a TCP connect to the dish's fixed local endpoint,
|
||||
`192.168.100.1:9200`, made over the physical interface (the same binding the
|
||||
latency probes use). The dish sits behind the Starlink router, so this is not a
|
||||
gateway-address check. rtnetmon probes once a minute until a dish answers and
|
||||
then reads its status every few seconds; when no dish answers, nothing is drawn
|
||||
and no status is fetched. The status comes from the dish's local `get_status`
|
||||
gRPC call.
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
@@ -107,6 +122,10 @@ rtnetmon/
|
||||
│ │ ├── netdetect.go # selection logic and route parsers (pure)
|
||||
│ │ ├── routes_linux.go # Linux default-route query (build-tagged)
|
||||
│ │ └── routes_darwin.go # macOS default-route query (build-tagged)
|
||||
│ ├── starlink/ # Starlink dish detection and status
|
||||
│ │ ├── starlink.go # Status, Client interface, pure Render
|
||||
│ │ ├── client.go # real gRPC client (get_status)
|
||||
│ │ └── pb/ # generated bindings for the get_status RPC
|
||||
│ └── monitor/ # core monitoring functionality
|
||||
│ ├── monitor.go # monitor types, probes, logging
|
||||
│ ├── loops.go # monitoring loops (reachability, loss, TCP)
|
||||
|
||||
Reference in New Issue
Block a user