v0.31.0
This commit is contained in:
1 parent
f213d853e2
commit
76b8bb7ee2
78 files changed
+7750
-5204
No files matched your search
@@ -28,6 +28,21 @@
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- Visible even when the dashboard JavaScript fails to initialize. -->
|
||||
<div class="app-startup" id="app-startup" role="status" aria-live="polite">
|
||||
<div class="app-startup-card">
|
||||
<div class="app-startup-brand" aria-hidden="true">r<span>/</span>p</div>
|
||||
<div class="app-startup-spinner" aria-hidden="true"></div>
|
||||
<h2 id="app-startup-title" data-i18n="startupLoading">Loading RustProxy…</h2>
|
||||
<p class="app-startup-message" data-i18n="startupPreparing">Connecting to the administration panel.</p>
|
||||
<div class="app-startup-recovery">
|
||||
<p data-i18n="startupSlow">The panel is taking longer than expected. Check your connection and try again.</p>
|
||||
<p id="app-startup-detail" class="app-startup-detail" hidden></p>
|
||||
<a class="outline" href="" data-i18n="startupRetry">Reload panel</a>
|
||||
</div>
|
||||
<noscript>JavaScript is required to use the administration panel.</noscript>
|
||||
</div>
|
||||
</div>
|
||||
<div class="shell">
|
||||
<aside class="sidebar">
|
||||
<a class="brand" href="/" aria-label="RustProxy"><span
|
||||
@@ -111,10 +126,13 @@
|
||||
</section>
|
||||
<div hidden="" id="workspace">
|
||||
<section class="page-intro">
|
||||
<div>
|
||||
<div class="page-intro-copy">
|
||||
<div class="eyebrow"><i class="signal" id="signal"></i><span id="connection-label">CONNECTED TO
|
||||
LOCAL CORE</span></div>
|
||||
<h1 id="page-title">Traffic, in focus.</h1>
|
||||
<div class="page-intro-title-row">
|
||||
<h1 id="page-title">Traffic, in focus.</h1>
|
||||
<button class="quiet overview-refresh" data-i18n="refreshNow" id="overview-refresh" type="button" hidden>Refresh now</button>
|
||||
</div>
|
||||
<p class="lead" id="page-description"></p>
|
||||
</div>
|
||||
</section>
|
||||
@@ -1221,7 +1239,7 @@
|
||||
role="status"></span>
|
||||
<label class="check cache-live-toggle"><input checked="" id="traffic-live"
|
||||
type="checkbox" />
|
||||
<span data-i18n="cacheLive">Live (3 s)</span></label>
|
||||
<span data-i18n="refreshViewLive">Auto in this view</span></label>
|
||||
</div>
|
||||
</div>
|
||||
<nav aria-label="Traffic analytics" class="settings-tabs sub-tabs traffic-tabs" id="traffic-tabs"
|
||||
@@ -1375,8 +1393,7 @@
|
||||
type="button">Active BANs</button>
|
||||
<div class="cache-toolbar-status"><span class="fine" id="cache-panel-state"
|
||||
role="status"></span><label class="check cache-live-toggle"><input checked=""
|
||||
id="cache-live" type="checkbox" /><span data-i18n="cacheLive">Live (3
|
||||
s)</span></label></div>
|
||||
id="cache-live" type="checkbox" /><span data-i18n="refreshViewLive">Auto in this view</span></label></div>
|
||||
<p class="operation-message cache-toolbar-message" id="cache-toolbar-operation-status"
|
||||
role="status" aria-live="polite"></p>
|
||||
</div>
|
||||
@@ -1530,8 +1547,7 @@
|
||||
id="transform-panel-settings" type="button">Settings</button>
|
||||
<div class="cache-toolbar-status"><span class="fine" id="transform-panel-state"
|
||||
role="status"></span><label class="check cache-live-toggle"><input checked=""
|
||||
id="transform-live" type="checkbox" /><span data-i18n="cacheLive">Live (3
|
||||
s)</span></label></div>
|
||||
id="transform-live" type="checkbox" /><span data-i18n="refreshViewLive">Auto in this view</span></label></div>
|
||||
</div>
|
||||
<details class="card function-live-chart" id="transform-live-chart">
|
||||
<summary class="function-live-chart-summary">
|
||||
@@ -1912,6 +1928,33 @@
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="appearance-section" id="refresh-preferences">
|
||||
<div class="appearance-section-heading"><div>
|
||||
<div class="small-label" data-i18n="refreshSection">REFRESH</div>
|
||||
<h3 data-i18n="refreshTitle">Data refresh</h3>
|
||||
</div><button class="quiet appearance-section-reset" id="refresh-reset" type="button" data-i18n="resetSection">Reset section</button></div>
|
||||
<p class="fine" data-i18n="refreshHelp">Per-account refresh intervals. Off pauses all automatic sources; manual refresh remains available.</p>
|
||||
<div class="appearance-settings-grid">
|
||||
<label class="check"><input type="checkbox" checked id="refresh-live-enabled" data-refresh-preference="live_enabled" />
|
||||
<span data-i18n="refreshLiveEnabled">Automatic refresh enabled</span></label>
|
||||
<label><span data-i18n="refreshOverview">Live overview / SSE interval</span>
|
||||
<select id="refresh-overview-seconds" data-refresh-preference="overview_seconds">
|
||||
<option value="1">1 s</option><option selected value="2">2 s</option><option value="5">5 s</option><option value="10">10 s</option>
|
||||
</select></label>
|
||||
<label><span data-i18n="refreshTraffic">Traffic interval</span>
|
||||
<select id="refresh-traffic-seconds" data-refresh-preference="traffic_seconds">
|
||||
<option value="0" data-i18n="refreshManual">Manual</option><option value="3">3 s</option><option selected value="5">5 s</option><option value="10">10 s</option><option value="30">30 s</option>
|
||||
</select></label>
|
||||
<label><span data-i18n="refreshCache">Cache interval</span>
|
||||
<select id="refresh-cache-seconds" data-refresh-preference="cache_seconds">
|
||||
<option value="0" data-i18n="refreshManual">Manual</option><option value="3">3 s</option><option selected value="5">5 s</option><option value="10">10 s</option><option value="30">30 s</option>
|
||||
</select></label>
|
||||
<label><span data-i18n="refreshSystemInfo">System information interval</span>
|
||||
<select id="refresh-system-info-seconds" data-refresh-preference="system_info_seconds">
|
||||
<option value="0" data-i18n="refreshManual">Manual</option><option value="15">15 s</option><option value="30">30 s</option><option selected value="60">60 s</option><option value="300">300 s</option>
|
||||
</select></label>
|
||||
</div>
|
||||
</section>
|
||||
<div class="appearance-actions"><button class="outline" data-i18n="appearanceReset"
|
||||
id="appearance-reset" type="button">Reset appearance</button></div>
|
||||
</div>
|
||||
@@ -2290,6 +2333,22 @@
|
||||
</div>
|
||||
<p class="fine" data-i18n="cacheViaHelp">Defaults to Via: RustProxy. Changing this
|
||||
response-only header does not purge cached objects.</p>
|
||||
<div class="cache-maintenance-help">
|
||||
<h3 class="subheading" data-i18n="cacheHttpInvalidationTitle">HTTP BAN / PURGE IP allowlist</h3>
|
||||
<details class="metric-info cache-maintenance-info">
|
||||
<summary aria-label="curl examples for HTTP BAN and PURGE" data-i18n-aria="cacheHttpInvalidationCurlLabel">i</summary>
|
||||
<div class="metric-info-popover" role="note">
|
||||
<p class="fine" data-i18n="cacheHttpInvalidationCurlIntro">Run curl from an allowlisted IP against a public vhost:</p>
|
||||
<code>curl -i -X PURGE 'https://site.example/assets/app.js?v=1'</code>
|
||||
<code>curl -i -X BAN 'https://site.example/assets/'</code>
|
||||
<code>curl -i -X BAN 'https://site.example/' -H 'X-RustProxy-Confirm-Wide: 1'</code>
|
||||
<p class="fine" data-i18n="cacheHttpInvalidationCurlNote">PURGE removes an exact URL; BAN invalidates a path prefix for 1 hour. No admin cookie is needed, but your IP must be allowed. A reverse proxy must forward these methods and trusted client IP information.</p>
|
||||
</div>
|
||||
</details>
|
||||
</div>
|
||||
<label><span data-i18n="cacheHttpInvalidationAddresses">Allowed client IP addresses or CIDRs (one per line)</span>
|
||||
<textarea id="cache-http-invalidation-cidrs" rows="4" spellcheck="false" placeholder="192.0.2.10 2001:db8:10::/64"></textarea></label>
|
||||
<p class="fine" data-i18n="cacheHttpInvalidationHelp">Empty = disabled. PURGE /path?query removes exact matching entries; BAN /path lazily blocks cached URLs starting with the prefix (TTL 1 hour, optional X-RustProxy-Ban-Ttl). BAN / requires X-RustProxy-Confirm-Wide: 1. Only the matched vhost and Host are affected. Trusted reverse proxies must sanitize forwarding headers.</p>
|
||||
<p class="fine" data-i18n="cacheAgeHelp">Age is sent on cache hits unless an
|
||||
explicit response-header rule removes or replaces it. Such Age rules are
|
||||
wire-only and do not change cache freshness.</p>
|
||||
@@ -2697,6 +2756,13 @@
|
||||
type="number" required="" /></label>
|
||||
<p class="fine" data-i18n="administrationSessionDaysHelp">Browser sessions use an
|
||||
absolute 7–30 day lifetime.</p>
|
||||
<h3 class="subheading" data-i18n="panelCompressionTitle">Panel content compression</h3>
|
||||
<div class="switch-grid">
|
||||
<label class="check"><input id="admin-compression-zstd" type="checkbox" checked /><span>Zstd</span></label>
|
||||
<label class="check"><input id="admin-compression-br" type="checkbox" checked /><span>Brotli (br)</span></label>
|
||||
<label class="check"><input id="admin-compression-gzip" type="checkbox" checked /><span>gzip</span></label>
|
||||
</div>
|
||||
<p class="fine" data-i18n="panelCompressionHelp">The browser negotiates the best supported encoding (equal quality: Zstd → Brotli → gzip). Disable all to send uncompressed panel assets. Applies immediately; a reverse proxy may forward or re-encode the response.</p>
|
||||
<p class="fine" id="admin-status" role="status"></p>
|
||||
<div class="form-actions"><button class="primary" data-i18n="apply"
|
||||
type="submit">Validate, save and apply</button></div>
|
||||
@@ -2706,9 +2772,10 @@
|
||||
data-settings-page="system-info" hidden="" id="settings-page-system-info" role="tabpanel">
|
||||
<article class="card edit-form runtime-information-card">
|
||||
<div class="card-heading">
|
||||
<h2 data-i18n="systemInformation">System information</h2><span class="pill">API</span>
|
||||
<h2 data-i18n="systemInformation">System information</h2><div class="system-info-heading-actions"><span class="pill">API</span><button class="quiet" data-i18n="refreshNow" id="system-info-refresh" type="button">Refresh now</button></div>
|
||||
</div>
|
||||
<p class="fine" data-i18n="systemInformationHelp">Live, read-only information from the authenticated RustProxy status API. Unavailable metrics are not estimated.</p>
|
||||
<p class="fine" data-i18n="systemInformationHelp">Read-only information from the authenticated system-info API. Unavailable metrics are not estimated.</p>
|
||||
<p class="fine" id="system-info-refresh-note" role="status"></p>
|
||||
<h3 data-i18n="systemHostHeading">Operating system and hardware</h3>
|
||||
<div class="runtime-information-grid">
|
||||
<div><span class="small-label" data-i18n="runtimePlatform">Platform</span><code id="runtime-platform">-</code></div>
|
||||
|
||||
Reference in new issue
Block a user