From 2f96d9934be622d2f62b064e819f97882f3afb8a Mon Sep 17 00:00:00 2001 From: YuWorm <34805071+yuWorm@users.noreply.github.com> Date: Fri, 31 Oct 2025 16:28:46 +0800 Subject: [PATCH] add filename cleaning at OneTimeLink download (#2253) * add filename cleaning at OneTimeLink download * add cleanConfigFilename function in utils/WireGuard --- src/server/api/client/[clientId]/configuration.get.ts | 7 +------ src/server/routes/cnf/[oneTimeLink].ts | 2 +- src/server/utils/WireGuard.ts | 8 ++++++++ 3 files changed, 10 insertions(+), 7 deletions(-) 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