v0.4.1
This commit is contained in:
1 parent
439cc20dcf
commit
722a49f6bc
14 files changed
+564
-283
No files matched your search
@@ -15,8 +15,9 @@ ten sam układ tokenów kolorów, te same komponenty UI.
|
||||
- `clientmove` wskazanego `clid` do nowego kanału;
|
||||
- dashboard statystyk: liczba online na żywo (auto-odświeżanie co 60 s przez
|
||||
`GET /stats/live`), uptime/wersja/platforma serwera (`serverinfo`),
|
||||
wykresy RRD: 12h, 24h, 72h, tydzień, miesiąc, rok — w kolorystyce
|
||||
dopasowanej do motywu aplikacji (ciemne tło, akcentowa linia, watermark);
|
||||
wykresy RRD: 12h, 24h, 72h, tydzień, miesiąc, rok — dane pobierane jako
|
||||
JSON i rysowane responsywnie w `<canvas>` po stronie przeglądarki (patrz
|
||||
sekcja [RRD](#rrd)), z podglądem na powiększenie;
|
||||
- przełącznik jasny/ciemny motyw (zapamiętywany w `localStorage`);
|
||||
- formularz pod `/embed/channel`, przeznaczony do osadzenia na innej domenie.
|
||||
|
||||
@@ -103,14 +104,22 @@ Aplikacja używa systemowego `rrdtool`, a nie biblioteki Go, więc istniejący p
|
||||
nową bazę `rrdtool create` z RRA pokrywającymi 12h/24h/72h/tydzień/miesiąc/rok
|
||||
przy kroku 60 s — ten sam layout logiczny co istniejące wykresy aplikacji.
|
||||
|
||||
Wykresy renderowane są w kolorach dopasowanych do motywu dashboardu
|
||||
(`--panel`/`--field`/`--accent` z `internal/web/assets/app.css`), z cienkim
|
||||
wypełnieniem pod linią, watermarkiem z datą generacji i `--slope-mode` dla
|
||||
gładszej linii. Każdy zakres jest renderowany dwukrotnie — `<zakres>.png`
|
||||
(ciemna paleta) i `<zakres>-light.png` (jasna paleta) — a front-end
|
||||
(`internal/web/assets/app.js`) przełącza `src` na właściwy wariant przy
|
||||
zmianie motywu, więc wykresy zawsze dopasowane są do aktywnego trybu
|
||||
jasny/ciemny.
|
||||
Wykresy na dashboardzie **nie są** PNG renderowanymi przez `rrdtool graph`.
|
||||
`GET /stats/graph/{zakres}` (`internal/rrd/rrd.go`, `Manager.Fetch`) woła
|
||||
`rrdtool fetch` i zwraca surowe próbki jako mały JSON (`{"points":[{"t":...,
|
||||
"v":...},...],"current":...,"average":...,"max":...}`); front-end
|
||||
(`internal/web/assets/app.js`) rysuje z tego wykres samodzielnie w
|
||||
`<canvas>`, kolorami wziętymi na żywo z CSS (`--line`/--muted`/`--accent`),
|
||||
więc przy przełączeniu jasny/ciemny motyw wykres się po prostu przerysowuje
|
||||
z już pobranych danych — bez kolejnego zapytania do serwera i bez osobnych
|
||||
plików PNG per motyw. Dzięki temu wykres jest też w pełni responsywny
|
||||
(łącznie z telefonem) i powiększenie w lightboksie to kolejne przerysowanie
|
||||
tych samych danych w większym `<canvas>`, a nie osobny plik.
|
||||
|
||||
`Fetch` dobiera funkcję konsolidacji RRD do zakresu: `LAST` dla 12h/24h/72h
|
||||
(pełna rozdzielczość, RRA `RRA:LAST:0.5:1:4500`), `AVERAGE` dla
|
||||
tydzień/miesiąc/rok (te okna istnieją tylko w gęściej uśrednionych RRA —
|
||||
pytanie ich o `LAST` nie zwróciłoby nic starszego niż ok. 75h).
|
||||
|
||||
Jeżeli docelowy serwer ma inną architekturę/endianness niż źródłowy x86_64 little-endian, przenieś RRD przez `rrdtool dump`/`rrdtool restore` zamiast kopiowania binarnego pliku.
|
||||
|
||||
@@ -146,7 +155,7 @@ podanym w nawiasie:
|
||||
|---|---|---|---|
|
||||
| `RATE_LIMIT_STATS` | `GET /stats` (na minutę) | 60 | render strony statystyk |
|
||||
| `RATE_LIMIT_STATS_LIVE` | `GET /stats/live` (na minutę) | 60 | auto-odświeżanie licznika online co 60 s |
|
||||
| `RATE_LIMIT_GRAPH` | `GET /graph/*.png` (na minutę) | 600 | wykresy RRD — PNG są cache'owane na dysku ~55 s, więc limit jest wysoki: jeden widok strony sam zużywa 6 zakresów × 2 motywy, a NAT/kilka kart to łatwo pomnoży |
|
||||
| `RATE_LIMIT_GRAPH` | `GET /stats/graph/{zakres}` (na minutę) | 600 | dane wykresów — każde trafienie to jedno tanie `rrdtool fetch`, limit jest wysoki, bo jeden widok strony sam zużywa 6 zakresów, a NAT/kilka kart to łatwo pomnoży |
|
||||
| `RATE_LIMIT_CHANNEL` | `POST /channel/create` (na minutę) | 40 | tworzenie kanału |
|
||||
| `RATE_LIMIT_VERIFY` | `POST /verify/start` (na minutę) | 10 | start weryfikacji nicku (NAT) |
|
||||
| `RATE_LIMIT_VERIFY_DONE` | `POST /verify/complete` (na minutę) | 10 | wpisanie 6-cyfrowego kodu |
|
||||
|
||||
Reference in new issue
Block a user