diff --git a/src/server/api/client/[clientId]/configuration.get.ts b/src/server/api/client/[clientId]/configuration.get.ts index 2fe407d5..ed44f8d2 100644 --- a/src/server/api/client/[clientId]/configuration.get.ts +++ b/src/server/api/client/[clientId]/configuration.get.ts @@ -19,16 +19,11 @@ export default definePermissionEventHandler( } const config = await WireGuard.getClientConfiguration({ clientId }); - const configName = client.name - .replace(/[^a-zA-Z0-9_=+.-]/g, '-') - .replace(/(-{2,}|-$)/g, '-') - .replace(/-$/, '') - .substring(0, 32); setHeader( event, 'Content-Disposition', - `attachment; filename="${configName || clientId}.conf"` + `attachment; filename="${WireGuard.cleanClientFilename(client.name) || clientId}.conf"` ); setHeader(event, 'Content-Type', 'text/plain'); diff --git a/src/server/routes/cnf/[oneTimeLink].ts b/src/server/routes/cnf/[oneTimeLink].ts index 3d048eb3..5be913a9 100644 --- a/src/server/routes/cnf/[oneTimeLink].ts +++ b/src/server/routes/cnf/[oneTimeLink].ts @@ -30,7 +30,7 @@ export default defineEventHandler(async (event) => { setHeader( event, 'Content-Disposition', - `attachment; filename="${client.name}.conf"` + `attachment; filename="${WireGuard.cleanClientFilename(client.name) || client.id}.conf"` ); setHeader(event, 'Content-Type', 'text/plain'); return config; diff --git a/src/server/utils/WireGuard.ts b/src/server/utils/WireGuard.ts index 8f9a96f2..b024ebff 100644 --- a/src/server/utils/WireGuard.ts +++ b/src/server/utils/WireGuard.ts @@ -170,6 +170,14 @@ class WireGuard { }); } + cleanClientFilename(name: string): string { + return name + .replace(/[^a-zA-Z0-9_=+.-]/g, '-') + .replace(/(-{2,}|-$)/g, '-') + .replace(/-$/, '') + .substring(0, 32); + } + async Startup() { WG_DEBUG('Starting WireGuard...'); // let as it has to refetch if keys change