mirror of
https://gitcode.com/JianFeeeee/webui4frpc.git
synced 2026-09-20 08:57:55 +00:00
- cookie-based auth (/login /logout) replacing Basic Auth for UI, enabling logout - roles: superadmin (account management only), admin (full except accounts), viewer/audit (read-only status+cluster, export logs) - readonly accounts hide edit buttons (added remote node, group ops, canvas layout/save/import, cluster manage, install) instead of greying them - auditors see status+cluster only; ordinary admins lose the accounts nav; last-admin guard covers superadmin - remove pink theme entirely (switcher, [data-theme=pink], leftover localStorage), keep white/blue
282 lines
10 KiB
XML
282 lines
10 KiB
XML
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 500 500" width="500" height="500" shape-rendering="crispEdges">
|
||
<defs>
|
||
<rect id="p" width="14" height="14" fill="#000000" />
|
||
<rect id="q" width="7" height="7" fill="#2563eb" />
|
||
<rect id="d" width="8" height="8" fill="#94a3b8" />
|
||
<rect id="s" width="6" height="6" fill="#94a3b8" />
|
||
</defs>
|
||
|
||
<!-- 圆角白色背景 -->
|
||
<rect width="500" height="500" rx="40" fill="#ffffff" stroke="#e2e8f0" stroke-width="4" />
|
||
|
||
<!-- ========== 主字母 WUI ========== -->
|
||
<g transform="translate(70, 100)">
|
||
<!-- W -->
|
||
<g transform="translate(0, 0)">
|
||
<use href="#p" x="0" y="0" />
|
||
<use href="#p" x="14" y="0" />
|
||
<use href="#p" x="0" y="14" />
|
||
<use href="#p" x="14" y="14" />
|
||
<use href="#p" x="0" y="28" />
|
||
<use href="#p" x="14" y="28" />
|
||
<use href="#p" x="0" y="42" />
|
||
<use href="#p" x="14" y="42" />
|
||
<use href="#p" x="0" y="56" />
|
||
<use href="#p" x="14" y="56" />
|
||
<use href="#p" x="0" y="70" />
|
||
<use href="#p" x="14" y="70" />
|
||
<use href="#p" x="0" y="84" />
|
||
<use href="#p" x="14" y="84" />
|
||
<use href="#p" x="0" y="98" />
|
||
<use href="#p" x="14" y="98" />
|
||
<use href="#p" x="0" y="112" />
|
||
<use href="#p" x="14" y="112" />
|
||
<use href="#p" x="0" y="126" />
|
||
<use href="#p" x="14" y="126" />
|
||
<use href="#p" x="0" y="140" />
|
||
<use href="#p" x="14" y="140" />
|
||
<use href="#p" x="0" y="154" />
|
||
<use href="#p" x="14" y="154" />
|
||
<use href="#p" x="0" y="168" />
|
||
<use href="#p" x="14" y="168" />
|
||
<use href="#p" x="98" y="0" />
|
||
<use href="#p" x="112" y="0" />
|
||
<use href="#p" x="98" y="14" />
|
||
<use href="#p" x="112" y="14" />
|
||
<use href="#p" x="98" y="28" />
|
||
<use href="#p" x="112" y="28" />
|
||
<use href="#p" x="98" y="42" />
|
||
<use href="#p" x="112" y="42" />
|
||
<use href="#p" x="98" y="56" />
|
||
<use href="#p" x="112" y="56" />
|
||
<use href="#p" x="98" y="70" />
|
||
<use href="#p" x="112" y="70" />
|
||
<use href="#p" x="98" y="84" />
|
||
<use href="#p" x="112" y="84" />
|
||
<use href="#p" x="98" y="98" />
|
||
<use href="#p" x="112" y="98" />
|
||
<use href="#p" x="98" y="112" />
|
||
<use href="#p" x="112" y="112" />
|
||
<use href="#p" x="98" y="126" />
|
||
<use href="#p" x="112" y="126" />
|
||
<use href="#p" x="98" y="140" />
|
||
<use href="#p" x="112" y="140" />
|
||
<use href="#p" x="98" y="154" />
|
||
<use href="#p" x="112" y="154" />
|
||
<use href="#p" x="98" y="168" />
|
||
<use href="#p" x="112" y="168" />
|
||
<use href="#p" x="28" y="70" />
|
||
<use href="#p" x="56" y="70" />
|
||
<use href="#p" x="84" y="70" />
|
||
<use href="#p" x="28" y="84" />
|
||
<use href="#p" x="56" y="84" />
|
||
<use href="#p" x="84" y="84" />
|
||
<use href="#p" x="28" y="98" />
|
||
<use href="#p" x="56" y="98" />
|
||
<use href="#p" x="84" y="98" />
|
||
<use href="#p" x="28" y="112" />
|
||
<use href="#p" x="56" y="112" />
|
||
<use href="#p" x="84" y="112" />
|
||
<use href="#p" x="42" y="126" />
|
||
<use href="#p" x="70" y="126" />
|
||
<use href="#p" x="42" y="140" />
|
||
<use href="#p" x="70" y="140" />
|
||
<use href="#p" x="42" y="154" />
|
||
<use href="#p" x="70" y="154" />
|
||
<use href="#p" x="56" y="154" />
|
||
<use href="#p" x="56" y="168" />
|
||
</g>
|
||
|
||
<!-- U -->
|
||
<g transform="translate(144, 0)">
|
||
<use href="#p" x="0" y="0" />
|
||
<use href="#p" x="14" y="0" />
|
||
<use href="#p" x="0" y="14" />
|
||
<use href="#p" x="14" y="14" />
|
||
<use href="#p" x="0" y="28" />
|
||
<use href="#p" x="14" y="28" />
|
||
<use href="#p" x="0" y="42" />
|
||
<use href="#p" x="14" y="42" />
|
||
<use href="#p" x="0" y="56" />
|
||
<use href="#p" x="14" y="56" />
|
||
<use href="#p" x="0" y="70" />
|
||
<use href="#p" x="14" y="70" />
|
||
<use href="#p" x="0" y="84" />
|
||
<use href="#p" x="14" y="84" />
|
||
<use href="#p" x="0" y="98" />
|
||
<use href="#p" x="14" y="98" />
|
||
<use href="#p" x="0" y="112" />
|
||
<use href="#p" x="14" y="112" />
|
||
<use href="#p" x="0" y="126" />
|
||
<use href="#p" x="14" y="126" />
|
||
<use href="#p" x="0" y="140" />
|
||
<use href="#p" x="14" y="140" />
|
||
<use href="#p" x="0" y="154" />
|
||
<use href="#p" x="14" y="154" />
|
||
<use href="#p" x="0" y="168" />
|
||
<use href="#p" x="14" y="168" />
|
||
<use href="#p" x="98" y="0" />
|
||
<use href="#p" x="112" y="0" />
|
||
<use href="#p" x="98" y="14" />
|
||
<use href="#p" x="112" y="14" />
|
||
<use href="#p" x="98" y="28" />
|
||
<use href="#p" x="112" y="28" />
|
||
<use href="#p" x="98" y="42" />
|
||
<use href="#p" x="112" y="42" />
|
||
<use href="#p" x="98" y="56" />
|
||
<use href="#p" x="112" y="56" />
|
||
<use href="#p" x="98" y="70" />
|
||
<use href="#p" x="112" y="70" />
|
||
<use href="#p" x="98" y="84" />
|
||
<use href="#p" x="112" y="84" />
|
||
<use href="#p" x="98" y="98" />
|
||
<use href="#p" x="112" y="98" />
|
||
<use href="#p" x="98" y="112" />
|
||
<use href="#p" x="112" y="112" />
|
||
<use href="#p" x="98" y="126" />
|
||
<use href="#p" x="112" y="126" />
|
||
<use href="#p" x="98" y="140" />
|
||
<use href="#p" x="112" y="140" />
|
||
<use href="#p" x="98" y="154" />
|
||
<use href="#p" x="112" y="154" />
|
||
<use href="#p" x="98" y="168" />
|
||
<use href="#p" x="112" y="168" />
|
||
<use href="#p" x="0" y="168" />
|
||
<use href="#p" x="14" y="168" />
|
||
<use href="#p" x="28" y="168" />
|
||
<use href="#p" x="42" y="168" />
|
||
<use href="#p" x="56" y="168" />
|
||
<use href="#p" x="70" y="168" />
|
||
<use href="#p" x="84" y="168" />
|
||
<use href="#p" x="98" y="168" />
|
||
<use href="#p" x="112" y="168" />
|
||
|
||
<!-- ===== frpc(修正版:f 有完整竖线) ===== -->
|
||
<g transform="translate(49, 20)">
|
||
<!--
|
||
每个字母高度约 28px(4行×7px)
|
||
间距:字母之间空 14px(2行×7px)
|
||
f: y=0-27(竖线4行)
|
||
r: y=41-62
|
||
p: y=76-97
|
||
c: y=111-132
|
||
-->
|
||
|
||
<!-- ===== f:竖线(完整4行)+ 顶横 + 中横 ===== -->
|
||
<!-- 竖线(左侧,从顶到底连续4行) -->
|
||
<use href="#q" x="0" y="0" />
|
||
<use href="#q" x="0" y="7" />
|
||
<use href="#q" x="0" y="14" />
|
||
<use href="#q" x="0" y="21" />
|
||
<!-- 顶横(向右延伸) -->
|
||
<use href="#q" x="7" y="0" />
|
||
<use href="#q" x="14" y="0" />
|
||
<!-- 中横(向右延伸) -->
|
||
<use href="#q" x="7" y="14" />
|
||
<use href="#q" x="14" y="14" />
|
||
|
||
<!-- ===== r:竖线 + 顶横(一竖一横) ===== -->
|
||
<!-- 竖线(左侧,3行) -->
|
||
<use href="#q" x="0" y="41" />
|
||
<use href="#q" x="0" y="48" />
|
||
<use href="#q" x="0" y="55" />
|
||
<!-- 顶横(向右延伸) -->
|
||
<use href="#q" x="7" y="41" />
|
||
<use href="#q" x="14" y="41" />
|
||
|
||
<!-- ===== p:竖线(向下伸出)+ 右侧圆圈 ===== -->
|
||
<!-- 竖线(左侧,向下伸出5行) -->
|
||
<use href="#q" x="0" y="76" />
|
||
<use href="#q" x="0" y="83" />
|
||
<use href="#q" x="0" y="90" />
|
||
<use href="#q" x="0" y="97" />
|
||
<!-- 圆圈(右侧3×3闭合) -->
|
||
<use href="#q" x="7" y="76" />
|
||
<use href="#q" x="14" y="76" />
|
||
<use href="#q" x="14" y="83" />
|
||
<use href="#q" x="14" y="90" />
|
||
<use href="#q" x="7" y="90" />
|
||
<use href="#q" x="14" y="90" />
|
||
|
||
<!-- ===== c:开口朝右的弧形(左侧半圆) ===== -->
|
||
<!-- 左竖 -->
|
||
<use href="#q" x="0" y="111" />
|
||
<use href="#q" x="0" y="118" />
|
||
<use href="#q" x="0" y="125" />
|
||
<!-- 上弧 -->
|
||
<use href="#q" x="7" y="111" />
|
||
<use href="#q" x="14" y="111" />
|
||
<!-- 下弧 -->
|
||
<use href="#q" x="7" y="125" />
|
||
<use href="#q" x="14" y="125" />
|
||
</g>
|
||
</g>
|
||
|
||
<!-- I -->
|
||
<g transform="translate(288, 0)">
|
||
<use href="#p" x="0" y="0" />
|
||
<use href="#p" x="14" y="0" />
|
||
<use href="#p" x="28" y="0" />
|
||
<use href="#p" x="42" y="0" />
|
||
<use href="#p" x="56" y="0" />
|
||
<use href="#p" x="70" y="0" />
|
||
<use href="#p" x="28" y="14" />
|
||
<use href="#p" x="42" y="14" />
|
||
<use href="#p" x="28" y="28" />
|
||
<use href="#p" x="42" y="28" />
|
||
<use href="#p" x="28" y="42" />
|
||
<use href="#p" x="42" y="42" />
|
||
<use href="#p" x="28" y="56" />
|
||
<use href="#p" x="42" y="56" />
|
||
<use href="#p" x="28" y="70" />
|
||
<use href="#p" x="42" y="70" />
|
||
<use href="#p" x="28" y="84" />
|
||
<use href="#p" x="42" y="84" />
|
||
<use href="#p" x="28" y="98" />
|
||
<use href="#p" x="42" y="98" />
|
||
<use href="#p" x="28" y="112" />
|
||
<use href="#p" x="42" y="112" />
|
||
<use href="#p" x="28" y="126" />
|
||
<use href="#p" x="42" y="126" />
|
||
<use href="#p" x="28" y="140" />
|
||
<use href="#p" x="42" y="140" />
|
||
<use href="#p" x="28" y="154" />
|
||
<use href="#p" x="42" y="154" />
|
||
<use href="#p" x="0" y="168" />
|
||
<use href="#p" x="14" y="168" />
|
||
<use href="#p" x="28" y="168" />
|
||
<use href="#p" x="42" y="168" />
|
||
<use href="#p" x="56" y="168" />
|
||
<use href="#p" x="70" y="168" />
|
||
</g>
|
||
</g>
|
||
|
||
<!-- ========== 外围装饰 ========== -->
|
||
<g transform="translate(40, 40)">
|
||
<use href="#s" x="0" y="0" />
|
||
<use href="#s" x="0" y="12" />
|
||
<use href="#s" x="6" y="6" />
|
||
<use href="#s" x="12" y="0" />
|
||
<use href="#s" x="12" y="12" />
|
||
</g>
|
||
<use href="#d" x="440" y="40" />
|
||
<use href="#d" x="40" y="440" />
|
||
<g transform="translate(436, 436)">
|
||
<use href="#s" x="0" y="0" />
|
||
<use href="#s" x="0" y="12" />
|
||
<use href="#s" x="6" y="6" />
|
||
<use href="#s" x="12" y="0" />
|
||
<use href="#s" x="12" y="12" />
|
||
</g>
|
||
|
||
<!-- 黑色装饰点 -->
|
||
<rect x="90" y="380" width="14" height="14" fill="#000000" />
|
||
<rect x="420" y="140" width="14" height="14" fill="#000000" />
|
||
<rect x="230" y="50" width="14" height="14" fill="#000000" />
|
||
|
||
<!-- 蓝色小点缀 -->
|
||
<rect x="180" y="400" width="8" height="8" fill="#2563eb" />
|
||
<rect x="370" y="80" width="8" height="8" fill="#2563eb" />
|
||
<rect x="50" y="250" width="8" height="8" fill="#2563eb" />
|
||
</svg>
|