aboutsummaryrefslogtreecommitdiffstats
path: root/src/api/dashboard/mod.rs
Commit message (Collapse)AuthorAgeFilesLines
* dashboard: a content security policy, framed by nonetv5 days1-4/+57
| | | | | | | | | | | | | | | | | | Review finding 12, browsers: the dashboard holds a bearer token in memory and edits the document, but had no content security policy and could be framed by any page of the same site (another port on the same host, anything sharing a domain behind a proxy), acting with its user's token. The dashboard and the login page now come with a policy that runs only their own inline script (by its hash, computed when first served), loads nothing from elsewhere, and lets no page frame them (frame-ancestors 'none', X-Frame-Options DENY). Fetches stay open to any origin, as the members' dashboards are wherever the member list says. The browser check (check.js) loads the page from a file, without the header, so the policy wants one look in a browser.
* auth: a login page and browser sessionstv6 days1-0/+7
| | | | | | | | | GET /login without authentication: log in by password or with a token (from a login by key). POST/DELETE /auth/session keep the token as an HttpOnly, SameSite=Strict cookie; the dashboard sends a browser without a user there and renews the session while open. Auth plan M2/M3 (browsers).
* dashboard: without LINKS; LINKS removedtv6 days1-107/+25
| | | | | | | | | The dashboard reads every member's links from the members themselves; LINKS and LINKS_REPLY, swarm::links and their wire tags go (wire version bumped). Nodes the browser can't reach are drawn from what the reachable ones measure. Auth plan M3.
* dashboard: clocks on the pagetv6 days1-14/+1
| | | | | | | | The page compares the clocks the reports on its map carry: this node's peers', and those of the nodes it subscribes to; the node no longer gathers them from LINKS (api/dashboard/clocks.rs goes). Auth plan M3 (preparing LINKS' removal).
* dashboard: the writers' trees as this node knows themtv6 days1-39/+5
| | | | | | | | The tree drawn is computed as every node computes its own part of it: from the member list, and whom it and its neighbours reach, as they told it; no longer from the links members report over LINKS. Auth plan M3 (preparing LINKS' removal).
* dashboard: subscribed nodes' messages in the consoletv6 days1-26/+36
| | | | | | | Each tick's messages of a subscribed node, listed in the console with this node's own, from its own stream. Auth plan M3 (live data from every reachable node).
* dashboard: subscribed nodes' messages as dotstv6 days1-0/+48
| | | | | | | The page reads a subscribed node's message counts from it too, and draws them as dots on the map, as this node's own. Auth plan M3 (live data from every reachable node).
* dashboard: own links over the API, and CORStv6 days1-0/+54
| | | | | | | | | GET /admin/dashboard/links/own and its event stream: a node's own links, as LINKS_REPLY carried them, for other members' dashboards with a token. CORS for the members' dashboard origins and --cors-origins, without credentials. Auth plan M3.
* dashboard: what its user may readtv6 days1-3/+69
| | | | | | | The dashboard's document box is read through the store, as its user may, and the page is told only of changes where its user may read. Auth plan M1 (the dashboard).
* dashboard: browser checkstv8 days1-0/+27
|
* dashboard: snapshot lazytv8 days1-18/+47
|
* round trips in treestv9 days1-10/+20
|
* dashboard: add epoch switch indicatortv9 days1-0/+1
|
* dashboard: map remake votestv9 days1-2/+10
|
* dashboard: swarm-wide epoch shinetv9 days1-2/+9
|
* dashboard: show writer treestv11 days1-0/+47
|
* replace eager links by treestv11 days1-2/+0
|
* dashboard: show eager links on the maptv11 days1-0/+2
|
* swarm: relay links messagestv11 days1-5/+4
|
* dashboard: show newly joined remote peers asaptv11 days1-2/+14
|
* dashboard: double-click opens peer dashboardtv11 days1-3/+8
|
* api: /stream & dashboard send X-Accel-Bufferingtv11 days1-1/+5
|
* dashboard: always try showing ping/pong aliastv12 days1-1/+24
|
* dashboard: allow message inspectiontv12 days1-2/+33
|
* dashboard: allow delayed linkstv13 days1-9/+46
|
* links report downtv13 days1-0/+1
|
* dashboard: judge peers's clockstv14 days1-10/+33
|
* unify hex builderstv14 days1-6/+2
|
* dashboard: write growing list into page when servingtv14 days1-4/+9
|
* compute per-peer totals in /admin/stats oncetv14 days1-2/+4
|
* add lastSyncSecsAgo and description to /peerstv14 days1-0/+1
|
* move ChangeSet from swarm to documenttv14 days1-1/+1
|
* unify closing logictv14 days1-2/+3
|
* allow links subscriptionstv2026-10-301-10/+28
|
* dashboard: click on live/reconnecting triggerstv2026-10-301-3/+21
|
* dashboard: document follows changestv2026-10-301-8/+67
|
* dashboard: reload new versiontv2026-10-301-4/+26
|
* links answers connection typetv2026-10-301-0/+1
|
* dasboard cannot block shutdowntv2026-10-301-24/+55
|
* dashboard: show all links between peerstv2026-10-301-2/+6
|
* add dashboardtv2026-10-301-0/+394