v0.35.3
This commit is contained in:
1 parent
f4606cce18
commit
51f22a72cc
11 files changed
+52
-31
No files matched your search
@@ -1,6 +1,6 @@
|
|||||||
# RustProxy source and documentation maintenance
|
# RustProxy source and documentation maintenance
|
||||||
|
|
||||||
Current source version: **0.35.2**. The Cargo package and binary are named `rust-proxy`.
|
Current source version: **0.35.3**. The Cargo package and binary are named `rust-proxy`.
|
||||||
|
|
||||||
Before editing, read [README.md](README.md), the relevant [documentation guide](docs/README.md) and the actual code and tests. Historical release experiments are not current specifications. Use the bundled `src/admin/openapi.json` for API routes and payloads; the source implementation is authoritative for runtime behavior.
|
Before editing, read [README.md](README.md), the relevant [documentation guide](docs/README.md) and the actual code and tests. Historical release experiments are not current specifications. Use the bundled `src/admin/openapi.json` for API routes and payloads; the source implementation is authoritative for runtime behavior.
|
||||||
|
|
||||||
|
|||||||
+7
-1
@@ -2,12 +2,18 @@
|
|||||||
|
|
||||||
Release history focused on **features, settings, default behavior, compatibility and fixes**. Changes to internal code structure and preliminary performance experiments are intentionally omitted. Historical descriptions reflect their respective releases; consult the current documentation for the settings available in the latest release.
|
Release history focused on **features, settings, default behavior, compatibility and fixes**. Changes to internal code structure and preliminary performance experiments are intentionally omitted. Historical descriptions reflect their respective releases; consult the current documentation for the settings available in the latest release.
|
||||||
|
|
||||||
|
## 0.35.3 — Overview layout fixes
|
||||||
|
|
||||||
|
- **Standard Overview layout restored:** the quick-health tiles added in 0.35.2 (healthy backends, error share, requests rejected by limits, nearest certificate expiry) are now hidden by default and placed at the end of the Overview, so they no longer shift the standard block layout. Enable them in the layout editor when needed.
|
||||||
|
- **Fixed:** the "Saved default" status next to the history sample count was always visible and looked like a fresh save notification. It now appears only for an unsaved temporary choice or briefly after **Remember choice**.
|
||||||
|
- **Upgrade notes:** no configuration changes are required. If 0.35.2 already changed your Overview, use **Unlock layout → Reset layout** to restore the default arrangement, or hide the tiles in the layout editor.
|
||||||
|
|
||||||
## 0.35.2 — memory fix, health check options and Overview tiles
|
## 0.35.2 — memory fix, health check options and Overview tiles
|
||||||
|
|
||||||
- **Memory use restored:** with a large HOT cache, 0.35.1 used about 25% more memory than 0.35.0 (for example 1.1–1.2 GiB instead of about 800 MiB with a 600 MiB cache). The default build is back to the 0.35.0 memory profile. The faster alternative allocator is available as an optional build feature for servers with spare RAM; the Performance guide explains the trade-off with measurements.
|
- **Memory use restored:** with a large HOT cache, 0.35.1 used about 25% more memory than 0.35.0 (for example 1.1–1.2 GiB instead of about 800 MiB with a 600 MiB cache). The default build is back to the 0.35.0 memory profile. The faster alternative allocator is available as an optional build feature for servers with spare RAM; the Performance guide explains the trade-off with measurements.
|
||||||
- **Health check port:** active TCP and HTTP health checks can probe a different port than the one receiving traffic, for example a status port 8079 for a backend serving on port 80. It can be set for a whole Vhost or per backend; host, TLS and address restrictions stay the same.
|
- **Health check port:** active TCP and HTTP health checks can probe a different port than the one receiving traffic, for example a status port 8079 for a backend serving on port 80. It can be set for a whole Vhost or per backend; host, TLS and address restrictions stay the same.
|
||||||
- **Expected response text:** HTTP health checks can require a text fragment in the response body, so a status page that answers 200 while reporting a degraded state marks the backend as down.
|
- **Expected response text:** HTTP health checks can require a text fragment in the response body, so a status page that answers 200 while reporting a degraded state marks the backend as down.
|
||||||
- **New Overview tiles:** healthy backends (with the names of failing ones), error share, requests rejected by limits and the nearest certificate expiry are shown on the Overview by default.
|
- **New Overview tiles:** healthy backends (with the names of failing ones), error share, requests rejected by limits and the nearest certificate expiry.
|
||||||
- **Certificate expiry metrics:** Prometheus now exports the expiry date and remaining days of every installed certificate, including manually uploaded ones, for alerting.
|
- **Certificate expiry metrics:** Prometheus now exports the expiry date and remaining days of every installed certificate, including manually uploaded ones, for alerting.
|
||||||
- **Safari:** the Overview no longer jumps when you scroll near the Backends table while live values refresh.
|
- **Safari:** the Overview no longer jumps when you scroll near the Backends table while live values refresh.
|
||||||
- **Fixed:** network interface traffic below 1 KiB/s is shown as a whole number of bytes instead of a long decimal.
|
- **Fixed:** network interface traffic below 1 KiB/s is shown as a whole number of bytes instead of a long decimal.
|
||||||
|
|||||||
Generated
+1
-1
@@ -1943,7 +1943,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rust-proxy"
|
name = "rust-proxy"
|
||||||
version = "0.35.2"
|
version = "0.35.3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"arc-swap",
|
"arc-swap",
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "rust-proxy"
|
name = "rust-proxy"
|
||||||
version = "0.35.2"
|
version = "0.35.3"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
rust-version = "1.99.1"
|
rust-version = "1.99.1"
|
||||||
description = "RustProxy - independent reverse proxy with local administration"
|
description = "RustProxy - independent reverse proxy with local administration"
|
||||||
|
|||||||
+10
-10
@@ -1,10 +1,10 @@
|
|||||||
61bf40a0572889dc8b0dda9eae4e93e44b0de9364b3c798106c85700ffb37c23 .dockerignore
|
61bf40a0572889dc8b0dda9eae4e93e44b0de9364b3c798106c85700ffb37c23 .dockerignore
|
||||||
4140a2956264b44f259e6a37fc00ba02097bbe68b09296e04d3d243c1287129b .env.example
|
4140a2956264b44f259e6a37fc00ba02097bbe68b09296e04d3d243c1287129b .env.example
|
||||||
ba8bc979322a494cfce59398085259d059142d6a789bbe73ed7992d143123f06 .gitignore
|
ba8bc979322a494cfce59398085259d059142d6a789bbe73ed7992d143123f06 .gitignore
|
||||||
fc231d1592f011579e4ab334080e612a07124031ee1131ac290881eed74584c2 AGENTS.md
|
5142c2151f434a42b925a6def77b726abf0c10e8404f8db08c999ca1cad43386 AGENTS.md
|
||||||
a3aa62cb339131a2c2b766ebf97d1b8a3a2f0b3e1c56751dd6a4201ccfe63225 CHANGELOG.md
|
c2c23ce76282075cc49bf1609fe693591c900a5a120ff3e209e00f86a97c0141 CHANGELOG.md
|
||||||
9d4a829ffb913892a929778b9c25bb461388067359af474fa535c70aaefd54c2 Cargo.lock
|
77a69eb3906a27fa42d4bcb60e9595e86fc23ad74d72b96f2710527da49f5225 Cargo.lock
|
||||||
ca231b75557628c8181945103858a2347562e485d3e03c3fd871629dc1fdecab Cargo.toml
|
5d49aef294682f80d98cc2cc50d3908a8e5684151d38ee5dfbd04cd6cd95f9e0 Cargo.toml
|
||||||
25c7f3c8162cbf5cc156439774118a81dae9fdc52b611ec7e40c230fc99a772c Dockerfile
|
25c7f3c8162cbf5cc156439774118a81dae9fdc52b611ec7e40c230fc99a772c Dockerfile
|
||||||
0d96a4ff68ad6d4b6f1f30f713b18d5184912ba8dd389f86aa7710db079abcb0 LICENSE
|
0d96a4ff68ad6d4b6f1f30f713b18d5184912ba8dd389f86aa7710db079abcb0 LICENSE
|
||||||
82d1dee2fc68158f0ea73259151461e64c8b18d807cd1fecfb1ed99dc30cf5f4 README.md
|
82d1dee2fc68158f0ea73259151461e64c8b18d807cd1fecfb1ed99dc30cf5f4 README.md
|
||||||
@@ -34,7 +34,7 @@ a1b6b8675d3b8321160406bc716f1355356e1e3dd056d4785be1d06a99313f31 docs/API.md
|
|||||||
32599d67a11fd0ebbc612e82b9f602789f4ed4103cda482c6870d8741100c8b4 docs/CERTIFICATES.md
|
32599d67a11fd0ebbc612e82b9f602789f4ed4103cda482c6870d8741100c8b4 docs/CERTIFICATES.md
|
||||||
02bb383b5c3bce22616c3cc3db30a9469806dc16decb509973e84c60aa30fc5b docs/CONFIGURATION.md
|
02bb383b5c3bce22616c3cc3db30a9469806dc16decb509973e84c60aa30fc5b docs/CONFIGURATION.md
|
||||||
fec29ce846d6705eb45819d85d382f28e28a146b265feab2e4c7cce2a35e5883 docs/CUSTOM_LOCATIONS.md
|
fec29ce846d6705eb45819d85d382f28e28a146b265feab2e4c7cce2a35e5883 docs/CUSTOM_LOCATIONS.md
|
||||||
da5bb8321e2ac4144c37d1262c07ccfbf24eb19fa9ec46ca4436d2e4b02bc55a docs/DASHBOARD.md
|
6e05af7bf62a41a3a5a71e8f0c036dc611408d04f7130c07b585317aaf59ef0b docs/DASHBOARD.md
|
||||||
11a08bf2110bbeabc924eb049a30177a216af5607ccdaf8be9178e751f78a2c4 docs/DOCKER_DISCOVERY.md
|
11a08bf2110bbeabc924eb049a30177a216af5607ccdaf8be9178e751f78a2c4 docs/DOCKER_DISCOVERY.md
|
||||||
cebf36532f7366acdcf8808d958b86b5f67246043677ee3dba9474a9b81970e0 docs/FEATURES.md
|
cebf36532f7366acdcf8808d958b86b5f67246043677ee3dba9474a9b81970e0 docs/FEATURES.md
|
||||||
3939c14e83ef6856a421f358a3f7fce3d50ea375bc1b9f0419f27a3eed658f6f docs/INSTALL.md
|
3939c14e83ef6856a421f358a3f7fce3d50ea375bc1b9f0419f27a3eed658f6f docs/INSTALL.md
|
||||||
@@ -86,7 +86,7 @@ de6550ab8f48d556d752c252212c38ba65491fd224f972c10fbe552f91ed7520 integrations/o
|
|||||||
45be151cd85fc2ef2f1fdc3003ace63381af262e73af8a685ab48cb697cc0de1 integrations/routeros-oci-build/.env.routeros.example
|
45be151cd85fc2ef2f1fdc3003ace63381af262e73af8a685ab48cb697cc0de1 integrations/routeros-oci-build/.env.routeros.example
|
||||||
11aa102de1089ecc375f20c4bd5420fcfd3b2ef23fe0c8bdf04953fcfaf40ef0 integrations/routeros-oci-build/Dockerfile.routeros
|
11aa102de1089ecc375f20c4bd5420fcfd3b2ef23fe0c8bdf04953fcfaf40ef0 integrations/routeros-oci-build/Dockerfile.routeros
|
||||||
7c7a3e51f43b43e1c962a4b0bb591f99c1f06977bf77f23719f7f867dfe7eb8e integrations/routeros-oci-build/Dockerfile.routeros.dockerignore
|
7c7a3e51f43b43e1c962a4b0bb591f99c1f06977bf77f23719f7f867dfe7eb8e integrations/routeros-oci-build/Dockerfile.routeros.dockerignore
|
||||||
567caa4833a3ba011a7527a0d0f658f7c6f1ec8583e04e87951658c04d1d10d5 integrations/routeros-oci-build/README.md
|
4c7416b85ddbf66f8434735dfa6452c8b368f496a120861a2024c5775858ad0e integrations/routeros-oci-build/README.md
|
||||||
3f092a9ab80221eddd67be4d1a776acbc6e04c1eb6011b588280c28e83b2582f integrations/routeros-oci-build/build-routeros-oci.sh
|
3f092a9ab80221eddd67be4d1a776acbc6e04c1eb6011b588280c28e83b2582f integrations/routeros-oci-build/build-routeros-oci.sh
|
||||||
3f267cafa16006e5456ade78ee2d5fae02cc7ce747839523068ffd8d7c98798a integrations/routeros-oci-build/docker-entrypoint.sh
|
3f267cafa16006e5456ade78ee2d5fae02cc7ce747839523068ffd8d7c98798a integrations/routeros-oci-build/docker-entrypoint.sh
|
||||||
13189fa546c3488dddd8efc80c47f6da5241e5fc28b79cbfe795414ea05c7a4f langs/README.md
|
13189fa546c3488dddd8efc80c47f6da5241e5fc28b79cbfe795414ea05c7a4f langs/README.md
|
||||||
@@ -162,7 +162,7 @@ d58a2ed83319176de4e66790ed292447c9497ae031464ec55cfe27174acb639a src/admin/file
|
|||||||
77b8c05645969834cc8a58e249a7b60a57d6c47ad1c5cd92ffa5e4a9b5a8e73c src/admin/file_logs_query.rs
|
77b8c05645969834cc8a58e249a7b60a57d6c47ad1c5cd92ffa5e4a9b5a8e73c src/admin/file_logs_query.rs
|
||||||
444d7715406ffd2305a72decf7fdf633aa4c2752cd881c8fa3b95ed971d79820 src/admin/logging_api.rs
|
444d7715406ffd2305a72decf7fdf633aa4c2752cd881c8fa3b95ed971d79820 src/admin/logging_api.rs
|
||||||
243f4a9c3fa99781e19c3952354d2632c0ce65e1dafac729567cbe3c177f94cb src/admin/mod.rs
|
243f4a9c3fa99781e19c3952354d2632c0ce65e1dafac729567cbe3c177f94cb src/admin/mod.rs
|
||||||
d0522ebc21845f300b083063126229301cee98af0ec8827ffd3f94d1e2915848 src/admin/openapi.json
|
61fd5eb6bb4f3cc19151ae96dc5c028e4845479ce1e2bb2691a41094dcd212c9 src/admin/openapi.json
|
||||||
1f4ec45d146e00ef664fae37517f8fcb5455d47daec496c02b2fc15ddec49131 src/admin/operations.rs
|
1f4ec45d146e00ef664fae37517f8fcb5455d47daec496c02b2fc15ddec49131 src/admin/operations.rs
|
||||||
257d93a29d0bda96462bcf695aba8d0ec0f9412c379e066ec46ae8ee034e3a53 src/admin/panel_assets.rs
|
257d93a29d0bda96462bcf695aba8d0ec0f9412c379e066ec46ae8ee034e3a53 src/admin/panel_assets.rs
|
||||||
f5127855c2994d052678865df36d703b74f4a0afc633daf7718b10da18d26e37 src/admin/panel_content.rs
|
f5127855c2994d052678865df36d703b74f4a0afc633daf7718b10da18d26e37 src/admin/panel_content.rs
|
||||||
@@ -192,7 +192,7 @@ e4238322a985d3e8b7f2de94b7af31e1c718775590b2c7b3428b878cd43337b7 src/admin/web/
|
|||||||
a184c50e1ca6bb5a14954e31b15f09ff9978fb939064ca724851bbb4e661dc56 src/admin/web/app/dashboard-presets.js
|
a184c50e1ca6bb5a14954e31b15f09ff9978fb939064ca724851bbb4e661dc56 src/admin/web/app/dashboard-presets.js
|
||||||
47eaf9486099468b3d686bdca5c6b8d59aa5f5661baa03b3698320cf618db4e2 src/admin/web/app/overview-extra-metrics.js
|
47eaf9486099468b3d686bdca5c6b8d59aa5f5661baa03b3698320cf618db4e2 src/admin/web/app/overview-extra-metrics.js
|
||||||
5e62cccf6a9507fe208e9f41bbd08453c3d8c6a6b83c56d93a2bb22550ea6e9a src/admin/web/app/overview-masonry.js
|
5e62cccf6a9507fe208e9f41bbd08453c3d8c6a6b83c56d93a2bb22550ea6e9a src/admin/web/app/overview-masonry.js
|
||||||
b52456b41451f156edf5f58492119c22726f2cf40cee938527748997e8ee7412 src/admin/web/app/overview-samples.js
|
561f750cacd4d4fcf7d1d1d9167ba296c0b43d7e81f2bff0ab1a070e1b8682d6 src/admin/web/app/overview-samples.js
|
||||||
db9012546cae8c58fc2bcbee71c9a95956a13a6db9e6d126c6a3770d45a4e4d2 src/admin/web/app/overview-wide-metrics.js
|
db9012546cae8c58fc2bcbee71c9a95956a13a6db9e6d126c6a3770d45a4e4d2 src/admin/web/app/overview-wide-metrics.js
|
||||||
bfd9fafb3112197e8f875dbf87a9a66c81aef0fe83687601a84a66f5e13f69bc src/admin/web/app/path-permissions.js
|
bfd9fafb3112197e8f875dbf87a9a66c81aef0fe83687601a84a66f5e13f69bc src/admin/web/app/path-permissions.js
|
||||||
46c7cd36397375eb7e8c230c8aa97b1dbea0a63800beb977efe1ec67a14b237e src/admin/web/app/preferences.js
|
46c7cd36397375eb7e8c230c8aa97b1dbea0a63800beb977efe1ec67a14b237e src/admin/web/app/preferences.js
|
||||||
@@ -215,8 +215,8 @@ f8b515c63080c71ee647cfd8c36628271e8357b31cd84f00cf591e9b752b44fe src/admin/web/
|
|||||||
c7c387e21e7bb148689e16f5fda6cd47c870043260dec059bbe66e09ac86fdd9 src/admin/web/css/70-responsive.css
|
c7c387e21e7bb148689e16f5fda6cd47c870043260dec059bbe66e09ac86fdd9 src/admin/web/css/70-responsive.css
|
||||||
8009afdb04d5170687816730cc930a22fead1fe0248835ca7e8de81d6907395d src/admin/web/css/README.md
|
8009afdb04d5170687816730cc930a22fead1fe0248835ca7e8de81d6907395d src/admin/web/css/README.md
|
||||||
8241bd9489dfed082863948829a44a49bf0a8e9cd63c55809655109e393e0918 src/admin/web/css/manifest.json
|
8241bd9489dfed082863948829a44a49bf0a8e9cd63c55809655109e393e0918 src/admin/web/css/manifest.json
|
||||||
91ee66142ec7b44628ea1e9a31e3b1394eafd6082f24f4a5cb614319544f699b src/admin/web/dashboard-defaults.json
|
ee51ab0912e0ade6a3e1c2ea6f533bb2f65a6d3e6ec9087e25b9f0df009c19b2 src/admin/web/dashboard-defaults.json
|
||||||
a056075e1803ad5c0297cdeaf97b47eaaaf1953b29ad7f45626c1f5ee0cb7452 src/admin/web/dashboard-widgets.json
|
20d65b22900d0de2f71dbafee2fe9a237e0a76515b386022b94c75d50bdfd926 src/admin/web/dashboard-widgets.json
|
||||||
50d1ebcbaf4d0b2968da23bb943fc3f67131c5d32df3f61d23ff37aad9da5b81 src/admin/web/demo.html
|
50d1ebcbaf4d0b2968da23bb943fc3f67131c5d32df3f61d23ff37aad9da5b81 src/admin/web/demo.html
|
||||||
448a4e00e78ca368f9307cc84f87e893e5225dc87fdeadfbb227fd4b1faf1702 src/admin/web/docker.js
|
448a4e00e78ca368f9307cc84f87e893e5225dc87fdeadfbb227fd4b1faf1702 src/admin/web/docker.js
|
||||||
fec062a5959450b1711948adf3189ceb37edca6fbead2e5bfc03b7ce397c70b1 src/admin/web/docs.css
|
fec062a5959450b1711948adf3189ceb37edca6fbead2e5bfc03b7ce397c70b1 src/admin/web/docs.css
|
||||||
|
|||||||
+4
-2
@@ -14,7 +14,7 @@ page has its own stylesheet.
|
|||||||
|
|
||||||
The Overview contains live counters, charts and optional backend, cache, PHP, Docker and Stream cards. Under **Settings → Appearance → Dashboard layout** or the Overview editor, configure visibility, order, card width, density and the number of history samples. A hidden card stops consuming its optional browser-side visualization work but does not turn off its underlying proxy feature.
|
The Overview contains live counters, charts and optional backend, cache, PHP, Docker and Stream cards. Under **Settings → Appearance → Dashboard layout** or the Overview editor, configure visibility, order, card width, density and the number of history samples. A hidden card stops consuming its optional browser-side visualization work but does not turn off its underlying proxy feature.
|
||||||
|
|
||||||
Quick-health tiles shown by default since 0.35.2:
|
Optional quick-health tiles (since 0.35.2, hidden by default; enable them in the layout editor or **Settings → Appearance → Dashboard layout**):
|
||||||
|
|
||||||
| Tile | Shows |
|
| Tile | Shows |
|
||||||
|---|---|
|
|---|---|
|
||||||
@@ -23,7 +23,9 @@ Quick-health tiles shown by default since 0.35.2:
|
|||||||
| **Rejected by limits / s** | Requests and connections refused by `--max-connections` / `--max-inflight`; sustained values mean the limits are too low for the load. |
|
| **Rejected by limits / s** | Requests and connections refused by `--max-connections` / `--max-inflight`; sustained values mean the limits are too low for the load. |
|
||||||
| **Nearest certificate expiry** | Days until the earliest installed certificate expires; the bar is full at 90 days or more. |
|
| **Nearest certificate expiry** | Days until the earliest installed certificate expires; the bar is full at 90 days or more. |
|
||||||
|
|
||||||
Existing layouts receive these tiles at the end of the Overview; hide or move them in the layout editor.
|
Enabled tiles are added at the end of the Overview, so the standard block layout does not change.
|
||||||
|
|
||||||
|
The **Remember choice** control next to the history sample count shows a status only when the current choice is temporary (not saved) or briefly after saving.
|
||||||
|
|
||||||
The unlocked Overview layout exposes a single **Save and lock** action (plus Cancel), removing the redundant lock-and-save button.
|
The unlocked Overview layout exposes a single **Save and lock** action (plus Cancel), removing the redundant lock-and-save button.
|
||||||
|
|
||||||
|
|||||||
@@ -77,10 +77,10 @@ ENV_FILE=integrations/routeros-oci-build/.env \
|
|||||||
bash integrations/routeros-oci-build/build-routeros-oci.sh push
|
bash integrations/routeros-oci-build/build-routeros-oci.sh push
|
||||||
```
|
```
|
||||||
|
|
||||||
For example, with RustProxy version `0.35.2` and the defaults this publishes:
|
For example, with RustProxy version `0.35.3` and the defaults this publishes:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
zot.example.net/network/rustproxy:0.35.2
|
zot.example.net/network/rustproxy:0.35.3
|
||||||
zot.example.net/network/rustproxy:latest
|
zot.example.net/network/rustproxy:latest
|
||||||
zot.example.net/network/rustproxy:routeros
|
zot.example.net/network/rustproxy:routeros
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
"openapi": "3.0.3",
|
"openapi": "3.0.3",
|
||||||
"info": {
|
"info": {
|
||||||
"title": "RustProxy Administration API",
|
"title": "RustProxy Administration API",
|
||||||
"version": "0.35.2",
|
"version": "0.35.3",
|
||||||
"description": "Administration API for the active panel origin. Sign in through the panel; the same-origin HttpOnly cookie authenticates all private operations. Mutations also require the exact Origin, X-RustProxy-Request: 1 and a session-bound X-CSRF-Token. Loopback HTTP is the default; Settings can enable HTTPS before using a non-loopback administration bind. This document contains no live configuration or credentials. Object schemas marked extensible are summaries: full configuration validation is authoritative in Rust. The API also permits explicitly scoped GeneralApiBearer tokens on a narrow route allowlist, with RO/RW and source CIDR checks; API-token management and Prometheus-token management are browser-session-only."
|
"description": "Administration API for the active panel origin. Sign in through the panel; the same-origin HttpOnly cookie authenticates all private operations. Mutations also require the exact Origin, X-RustProxy-Request: 1 and a session-bound X-CSRF-Token. Loopback HTTP is the default; Settings can enable HTTPS before using a non-loopback administration bind. This document contains no live configuration or credentials. Object schemas marked extensible are summaries: full configuration validation is authoritative in Rust. The API also permits explicitly scoped GeneralApiBearer tokens on a narrow route allowlist, with RO/RW and source CIDR checks; API-token management and Prometheus-token management are browser-session-only."
|
||||||
},
|
},
|
||||||
"servers": [
|
"servers": [
|
||||||
|
|||||||
@@ -9,18 +9,27 @@ window.rustProxyOverviewSamples = (() => {
|
|||||||
} catch { /* Private browsing or storage policy: temporary selection still works. */ }
|
} catch { /* Private browsing or storage policy: temporary selection still works. */ }
|
||||||
let limit = saved;
|
let limit = saved;
|
||||||
const callbacks = new Set();
|
const callbacks = new Set();
|
||||||
|
let confirmationTimer = null;
|
||||||
const getLimit = () => limit;
|
const getLimit = () => limit;
|
||||||
const trim = array => {
|
const trim = array => {
|
||||||
if (Array.isArray(array) && array.length > limit) array.splice(0, array.length - limit);
|
if (Array.isArray(array) && array.length > limit) array.splice(0, array.length - limit);
|
||||||
return array;
|
return array;
|
||||||
};
|
};
|
||||||
function sync(messageKey = limit === saved ? "overviewSamplesSaved" : "overviewSamplesTemporary") {
|
// The status is shown only for a temporary choice, a storage problem or briefly after saving.
|
||||||
|
function sync(messageKey = limit === saved ? null : "overviewSamplesTemporary", confirmation = false) {
|
||||||
const select = document.getElementById("overview-live-samples");
|
const select = document.getElementById("overview-live-samples");
|
||||||
if (select) select.value = String(limit);
|
if (select) select.value = String(limit);
|
||||||
const state = document.getElementById("overview-samples-state");
|
const state = document.getElementById("overview-samples-state");
|
||||||
if (state) {
|
if (state) {
|
||||||
|
clearTimeout(confirmationTimer);
|
||||||
|
if (messageKey) {
|
||||||
state.dataset.i18n = messageKey;
|
state.dataset.i18n = messageKey;
|
||||||
state.textContent = t(messageKey);
|
state.textContent = t(messageKey);
|
||||||
|
state.style.visibility = "visible";
|
||||||
|
} else {
|
||||||
|
state.style.visibility = "hidden";
|
||||||
|
}
|
||||||
|
if (confirmation) confirmationTimer = setTimeout(() => { state.style.visibility = "hidden"; }, 2500);
|
||||||
}
|
}
|
||||||
const save = document.getElementById("overview-samples-save");
|
const save = document.getElementById("overview-samples-save");
|
||||||
if (save) save.disabled = limit === saved;
|
if (save) save.disabled = limit === saved;
|
||||||
@@ -43,7 +52,7 @@ window.rustProxyOverviewSamples = (() => {
|
|||||||
const changed = count !== limit;
|
const changed = count !== limit;
|
||||||
limit = count;
|
limit = count;
|
||||||
if (changed) for (const callback of callbacks) callback(limit);
|
if (changed) for (const callback of callbacks) callback(limit);
|
||||||
sync();
|
if (persist) sync("overviewSamplesSaved", true); else sync();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
function init() {
|
function init() {
|
||||||
|
|||||||
@@ -5,10 +5,6 @@
|
|||||||
"bandwidth",
|
"bandwidth",
|
||||||
"errors",
|
"errors",
|
||||||
"memory",
|
"memory",
|
||||||
"extra_backends_healthy",
|
|
||||||
"extra_error_share",
|
|
||||||
"extra_rejected_rate",
|
|
||||||
"extra_cert_expiry",
|
|
||||||
"websocket",
|
"websocket",
|
||||||
"backend_traffic",
|
"backend_traffic",
|
||||||
"extra_response_latency",
|
"extra_response_latency",
|
||||||
@@ -82,7 +78,11 @@
|
|||||||
"www_failures",
|
"www_failures",
|
||||||
"www_traffic",
|
"www_traffic",
|
||||||
"www_top_services",
|
"www_top_services",
|
||||||
"www_status_trend"
|
"www_status_trend",
|
||||||
|
"extra_backends_healthy",
|
||||||
|
"extra_error_share",
|
||||||
|
"extra_rejected_rate",
|
||||||
|
"extra_cert_expiry"
|
||||||
],
|
],
|
||||||
"dashboard_hidden_widgets": [
|
"dashboard_hidden_widgets": [
|
||||||
"cache_outcomes",
|
"cache_outcomes",
|
||||||
@@ -136,7 +136,11 @@
|
|||||||
"www_status_trend",
|
"www_status_trend",
|
||||||
"extra_cold_queue_memory",
|
"extra_cold_queue_memory",
|
||||||
"wide_cache_activity",
|
"wide_cache_activity",
|
||||||
"backend_rotations"
|
"backend_rotations",
|
||||||
|
"extra_backends_healthy",
|
||||||
|
"extra_error_share",
|
||||||
|
"extra_rejected_rate",
|
||||||
|
"extra_cert_expiry"
|
||||||
],
|
],
|
||||||
"dashboard_density": "compact",
|
"dashboard_density": "compact",
|
||||||
"overview_samples": 600
|
"overview_samples": 600
|
||||||
|
|||||||
@@ -876,7 +876,7 @@
|
|||||||
"data_source": "backend_status",
|
"data_source": "backend_status",
|
||||||
"no_data": "neutral_dash",
|
"no_data": "neutral_dash",
|
||||||
"category": "backends",
|
"category": "backends",
|
||||||
"default_hidden": false,
|
"default_hidden": true,
|
||||||
"display_type": "value_chart"
|
"display_type": "value_chart"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -887,7 +887,7 @@
|
|||||||
"data_source": "status_metrics",
|
"data_source": "status_metrics",
|
||||||
"no_data": "neutral_dash",
|
"no_data": "neutral_dash",
|
||||||
"category": "performance",
|
"category": "performance",
|
||||||
"default_hidden": false,
|
"default_hidden": true,
|
||||||
"display_type": "value_chart"
|
"display_type": "value_chart"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -898,7 +898,7 @@
|
|||||||
"data_source": "status_metrics",
|
"data_source": "status_metrics",
|
||||||
"no_data": "neutral_dash",
|
"no_data": "neutral_dash",
|
||||||
"category": "performance",
|
"category": "performance",
|
||||||
"default_hidden": false,
|
"default_hidden": true,
|
||||||
"display_type": "value_chart"
|
"display_type": "value_chart"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -909,7 +909,7 @@
|
|||||||
"data_source": "system_status",
|
"data_source": "system_status",
|
||||||
"no_data": "neutral_dash",
|
"no_data": "neutral_dash",
|
||||||
"category": "overview",
|
"category": "overview",
|
||||||
"default_hidden": false,
|
"default_hidden": true,
|
||||||
"display_type": "value_chart"
|
"display_type": "value_chart"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
Reference in new issue
Block a user