diff --git a/frontend/src/pages/clients/ClientFormModal.tsx b/frontend/src/pages/clients/ClientFormModal.tsx index f7b28f42c..3f5912557 100644 --- a/frontend/src/pages/clients/ClientFormModal.tsx +++ b/frontend/src/pages/clients/ClientFormModal.tsx @@ -132,6 +132,7 @@ type Values = ClientFormValues & { wgAllowedIPs: string; awgAllowedIPs: string; awgForwardedPorts: string; + wgKeepAlive: number; secret: string; adTag: string; }; @@ -168,6 +169,7 @@ const EMPTY: Values = { wgAllowedIPs: '', awgAllowedIPs: '', awgForwardedPorts: '', + wgKeepAlive: 25, secret: '', adTag: '', }; @@ -378,6 +380,7 @@ export default function ClientFormModal({ wgAllowedIPs: wgTunnelIPs ?? client.allowedIPs ?? '', awgAllowedIPs: awgTunnelIPs ?? client.allowedIPs ?? '', awgForwardedPorts: client.forwardedPorts || '', + wgKeepAlive: client.keepAlive ?? 0, secret: client.secret || '', adTag: client.adTag || '', }; @@ -693,6 +696,7 @@ export default function ClientFormModal({ // so both protocols share this one field set — see wgPrivateKey etc. // below and the AmneziaWG-labeled variants of the same inputs. clientPayload.privateKey = values.wgPrivateKey; + clientPayload.keepAlive = values.wgKeepAlive; clientPayload.publicKey = values.wgPublicKey; if (values.wgPreSharedKey) { clientPayload.preSharedKey = values.wgPreSharedKey; @@ -1271,6 +1275,13 @@ export default function ClientFormModal({ )} + + + {showAmneziawg && (