Files
wg-easy-ca-lose/src/server/routes/cnf/[oneTimeLink].ts
T
Bernd StorathandGitHub 66b292b11b improve security (#2661)
* disable basic auth when password auth disabled

* clarify otl security
2026-06-12 15:55:22 +02:00

45 lines
1.1 KiB
TypeScript

import { OneTimeLinkGetSchema } from '#db/repositories/oneTimeLink/types';
export default defineEventHandler(async (event) => {
const { oneTimeLink } = await getValidatedRouterParams(
event,
validateZod(OneTimeLinkGetSchema, event)
);
const otl = await Database.oneTimeLinks.getByOtl(oneTimeLink);
if (!otl) {
throw createError({
statusCode: 404,
statusMessage: 'Invalid One Time Link',
});
}
if (new Date() > new Date(otl.expiresAt)) {
throw createError({
statusCode: 410,
statusMessage: 'One Time Link has expired',
});
}
const client = await Database.clients.get(otl.id);
if (!client) {
throw createError({
statusCode: 404,
statusMessage: 'Invalid One Time Link',
});
}
const config = await WireGuard.getClientConfiguration({
clientId: client.id,
});
await Database.oneTimeLinks.erase(otl.id);
setHeader(
event,
'Content-Disposition',
`attachment; filename="${WireGuard.cleanClientFilename(client.name) || client.id}.conf"`
);
setHeader(event, 'Content-Type', 'application/octet-stream');
return config;
});