Browse Source

add wireguard routes

pull/1250/head
Bernd Storath 9 months ago
parent
commit
48bba9ee07
  1. 9
      src/server/api/wireguard/backup.ts
  2. 5
      src/server/api/wireguard/client.ts
  3. 12
      src/server/api/wireguard/client/[clientId]/address.ts
  4. 16
      src/server/api/wireguard/client/[clientId]/configuration.ts
  5. 11
      src/server/api/wireguard/client/[clientId]/disable.ts
  6. 11
      src/server/api/wireguard/client/[clientId]/enable.ts
  7. 8
      src/server/api/wireguard/client/[clientId]/index.ts
  8. 12
      src/server/api/wireguard/client/[clientId]/name.ts
  9. 9
      src/server/api/wireguard/client/[clientId]/qrcode.svg.ts
  10. 11
      src/server/api/wireguard/client/index.ts
  11. 8
      src/server/api/wireguard/restore.ts

9
src/server/api/wireguard/backup.ts

@ -0,0 +1,9 @@
import WireGuard from "~/utils/WireGuard";
export default defineEventHandler(async (event) => {
assertMethod(event, "GET");
const config = await WireGuard.backupConfiguration();
setHeader(event, 'Content-Disposition', 'attachment; filename="wg0.json"');
setHeader(event, 'Content-Type', 'text/json');
return config;
})

5
src/server/api/wireguard/client.ts

@ -1,5 +0,0 @@
import WireGuard from "~/utils/WireGuard";
export default defineEventHandler(() => {
return WireGuard.getClients();
})

12
src/server/api/wireguard/client/[clientId]/address.ts

@ -0,0 +1,12 @@
import WireGuard from "~/utils/WireGuard";
export default defineEventHandler(async (event) => {
assertMethod(event, "PUT");
const clientId = getRouterParam(event, 'clientId');
if (clientId === '__proto__' || clientId === 'constructor' || clientId === 'prototype') {
throw createError({ status: 403 });
}
const { address } = await readBody(event);
await WireGuard.updateClientAddress({ clientId, address });
return { success: true };
})

16
src/server/api/wireguard/client/[clientId]/configuration.ts

@ -0,0 +1,16 @@
import WireGuard from "~/utils/WireGuard";
export default defineEventHandler(async (event) => {
assertMethod(event, "GET");
const clientId = getRouterParam(event, 'clientId');
const client = await WireGuard.getClient({ clientId });
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"`);
setHeader(event, 'Content-Type', 'text/plain');
return config;
})

11
src/server/api/wireguard/client/[clientId]/disable.ts

@ -0,0 +1,11 @@
import WireGuard from "~/utils/WireGuard";
export default defineEventHandler(async (event) => {
assertMethod(event, "POST");
const clientId = getRouterParam(event, 'clientId');
if (clientId === '__proto__' || clientId === 'constructor' || clientId === 'prototype') {
throw createError({ status: 403 });
}
await WireGuard.disableClient({ clientId });
return { success: true };
})

11
src/server/api/wireguard/client/[clientId]/enable.ts

@ -0,0 +1,11 @@
import WireGuard from "~/utils/WireGuard";
export default defineEventHandler(async (event) => {
assertMethod(event, "POST");
const clientId = getRouterParam(event, 'clientId');
if (clientId === '__proto__' || clientId === 'constructor' || clientId === 'prototype') {
throw createError({ status: 403 });
}
await WireGuard.enableClient({ clientId });
return { success: true };
})

8
src/server/api/wireguard/client/[clientId]/index.ts

@ -0,0 +1,8 @@
import WireGuard from "~/utils/WireGuard";
export default defineEventHandler(async (event) => {
assertMethod(event, "DELETE");
const clientId = getRouterParam(event, 'clientId');
await WireGuard.deleteClient({ clientId });
return { success: true };
});

12
src/server/api/wireguard/client/[clientId]/name.ts

@ -0,0 +1,12 @@
import WireGuard from "~/utils/WireGuard";
export default defineEventHandler(async (event) => {
assertMethod(event, "PUT");
const clientId = getRouterParam(event, 'clientId');
if (clientId === '__proto__' || clientId === 'constructor' || clientId === 'prototype') {
throw createError({ status: 403 });
}
const { name } = await readBody(event);
await WireGuard.updateClientName({ clientId, name });
return { success: true };
})

9
src/server/api/wireguard/client/[clientId]/qrcode.svg.ts

@ -0,0 +1,9 @@
import WireGuard from "~/utils/WireGuard";
export default defineEventHandler(async (event) => {
assertMethod(event, "GET");
const clientId = getRouterParam(event, 'clientId');
const svg = await WireGuard.getClientQRCodeSVG({ clientId });
setHeader(event, 'Content-Type', 'image/svg+xml');
return svg;
})

11
src/server/api/wireguard/client/index.ts

@ -0,0 +1,11 @@
import WireGuard from "~/utils/WireGuard";
export default defineEventHandler(async (event) => {
if (isMethod(event, "GET")) {
return WireGuard.getClients();
} else if (isMethod(event, "POST")) {
const { name } = await readBody(event);
await WireGuard.createClient({ name });
return { success: true };
}
})

8
src/server/api/wireguard/restore.ts

@ -0,0 +1,8 @@
import WireGuard from "~/utils/WireGuard";
export default defineEventHandler(async (event) => {
assertMethod(event, "PUT");
const { file } = await readBody(event);
await WireGuard.restoreConfiguration(file);
return { success: true };
})
Loading…
Cancel
Save