This commit is contained in:
Mateusz Gruszczyński committed 2026-11-07 08:16:11 +01:00
1 parent c038ad44b3
commit cd3c28d390
33 files changed
+807 -221

No files matched your search

+37 -20
View File
@@ -58,9 +58,11 @@
data-i18n="transform">Transform</b></button>
<button class="nav" data-panel="settings"><span>13</span><b data-i18n="settings">Settings</b></button>
</nav>
<div class="sidebar-bottom"><span class="small-label" data-i18n="runtime">RUNTIME</span>
<p>Rust / Tokio / Hyper<br />Axum / Tower / SQLite</p>
<div class="local-tag"><i></i><span data-i18n="controlPlane">CONTROL PLANE</span></div>
<div class="sidebar-bottom" id="app-health-slot" hidden>
<button class="local-tag app-health-button is-checking" id="app-health-open" type="button"
aria-haspopup="dialog" aria-controls="app-health-dialog">
<i aria-hidden="true"></i><span id="app-health-label" data-i18n="appHealthSidebarChecking">CHECKING</span>
</button>
</div>
</aside>
<main>
@@ -97,7 +99,7 @@
</div>
<label data-i18n="username" for="username">Username</label><input autocapitalize="none"
autocomplete="username" id="username" maxlength="64" minlength="3"
pattern="[A-Za-z0-9_.-]{3,64}" required="" spellcheck="false" />
pattern="[A-Za-z0-9_.\-]{3,64}" required="" spellcheck="false" />
<label data-i18n="password" for="password">Password</label><input autocomplete="current-password"
id="password" maxlength="128" required="" type="password" />
<div hidden="" id="confirm-field"><label data-i18n="confirmPassword" for="password-confirm">Confirm
@@ -121,17 +123,13 @@
aria-label="Overview chart samples" data-i18n-aria="overviewSamplesTitle">
<label class="function-live-chart-samples" for="overview-live-samples"><span
data-i18n="liveChartSamples">Samples</span>
<select id="overview-live-samples" aria-describedby="overview-samples-state">
<select id="overview-live-samples">
<option value="60">60</option>
<option value="120">120</option>
<option value="300">300</option>
<option value="600">600</option>
</select>
</label>
<button class="quiet" id="overview-samples-save" type="button"
data-i18n="overviewSamplesRemember">Remember choice</button>
<small class="fine" id="overview-samples-state" role="status" aria-live="polite"
data-i18n="overviewSamplesSaved">Saved default</small>
</div>
</div>
<div class="page-intro-title-row">
@@ -145,6 +143,9 @@
<div class="overview-inline-actions" id="overview-inline-actions" hidden>
<button class="primary" id="overview-inline-save" type="button"
data-i18n="overviewLayoutInlineSave">Save and lock</button>
<button class="quiet" id="overview-inline-compact" type="button"
data-i18n="overviewLayoutInlineCompact"
title="Move blocks into empty grid space once">Fill gaps</button>
<button class="quiet" id="overview-inline-cancel" type="button"
data-i18n="overviewLayoutInlineCancel">Cancel changes</button>
</div>
@@ -771,7 +772,7 @@
</div>
<div class="field-grid">
<label><span data-i18n="aclProfileId">Profile ID</span><input id="acl-profile-id"
maxlength="64" pattern="[A-Za-z0-9_-]{1,64}" required /></label>
maxlength="64" pattern="[A-Za-z0-9_\-]{1,64}" required /></label>
<label><span data-i18n="aclProfileName">Display name</span><input id="acl-profile-name"
maxlength="96" required /></label>
</div>
@@ -982,7 +983,7 @@
<div class="vh-grid">
<label><span data-i18n="certificateId">Certificate ID</span><input
autocomplete="off" id="acme-name" maxlength="64"
pattern="[A-Za-z0-9_-]{1,64}" required="" /></label>
pattern="[A-Za-z0-9_\-]{1,64}" required="" /></label>
<label><span data-i18n="acmeEmail">ACME contact email</span><input
autocomplete="off" id="acme-email" maxlength="254" required=""
type="email" /></label>
@@ -1063,7 +1064,7 @@
<h3 data-i18n="certImport"></h3>
<p class="fine" data-i18n="certLibraryHint"></p>
<label data-i18n="certificateId" for="cert-import-name"></label><input
id="cert-import-name" maxlength="64" pattern="[A-Za-z0-9_-]{1,64}"
id="cert-import-name" maxlength="64" pattern="[A-Za-z0-9_\-]{1,64}"
required="" />
<label data-i18n="certCheckDomains" for="cert-import-domains"></label><input
id="cert-import-domains" placeholder="app.example.com" required="" />
@@ -1081,7 +1082,7 @@
<form class="edit-form" id="certificate-form">
<h3 data-i18n="addCertificate"></h3>
<label data-i18n="certificateId" for="certificate-id"></label><input
id="certificate-id" maxlength="64" pattern="[A-Za-z0-9_.-]+"
id="certificate-id" maxlength="64" pattern="[A-Za-z0-9_.\-]+"
placeholder="app" required="" />
<label data-i18n="certLegacyNames" for="certificate-hosts"></label><input
id="certificate-hosts" placeholder="app.localhost" />
@@ -1094,10 +1095,10 @@
<p class="fine" id="certificate-file-source-help"
data-i18n="certificateSourceManagedHelp"></p>
<label data-i18n="certificateFile" for="certificate-file"></label><input
id="certificate-file" maxlength="96" pattern="[A-Za-z0-9_.-]+"
id="certificate-file" maxlength="96" pattern="[A-Za-z0-9_.\-]+"
placeholder="app.pem" required="" />
<label data-i18n="privateKeyFile" for="certificate-key"></label><input
id="certificate-key" maxlength="96" pattern="[A-Za-z0-9_.-]+"
id="certificate-key" maxlength="96" pattern="[A-Za-z0-9_.\-]+"
placeholder="app.key" required="" />
<div hidden id="certificate-external-acl-example"></div>
<div class="form-actions"><button type="button" class="quiet"
@@ -3298,8 +3299,7 @@
</div>
</section>
<footer class="page-footer"><span>RustProxy <b>__RUSTPROXY_VERSION__</b></span><span
id="footer-status">API - /
dropped: 0</span></footer>
id="footer-status">API -</span></footer>
</div>
</main>
</div>
@@ -3668,7 +3668,7 @@
</div>
</fieldset>
<label><span data-i18n="webServiceId">Service ID</span><input id="web-service-id" maxlength="64"
pattern="[A-Za-z0-9_-]{1,64}" required="" /></label>
pattern="[A-Za-z0-9_\-]{1,64}" required="" /></label>
<label><span data-i18n="webServiceName">Name</span><input id="web-service-name" maxlength="96"
required="" /></label>
<label class="vh-wide"><span data-i18n="webServiceRoot">Document root</span><input
@@ -4158,7 +4158,7 @@ log_errors = On</code></pre>
<legend data-i18n="hostIdentitySection">Host and domains</legend>
<div class="vh-grid">
<label><span data-i18n="redirectId">Redirect ID</span><input id="redirect-id" maxlength="64"
pattern="[A-Za-z0-9_-]{1,64}" required="" /></label>
pattern="[A-Za-z0-9_\-]{1,64}" required="" /></label>
<label><span data-i18n="redirectName">Display name</span><input id="redirect-name"
maxlength="96" /></label>
<label class="check"><input id="redirect-enabled" type="checkbox" /><span
@@ -4216,7 +4216,7 @@ log_errors = On</code></pre>
<legend data-i18n="hostIdentitySection">Host and domains</legend>
<div class="vh-grid">
<label><span data-i18n="notfoundId">Host ID</span><input id="notfound-id" maxlength="64"
pattern="[A-Za-z0-9_-]{1,64}" required="" /></label>
pattern="[A-Za-z0-9_\-]{1,64}" required="" /></label>
<label><span data-i18n="notfoundName">Display name</span><input id="notfound-name"
maxlength="96" /></label>
<label class="check"><input id="notfound-enabled" type="checkbox" /><span
@@ -4290,6 +4290,23 @@ log_errors = On</code></pre>
<p class="fine" data-i18n="streamRestartHelp">Changing a stream listener requires a RustProxy restart.</p>
</form>
</dialog>
<dialog aria-labelledby="app-health-title" class="vhost-dialog app-health-dialog" id="app-health-dialog">
<div class="window-heading">
<div><span class="small-label" data-i18n="appHealthSelfCheck">SELF-CHECK</span>
<h2 data-i18n="appHealthTitle" id="app-health-title">Application status</h2>
</div>
<button class="outline" data-i18n="close" id="app-health-close" type="button">Close</button>
</div>
<article class="card app-health-card">
<div class="app-health-summary" id="app-health-summary-row">
<i aria-hidden="true"></i>
<div><strong id="app-health-summary" data-i18n="appHealthChecking">Checking application status</strong>
<p class="fine" id="app-health-updated"></p>
</div>
</div>
<div class="app-health-checks" id="app-health-checks"></div>
</article>
</dialog>
<dialog aria-labelledby="about-title" class="vhost-dialog about-dialog" id="about-dialog">
<div class="window-heading">
<h2 data-i18n="aboutTitle" id="about-title">About RustProxy</h2>