From 22b8e07dd13e33e8b7f2f2e73f9ddc3f9d0a5078 Mon Sep 17 00:00:00 2001 From: Bernd Storath <999999bst@gmail.com> Date: Tue, 18 Nov 2025 09:20:28 +0100 Subject: [PATCH] try ecc levels --- src/server/utils/WireGuard.ts | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/server/utils/WireGuard.ts b/src/server/utils/WireGuard.ts index 2da26fce..048d866d 100644 --- a/src/server/utils/WireGuard.ts +++ b/src/server/utils/WireGuard.ts @@ -166,11 +166,24 @@ class WireGuard { async getClientQRCodeSVG({ clientId }: { clientId: ID }) { const config = await this.getClientConfiguration({ clientId }); - return encodeQR(config, 'svg', { - ecc: 'high', - scale: 2, - encoding: 'byte', - }); + const ECMode = ['high', 'quartile', 'medium', 'low'] as const; + for (const ecc of ECMode) { + try { + return encodeQR(config, 'svg', { + ecc, + scale: 2, + encoding: 'byte', + }); + } catch (err) { + if (!(err instanceof Error && err.message === 'Capacity overflow')) { + throw err; + } + // retry with lower ecc + } + } + throw new Error( + 'Failed to generate QR code: Capacity overflow at all ECC levels' + ); } cleanClientFilename(name: string): string {