Files
RustProxy/src/admin/web/login.html
T
2026-11-07 08:16:11 +01:00

49 lines
2.9 KiB
HTML

<!doctype html>
<html data-theme="dark" lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>RustProxy / Sign in</title>
<link rel="icon" href="/favicon.svg">
<link rel="stylesheet" href="/assets/style___RUSTPROXY_ASSET_ID__.css">
<script defer src="/assets/login___RUSTPROXY_ASSET_ID__.js"></script>
</head>
<body class="auth-page auth-loading">
<header class="auth-top"><a class="brand" href="/" aria-label="RustProxy"><span
class="brand-mark">r<span>/</span>p</span><span>RustProxy</span></a><select id="language"
class="language-select" aria-label="Language" data-i18n-aria="language"></select></header>
<main class="auth-main">
<section class="login-section" id="login">
<h1 data-i18n="loginTitle">Administration</h1>
<form class="login-card" id="login-form">
<div class="card-heading">
<h2 id="auth-title">Sign in</h2><span class="pill" id="auth-badge">LOCAL</span>
</div>
<div hidden="" id="setup-fields">
<p class="fine" data-i18n="setupHelp">Create the first administrator using a one-time local
capability.</p><code class="command">rust-proxy --data-dir ./data admin setup-token</code>
<p class="fine" data-i18n="setupCommandExample">Standard service installation example:</p>
<code class="command">rust-proxy --data-dir /var/lib/rustproxy admin setup-token</code>
<label data-i18n="setupToken" for="setup-token">One-time setup token</label><input
autocomplete="off" id="setup-token" maxlength="64" minlength="64" spellcheck="false"
type="password" />
</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" />
<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
password</label><input autocomplete="new-password" id="password-confirm" maxlength="128"
type="password" /></div>
<button class="primary" id="login-submit" type="submit">Sign in</button>
<p class="fine" data-i18n="authPrivateNote">Access is restricted to authorized administrators.</p>
</form>
<p class="fine" id="auth-message" role="alert" aria-live="polite"></p>
</section>
</main>
</body>
</html>