This commit is contained in:
Mateusz Gruszczyński committed 2026-10-05 17:05:06 +02:00
1 parent d168ee2afa
commit ddc5c6593f
70 files changed
+2293 -594

No files matched your search

+90 -4
View File
@@ -22,6 +22,7 @@
<script defer="" src="/assets/transform-panel.js"></script>
<script defer="" src="/assets/acme.js"></script>
<script defer="" src="/assets/settings.js"></script>
<script defer="" src="/assets/file-logs.js"></script>
</head>
<body>
@@ -63,7 +64,8 @@
<header class="topbar"><span class="breadcrumb">CONTROL ROOM <span>/</span> <b
id="page-label">Overview</b></span>
<div class="top-actions"><a class="quiet" href="/docs" data-i18n="documentation" id="api-docs"
hidden="">Documentation</a><button class="quiet" data-i18n="liveLogs" hidden="" id="logs-open"
hidden="">Documentation</a><button class="quiet" data-i18n="logs" hidden="" id="file-logs-open"
type="button">Logs</button><button class="quiet" data-i18n="liveLogs" hidden="" id="logs-open"
type="button">Live
access logs</button><select aria-label="Language" class="language-select"
data-i18n-aria="language" id="language"></select><button class="quiet" data-i18n="about"
@@ -1494,6 +1496,79 @@
yet.</p>
</article>
</section>
<section class="panel" hidden="" id="panel-filelogs">
<article class="card file-logs-workspace">
<div class="card-heading">
<div><span class="small-label" data-i18n="fileLogsMode">LOCAL / READ-ONLY / BOUNDED</span>
<h2 data-i18n="fileLogsTitle">Stored log explorer</h2>
</div>
<button class="outline" data-i18n="refresh" id="file-logs-refresh"
type="button">Refresh</button>
</div>
<p class="fine" data-i18n="fileLogsHelp">Reads only configured RustProxy log files. It is
independent from Live Logs and never accepts an arbitrary filesystem path.</p>
<form class="file-logs-filter" id="file-logs-filter">
<label><span data-i18n="fileLogsSource">Source</span><select id="file-log-source">
<option value="all">All configured files</option>
</select></label>
<label class="file-log-search"><span data-i18n="search">Search</span><input id="file-log-q"
maxlength="256" data-i18n-placeholder="fileLogsSearchPlaceholder"
placeholder="IP, path, error, request id..." /></label>
<label><span data-i18n="fileLogsEvent">Event</span><select id="file-log-event">
<option data-i18n="all" value="all">All</option>
<option value="request">request</option>
<option value="protocol_error">protocol_error</option>
<option value="error">error</option>
</select></label>
<label><span data-i18n="status">Status</span><select id="file-log-status">
<option data-i18n="all" value="all">All</option>
<option value="1xx">1xx</option>
<option value="2xx">2xx</option>
<option value="3xx">3xx</option>
<option value="4xx">4xx</option>
<option value="5xx">5xx</option>
</select></label>
<label><span data-i18n="clientIp">Client IP</span><input id="file-log-client"
maxlength="128" placeholder="192.0.2.10" /></label>
<label><span data-i18n="vhost">Vhost</span><input id="file-log-vhost"
maxlength="256" /></label>
<label><span data-i18n="fileLogsPageSize">Page size</span><select id="file-log-limit">
<option>50</option>
<option selected>100</option>
<option>250</option>
<option>500</option>
</select></label>
<button class="primary" data-i18n="applyFilters" type="submit">Apply filters</button>
</form>
<p class="fine file-log-inventory" id="file-log-inventory"></p>
<p class="fine" id="file-log-summary" role="status"></p>
<div class="table-scroll file-logs-table">
<table>
<thead>
<tr>
<th data-i18n="time">Time</th>
<th data-i18n="fileLogsEvent">Event</th>
<th data-i18n="status">Status</th>
<th data-i18n="clientIp">Client IP</th>
<th data-i18n="vhost">Vhost</th>
<th data-i18n="fileLogsRecord">Request / reason</th>
<th data-i18n="fileLogsSource">Source</th>
</tr>
</thead>
<tbody id="file-log-rows"></tbody>
</table>
</div>
<p class="empty" data-i18n="fileLogsEmpty" id="file-logs-empty">No records match the current
filters.</p>
<div class="file-logs-pager"><button class="quiet" data-i18n="previous" disabled
id="file-logs-prev" type="button">Previous</button><button class="quiet"
data-i18n="next" disabled id="file-logs-next" type="button">Next</button></div>
<details open class="file-log-detail-card">
<summary data-i18n="fileLogsDetails">Record details</summary>
<pre class="metrics-example" id="file-log-detail"></pre>
</details>
</article>
</section>
<section class="panel" hidden="" id="panel-settings">
<div class="settings-shortcuts">
<div><b data-i18n="security">Security</b>
@@ -1667,7 +1742,7 @@
<option data-i18n="serverCustom" value="custom">Replace / add custom value</option>
</select>
<label data-i18n="serverValue" for="server-value">Custom Server value</label><input
id="server-value" maxlength="256" placeholder="RustProxy/v0.25.7"
id="server-value" maxlength="256" placeholder="RustProxy/v0.26.0"
spellcheck="false" />
<h3 class="subheading" data-i18n="diagnosticHeaders">Diagnostic headers</h3>
<div class="switch-grid">
@@ -2065,6 +2140,17 @@
<p class="fine" data-i18n="loggingHelp">Live log viewing stays in memory.
External sinks
run on a bounded background queue and never block proxy request I/O.</p>
<article class="card soft-card file-logs-launcher">
<div>
<h3 class="subheading" data-i18n="fileLogsTitle">Stored log explorer
</h3>
<p class="fine" data-i18n="fileLogsSettingsHelp">Browse configured
access/error files with server-side filters. File logs can be off
while Live Logs continues to use its memory buffer.</p>
</div>
<button class="outline" data-i18n="openLogs" id="settings-file-logs-open"
type="button">Open Logs</button>
</article>
<article class="card soft-card">
<h3 class="subheading" data-i18n="loggingCaptureTitle">Captured request
dimensions</h3>
@@ -2455,7 +2541,7 @@
</section>
</div>
</section>
<footer class="page-footer"><span>RustProxy <b>0.25.7</b></span><span id="footer-status">API - /
<footer class="page-footer"><span>RustProxy <b>0.26.0</b></span><span id="footer-status">API - /
dropped: 0</span></footer>
</div>
</main>
@@ -3166,7 +3252,7 @@ max_execution_time = 30</code></pre>
<article class="card about-card">
<div class="about-product">
<span aria-hidden="true" class="brand-mark">r<span>/</span>p</span>
<div><span class="small-label">RustProxy</span><strong>0.25.7</strong></div>
<div><span class="small-label">RustProxy</span><strong>0.26.0</strong></div>
</div>
<dl class="about-meta">
<div>