Browse Source

add filename cleaning at OneTimeLink download (#2253)

* add filename cleaning at OneTimeLink download

* add cleanConfigFilename function in utils/WireGuard
pull/2256/head
YuWorm 7 months ago
committed by GitHub
parent
commit
2f96d9934b
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 7
      src/server/api/client/[clientId]/configuration.get.ts
  2. 2
      src/server/routes/cnf/[oneTimeLink].ts
  3. 8
      src/server/utils/WireGuard.ts

7
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');

2
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;

8
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

Loading…
Cancel
Save