网页改成白色简洁 + 修官网两个 bug

配色
- 官网 / 登录页 / 管理页从 GitHub 深色风改成白色简洁
  (用户的设计理念:所有东西都要白色简洁)
- 白底上把浅灰文字换成深色,链接蓝也调深一档保证对比度

修 bug
- 管理入口的链接拼接写坏了,页面上显示成 href= + ADMIN_PATH +,
  点了打不开管理页
- .lead 用的是深色主题的浅灰,白底上几乎看不见

其他
- 清掉提交信息里的 BOM(PowerShell 的 Set-Content 加的)
This commit is contained in:
xmz7891
2026-10-06 23:10:08 +08:00
parent 81e923a0aa
commit 51565112b9
7 changed files with 280 additions and 36 deletions
+36 -36
View File
@@ -835,32 +835,32 @@ def _site_page() -> str:
<style>
*{box-sizing:border-box}
body{margin:0;font-family:-apple-system,"Segoe UI","Microsoft YaHei",sans-serif;
background:#0d1117;color:#e6edf3;line-height:1.7}
background:#ffffff;color:#1f2328;line-height:1.7}
.wrap{max-width:780px;margin:0 auto;padding:56px 20px 80px}
h1{font-size:34px;margin:0 0 10px;letter-spacing:-.5px}
.sub{color:#8b949e;font-size:17px;margin-bottom:10px}
.ver{display:inline-block;background:#1f6feb22;color:#79c0ff;
.sub{color:#656d76;font-size:17px;margin-bottom:10px}
.ver{display:inline-block;background:#1f6feb22;color:#0969da;
border:1px solid #1f6feb55;border-radius:20px;
padding:2px 12px;font-size:13px;margin-bottom:34px}
.lead{font-size:16px;color:#c9d1d9;margin:0 0 14px}
ul{color:#8b949e;padding-left:22px;margin:0 0 40px}
ul{color:#656d76;padding-left:22px;margin:0 0 40px}
li{margin:4px 0}
.cards{display:grid;gap:14px;grid-template-columns:1fr}
@media(min-width:640px){.cards{grid-template-columns:1fr 1fr 1fr}}
.card{background:#161b22;border:1px solid #30363d;border-radius:12px;
.card{background:#ffffff;border:1px solid #d0d7de;border-radius:12px;
padding:18px 16px;display:flex;flex-direction:column}
.card .t{font-weight:600;font-size:15px;margin-bottom:6px}
.card .d{color:#8b949e;font-size:13px;flex:1;margin-bottom:14px}
.card .d{color:#656d76;font-size:13px;flex:1;margin-bottom:14px}
.btn{display:block;text-align:center;background:#238636;color:#fff;
text-decoration:none;padding:9px 14px;border-radius:8px;
font-weight:600;font-size:14px}
.btn:hover{background:#2ea043}
.soon{color:#6e7681;font-size:13px;text-align:center;padding:9px 0}
.s{color:#6e7681;font-size:11px;margin-top:8px;
.soon{color:#8b949e;font-size:13px;text-align:center;padding:9px 0}
.s{color:#8b949e;font-size:11px;margin-top:8px;
word-break:break-all;text-align:center}
.foot{margin-top:46px;padding-top:20px;border-top:1px solid #21262d;
color:#6e7681;font-size:13px}
.foot a{color:#79c0ff;text-decoration:none}
.foot{margin-top:46px;padding-top:20px;border-top:1px solid #eaeef2;
color:#8b949e;font-size:13px}
.foot a{color:#0969da;text-decoration:none}
</style></head><body><div class=wrap>
<h1>ykxmz</h1>
@@ -880,7 +880,7 @@ li{margin:4px 0}
<div class=foot>
源码在 <a href="https://gitee.com/xmz7891/ykxmz" target=_blank rel=noopener>Gitee</a>
· 历史版本在 <a href="https://gitee.com/xmz7891/ykxmz/releases" target=_blank rel=noopener>发行版</a>
· <a href="""" + ADMIN_PATH + """">管理入口</a>
· <a href="/zhingzhuanzhan">管理入口</a>
</div>
</div></body></html>"""
@@ -896,20 +896,20 @@ def _login_page(message: str = "") -> bytes:
<title>中转服务器 · 登录</title>
<style>
body{font:14px/1.6 -apple-system,'Microsoft YaHei',sans-serif;
background:#0f1117;color:#e6edf3;display:flex;align-items:center;
background:#0f1117;color:#1f2328;display:flex;align-items:center;
justify-content:center;height:100vh;margin:0}
.box{background:#161b22;border:1px solid #30363d;border-radius:12px;
.box{background:#ffffff;border:1px solid #d0d7de;border-radius:12px;
padding:28px 32px;width:320px}
h1{font-size:17px;margin:0 0 4px}
.sub{color:#8b949e;font-size:12px;margin-bottom:18px}
input{width:100%;box-sizing:border-box;background:#0d1117;color:#e6edf3;
border:1px solid #30363d;border-radius:7px;padding:9px 11px;font-size:15px}
.sub{color:#656d76;font-size:12px;margin-bottom:18px}
input{width:100%;box-sizing:border-box;background:#ffffff;color:#1f2328;
border:1px solid #d0d7de;border-radius:7px;padding:9px 11px;font-size:15px}
input:focus{outline:none;border-color:#1f6feb}
button{width:100%;margin-top:14px;background:#1f6feb;color:#fff;border:0;
border-radius:7px;padding:10px;font-size:14px;cursor:pointer}
button:hover{background:#388bfd}
.bad{color:#f85149;font-size:12px;margin:10px 0 0}
.foot{color:#6e7681;font-size:11px;margin-top:16px;text-align:center}
.foot{color:#8b949e;font-size:11px;margin-top:16px;text-align:center}
</style>
<div class=box>
<h1>中转服务器</h1>
@@ -1579,9 +1579,9 @@ class Handler(BaseHTTPRequestHandler):
<style>
*{{box-sizing:border-box}}
:root{{
--bg:#0d1117; --panel:#161b22; --panel2:#1c2128; --border:#30363d;
--fg:#e6edf3; --dim:#8b949e; --muted:#6e7681;
--accent:#2f81f7; --ok:#3fb950; --danger:#f85149; --warn:#d29922;
--bg:#ffffff; --panel:#ffffff; --panel2:#f6f8fa; --border:#d0d7de;
--fg:#1f2328; --dim:#656d76; --muted:#8b949e;
--accent:#0969da; --ok:#1a7f37; --danger:#f85149; --warn:#9a6700;
}}
html,body{{max-width:100%;overflow-x:hidden}}
body{{margin:0;padding:0;background:var(--bg);color:var(--fg);
@@ -1594,7 +1594,7 @@ class Handler(BaseHTTPRequestHandler):
padding-bottom:16px;border-bottom:1px solid var(--border);
margin-bottom:20px;flex-wrap:wrap}}
.logo{{width:38px;height:38px;border-radius:10px;flex:none;
background:linear-gradient(140deg,#2f81f7,#1f6feb);
background:linear-gradient(140deg,#0969da,#1f6feb);
display:flex;align-items:center;justify-content:center;
font-weight:700;font-size:15px;color:#fff;letter-spacing:-.5px}}
.brand h1{{margin:0;font-size:17px;font-weight:600;letter-spacing:.2px}}
@@ -1615,7 +1615,7 @@ class Handler(BaseHTTPRequestHandler):
/* ---------- 公网地址 ---------- */
.urlrow{{display:flex;align-items:center;gap:10px;flex-wrap:wrap}}
.url{{flex:1;min-width:220px;font:600 15px/1.5 ui-monospace,Consolas,
'Courier New',monospace;color:#79c0ff;word-break:break-all;
'Courier New',monospace;color:#0969da;word-break:break-all;
background:#0b1220;border:1px solid #1f6feb44;border-radius:8px;
padding:10px 12px}}
.url.empty{{color:var(--muted);font-weight:400;font-style:normal}}
@@ -1661,7 +1661,7 @@ class Handler(BaseHTTPRequestHandler):
table{{width:100%;max-width:100%;border-collapse:collapse;
table-layout:fixed}}
th,td{{padding:11px 14px;text-align:left;font-size:13px;
border-bottom:1px solid #21262d;vertical-align:middle;
border-bottom:1px solid #eaeef2;vertical-align:middle;
overflow-wrap:anywhere;min-width:0}}
th{{background:var(--panel2);color:var(--dim);font-weight:500;
font-size:12px;white-space:nowrap}}
@@ -1677,16 +1677,16 @@ class Handler(BaseHTTPRequestHandler):
.val{{min-width:0;overflow-wrap:anywhere;word-break:break-word}}
td.empty{{text-align:center;padding:44px 20px;color:var(--dim)}}
td.empty .big{{font-size:15px;color:var(--fg);margin-bottom:6px;font-weight:500}}
code{{background:#21262d;padding:2px 8px;border-radius:6px;
code{{background:#eaeef2;padding:2px 8px;border-radius:6px;
letter-spacing:1.5px;font-family:ui-monospace,Consolas,monospace;
font-size:13px;color:#79c0ff}}
font-size:13px;color:#0969da}}
.dot{{display:inline-block;width:7px;height:7px;border-radius:50%;
margin-right:7px;vertical-align:middle;background:#484f58}}
.dot.on{{background:var(--ok);box-shadow:0 0 0 3px #3fb95022}}
.dot.on{{background:var(--ok);box-shadow:0 0 0 3px #1a7f3722}}
.badge{{font-size:11px;padding:2px 8px;border-radius:20px;
border:1px solid transparent;white-space:nowrap}}
.badge.on{{color:var(--ok);background:#3fb9501a;border-color:#3fb95040}}
.badge.off{{color:var(--muted);background:#6e76811a;border-color:#6e768140}}
.badge.on{{color:var(--ok);background:#1a7f371a;border-color:#1a7f3740}}
.badge.off{{color:var(--muted);background:#8b949e1a;border-color:#8b949e40}}
.pickcell{{width:38px;text-align:center;padding-right:0}}
input[type=checkbox]{{width:15px;height:15px;cursor:pointer;
accent-color:var(--accent);vertical-align:middle}}
@@ -1742,7 +1742,7 @@ class Handler(BaseHTTPRequestHandler):
padding:0;min-width:0}}
td.pickcell::before{{content:'';display:none}}
td.ops{{justify-content:flex-end;padding-top:10px;margin-top:4px;
border-top:1px solid #21262d}}
border-top:1px solid #eaeef2}}
td.ops::before{{content:'';display:none}}
td.empty{{display:block;text-align:center}}
td.empty::before{{content:'';display:none}}
@@ -1971,13 +1971,13 @@ if (netBtn) netBtn.onclick = async () => {{
const rows = [];
if (j.tunnelMetrics) {{
const conns = j.tunnelConnections || 0;
const color = conns >= 2 ? '#3fb950'
: (conns === 1 ? '#d29922' : '#f85149');
const color = conns >= 2 ? '#1a7f37'
: (conns === 1 ? '#9a6700' : '#f85149');
rows.push('隧道连接数:<b style="color:' + color + '">' + conns
+ '</b>' + (conns === 0 ? '(断了,看门狗会重启)' : ''));
rows.push('隧道累计请求:' + (j.tunnelRequests || 0));
}} else {{
rows.push('<span style="color:#d29922">读不到隧道指标'
rows.push('<span style="color:#9a6700">读不到隧道指标'
+ (j.tunnelError ? '(' + j.tunnelError + ')' : '') + '</span>');
}}
rows.push('登记设备:' + j.devices + '(在线 ' + j.online + ')');
@@ -2017,7 +2017,7 @@ if (netBtn) netBtn.onclick = async () => {{
const j = await r.json();
const files = (j && j.files) || [];
if (!files.length) {{
body.innerHTML = '<span style="color:#8b949e">服务器上还没有成品。</span>';
body.innerHTML = '<span style="color:#656d76">服务器上还没有成品。</span>';
return;
}}
// 优先挑被控端整包;没有就挑第一个 zip;再没有就第一个
@@ -2031,10 +2031,10 @@ if (netBtn) netBtn.onclick = async () => {{
+ 'background:#238636;color:#fff;text-decoration:none;'
+ 'font-weight:600;font-size:15px">'
+ '⬇ 下载 ' + pick.name + '</a>'
+ '<div style="color:#6e7681;font-size:12px;margin-top:8px">'
+ '<div style="color:#8b949e;font-size:12px;margin-top:8px">'
+ mb + ' MB · 也可以去 '
+ '<a href="https://gitee.com/xmz7891/ykxmz/releases" target="_blank" '
+ 'rel="noopener" style="color:#79c0ff">Gitee 历史版本</a>'
+ 'rel="noopener" style="color:#0969da">Gitee 历史版本</a>'
+ '</div>';
}} catch (e) {{
body.innerHTML = '<span style="color:#f85149">读不到:' + e + '</span>';