aboutsummaryrefslogtreecommitdiffstats
path: root/src/api/dashboard/mod.rs
Commit message (Collapse)AuthorAgeFilesLines
* dashboard: a subscribed node's message written out, read from it when showntv2 days1-0/+15
| | | | | | | | | | A subscribed node's messages come without being written out (their stream leaves the text out: up to 8 KiB each, 500 at a time), so the figures box said only when, both ends, type and size of one. Now the node answers for one message by its number, `GET /admin/dashboard/messages/own/{seq}` (`{"text": …}`, `404` once it isn't kept), which pages of other origins may call as they do its streams (`cors::open`), and the page reads it when the message is shown, with its narrow token, and keeps it on the message. Where it can't be read, the box says why.
* dashboard: where a stream's lag comes fromtv2 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 cometv2 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 nonetv3 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 sessionstv4 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 removedtv4 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 pagetv4 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 themtv4 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 consoletv4 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 dotstv4 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 CORStv4 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 readtv4 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 checkstv6 days1-0/+27
|
* dashboard: snapshot lazytv6 days1-18/+47
|
* round trips in treestv6 days1-10/+20
|
* dashboard: add epoch switch indicatortv6 days1-0/+1
|
* dashboard: map remake votestv6 days1-2/+10
|
* dashboard: swarm-wide epoch shinetv6 days1-2/+9
|
* dashboard: show writer treestv8 days1-0/+47
|
* replace eager links by treestv8 days1-2/+0
|
* dashboard: show eager links on the maptv8 days1-0/+2
|
* swarm: relay links messagestv9 days1-5/+4
|
* dashboard: show newly joined remote peers asaptv9 days1-2/+14
|
* dashboard: double-click opens peer dashboardtv9 days1-3/+8
|
* api: /stream & dashboard send X-Accel-Bufferingtv9 days1-1/+5
|
* dashboard: always try showing ping/pong aliastv10 days1-1/+24
|
* dashboard: allow message inspectiontv10 days1-2/+33
|
* dashboard: allow delayed linkstv10 days1-9/+46
|
* links report downtv11 days1-0/+1
|
* dashboard: judge peers's clockstv11 days1-10/+33
|
* unify hex builderstv11 days1-6/+2
|
* dashboard: write growing list into page when servingtv11 days1-4/+9
|
* compute per-peer totals in /admin/stats oncetv11 days1-2/+4
|
* add lastSyncSecsAgo and description to /peerstv11 days1-0/+1
|
* move ChangeSet from swarm to documenttv11 days1-1/+1
|
* unify closing logictv11 days1-2/+3
|
* allow links subscriptionstv12 days1-10/+28
|
* dashboard: click on live/reconnecting triggerstv12 days1-3/+21
|
* dashboard: document follows changestv12 days1-8/+67
|
* dashboard: reload new versiontv12 days1-4/+26
|
* links answers connection typetv12 days1-0/+1
|
* dasboard cannot block shutdowntv12 days1-24/+55
|
* dashboard: show all links between peerstv12 days1-2/+6
|
* add dashboardtv12 days1-0/+394