Files
kanhole/server/admin/templates/setup.html
T

88 lines
3.8 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Setup — frp Admin</title>
<style>
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{--bg:#fff;--bg2:#f5f5f5;--fg:#000;--fg2:#888;--border:#ddd;--accent:#000;--font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;--radius:0}
@media(prefers-color-scheme:dark){
:root{--bg:#000;--bg2:#111;--fg:#fff;--fg2:#666;--border:#333;--accent:#fff}
}
html,body{height:100%}
body{font-family:var(--font);background:var(--bg2);color:var(--fg);font-size:14px;display:flex;align-items:center;justify-content:center;min-height:100vh;padding:20px}
.setup-card{width:520px;padding:32px;background:var(--bg);border:1px solid var(--border)}
.setup-card h1{font-size:20px;margin-bottom:4px;text-align:center;letter-spacing:-.5px}
.setup-card p{font-size:13px;color:var(--fg2);text-align:center;margin-bottom:24px}
.setup-card .error{font-size:13px;margin-bottom:12px;text-align:center}
.setup-card .section-title{font-size:12px;font-weight:600;letter-spacing:.3px;color:var(--fg2);text-transform:uppercase;margin-bottom:12px;padding-top:8px;border-top:1px solid var(--border)}
.setup-card .field{margin-bottom:16px}
.setup-card .field label{display:block;font-size:12px;color:var(--fg2);margin-bottom:4px}
input{padding:8px 12px;border:1px solid var(--border);background:var(--bg);color:var(--fg);font-size:13px;width:100%;-webkit-appearance:none;appearance:none}
input:focus{outline:1px solid var(--fg)}
button{padding:8px 16px;border:1px solid var(--fg);background:var(--fg);color:var(--bg);font-size:13px;cursor:pointer;font-family:var(--font);width:100%;margin-top:8px}
button:hover{opacity:.8}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
</style>
</head>
<body>
<div class="setup-card">
<h1>frp Admin Setup</h1>
<p>Create an admin account and configure your server.</p>
{{if .Error}}
<div class="error">{{.Error}}</div>
{{end}}
<form method="post" action="/admin/setup">
<div class="section-title">Admin Account</div>
<div class="grid-2">
<div class="field">
<label for="username">Username</label>
<input type="text" id="username" name="username" required autofocus>
</div>
<div class="field">
<label for="name">Display Name</label>
<input type="text" id="name" name="name" placeholder="optional">
</div>
</div>
<div class="grid-2">
<div class="field">
<label for="password">Password</label>
<input type="password" id="password" name="password" required>
</div>
<div class="field">
<label for="confirm_password">Confirm Password</label>
<input type="password" id="confirm_password" name="confirm_password" required>
</div>
</div>
<div class="section-title">Server Configuration</div>
<div class="grid-2">
<div class="field">
<label for="bind_addr">Bind Address</label>
<input type="text" id="bind_addr" name="bind_addr" value="0.0.0.0">
</div>
<div class="field">
<label for="bind_port">Bind Port</label>
<input type="number" id="bind_port" name="bind_port" value="7000">
</div>
<div class="field">
<label for="dashboard_addr">Dashboard Address</label>
<input type="text" id="dashboard_addr" name="dashboard_addr" value="0.0.0.0">
</div>
<div class="field">
<label for="dashboard_port">Dashboard Port</label>
<input type="number" id="dashboard_port" name="dashboard_port" value="7500">
</div>
<div class="field">
<label for="auth_token">Auth Token</label>
<input type="text" id="auth_token" name="auth_token" placeholder="optional">
</div>
</div>
<button type="submit">Complete Setup</button>
</form>
</div>
</body>
</html>