Add AWG_GEN/AWG_PIN switches and surface module version

Upstream AmneziaWG 3.x is still shifting under active development
(unanswered kernel-module issues around header protection and
handshake-without-data regressions), so give operators an explicit
opt-out/opt-in instead of always auto-selecting 3.1, and pin the
installed package so unattended-upgrades can't swap the module under
a live server. Surface the running module/tools version and protocol
generation through /health, the CLI status command, and the panel's
server card so a mismatch is visible instead of silent.
This commit is contained in:
2026-08-25 14:57:41 +03:00
parent 6fdacd71c3
commit c0e19f284d
8 changed files with 180 additions and 49 deletions
+5 -5
View File
@@ -4,7 +4,7 @@
import { useState, useEffect, useRef, useCallback } from 'react';
import QRCode from 'qrcode';
import {
apiFetch, vpnKeyToConf, downloadFile, copyText, bytes, timeAgo,
apiFetch, vpnKeyToConf, downloadFile, copyText, bytes, timeAgo, genLabel,
type User, type PageProps, type AwgGen,
} from '../../lib/shared';
import { IcoPlus, IcoRefresh, IcoQR, IcoTrash, IcoGlobe } from '../../components/icons';
@@ -50,7 +50,7 @@ export default function UsersPage({ token, showMsg }: PageProps) {
// IP и ключевая пара сохраняются, но клиентам нужно заново импортировать ключ.
const reissueKeys = useCallback(async () => {
if (!confirm(
`Перевыпустить ключи (${stale.length} шт.) на поколении ${serverGen}?\n\n` +
`Перевыпустить ключи (${stale.length} шт.) на поколении ${genLabel(serverGen)}?\n\n` +
'Старые ключи перестанут работать — всем придётся импортировать ключ заново.',
)) return;
try {
@@ -162,11 +162,11 @@ export default function UsersPage({ token, showMsg }: PageProps) {
{u.key_gen !== serverGen && (
<span
className="tip-wrap user-gen"
data-tip={`Ключ выдан на AWG ${u.key_gen}, сервер работает на ${serverGen}`}
data-tip={`Ключ выдан на ${genLabel(u.key_gen)}, сервер работает на ${genLabel(serverGen)}`}
>
<span className="chip chip--error">
<span className="chip-dot" />
AWG {u.key_gen}
{genLabel(u.key_gen)}
</span>
</span>
)}
@@ -207,7 +207,7 @@ export default function UsersPage({ token, showMsg }: PageProps) {
{u.key_gen !== serverGen && (
<span className="chip chip--error">
<span className="chip-dot" />
AWG {u.key_gen}
{genLabel(u.key_gen)}
</span>
)}
</div>