@@ -166,11 +166,24 @@ class WireGuard {
|
|||||||
|
|
||||||
async getClientQRCodeSVG({ clientId }: { clientId: ID }) {
|
async getClientQRCodeSVG({ clientId }: { clientId: ID }) {
|
||||||
const config = await this.getClientConfiguration({ clientId });
|
const config = await this.getClientConfiguration({ clientId });
|
||||||
return encodeQR(config, 'svg', {
|
const ECMode = ['high', 'quartile', 'medium', 'low'] as const;
|
||||||
ecc: 'high',
|
for (const ecc of ECMode) {
|
||||||
scale: 2,
|
try {
|
||||||
encoding: 'byte',
|
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 {
|
cleanClientFilename(name: string): string {
|
||||||
|
|||||||
Reference in New Issue
Block a user