aboutsummaryrefslogtreecommitdiffstats
path: root/src/api/dashboard/mod.rs
Commit message (Collapse)AuthorAgeFilesLines
* dashboard: where a stream's lag comes fromtv4 days1-4/+13
| | | | | | | | | | | | | A stream's lag in the tooltip of `behind: …` was one figure, from when a node logged a message to when the page had it: a second and a half for a node a LAN away said nothing of where it went. The node now stamps each `messages` event with when it sent it (`{"sent": …, "messages": […]}`), and the tooltip splits each stream's lag: how long its batches waited in the node, from logging the first message to sending the batch (the node's own clock: exact), and how long they took on the way, from sending to arriving. This node's own stream is always listed, beside the three slowest.
* dashboard: messages as they cometv4 days1-23/+57
| | | | | | | | | | | | | | | | | | The node sent its messages to the page every 2 s (`messages` events, this node's and a subscribed node's), and this node's ran on the map from its counts, which come with the state: the map showed a message 2 to 4 s after it went, the messages of each 2 s spread evenly over the next. The message log now tells those waiting of each message logged (MessageLog::logged_after), and both streams send what was logged a tenth of a second after the first of it (MESSAGES_GATHERED): a busy node about ten events a second, a quiet one each message soon after it went. The page runs messages as their streams bring them, this node's from its own log too (with the addresses its PINGs went to), as far apart as they were sent; more than six on a link and way at once are shared out by kind over the moment, and after a gap only the last 2 s run. The counts still give the rates and what was delivered.
* 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 treestv8 days1-10/+20
|
* dashboard: add epoch switch indicatortv8 days1-0/+1
|
* dashboard: map remake votestv8 days1-2/+10
|
* dashboard: swarm-wide epoch shinetv8 days1-2/+9
|
* dashboard: show writer treestv10 days1-0/+47
|
* replace eager links by treestv10 days1-2/+0
|
* dashboard: show eager links on the maptv10 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 linkstv12 days1-9/+46
|
* links report downtv13 days1-0/+1
|
* dashboard: judge peers's clockstv13 days1-10/+33
|
* unify hex builderstv13 days1-6/+2
|
* dashboard: write growing list into page when servingtv13 days1-4/+9
|
* compute per-peer totals in /admin/stats oncetv13 days1-2/+4
|
* add lastSyncSecsAgo and description to /peerstv13 days1-0/+1
|
* move ChangeSet from swarm to documenttv13 days1-1/+1
|
* unify closing logictv13 days1-2/+3
|
* allow links subscriptionstv14 days1-10/+28
|
* dashboard: click on live/reconnecting triggerstv14 days1-3/+21
|
* dashboard: document follows changestv14 days1-8/+67
|
* dashboard: reload new versiontv14 days1-4/+26
|
* links answers connection typetv14 days1-0/+1
|
* dasboard cannot block shutdowntv14 days1-24/+55
|
* dashboard: show all links between peerstv14 days1-2/+6
|
* add dashboardtv14 days1-0/+394