Multi-interface management, topology view, performance tuning, precompiled CSS

- Interface model with per-interface subnet/port/keys; import/adopt existing wg-quick configs (key-less imported peers, optional key rotation), cascade delete
- Split wireguard.py into a package (keys via cryptography X25519, status, addressing, conf parse/render, sync, host tuning)
- ECharts horizontal topology view (interface -> peers -> site subnets)
- Advanced options: MTU, MSS clamping, FwMark/Table, custom PostUp/PostDown, per-peer keepalive override
- Runtime settings (sample interval/retention, online threshold, UI refresh) with traffic sample pruning; host tuning (UDP buffers, backlog, GRO forwarding)
- Precompiled Tailwind CSS replacing Play CDN runtime (fixes FOUC); stable table layout and diffed polling renders
- Host network mode in compose; NAT/isolation iptables moved into app sync

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
This commit is contained in:
lofyer
2026-07-05 14:01:44 +08:00
co-authored by factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
parent 192960ad3e
commit 1b227c2470
31 changed files with 2361 additions and 583 deletions
+3 -1
View File
@@ -4,14 +4,16 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{% block title %}WireGuard Admin{% endblock %}</title>
<script src="/static/tailwind.js"></script>
<link rel="stylesheet" href="/static/tailwind.css">
</head>
<body class="min-h-screen bg-slate-100 text-slate-800">
<nav class="bg-slate-900 text-slate-300">
<div class="mx-auto flex max-w-5xl items-center gap-6 px-6 py-3">
<span class="text-base font-bold tracking-wide text-white">WireGuard Admin</span>
<a href="/" class="text-sm hover:text-white">Dashboard</a>
<a href="/interfaces" class="text-sm hover:text-white">Interfaces</a>
<a href="/peers" class="text-sm hover:text-white">Peers</a>
<a href="/topology" class="text-sm hover:text-white">Topology</a>
<a href="/settings" class="text-sm hover:text-white">Settings</a>
<form method="post" action="/logout" class="ml-auto">
<button type="submit" class="text-sm text-slate-400 hover:text-white">Logout</button>