feat: preliminary peer api

This commit is contained in:
DecDuck
2025-05-13 12:28:18 +10:00
parent 70db79b50f
commit 4fb0a185f6
5 changed files with 128 additions and 6 deletions
+20
View File
@@ -0,0 +1,20 @@
import { ClientCapabilities } from "~/prisma/client";
import { defineClientEventHandler } from "~/server/internal/clients/event-handler";
import headscaleManager from "~/server/internal/p2p/headscale";
export default defineClientEventHandler(async (h3, { fetchClient }) => {
const client = await fetchClient();
if (!client.capabilities.includes(ClientCapabilities.PeerAPI))
throw createError({
statusCode: 403,
statusMessage: "Capability not allowed.",
});
if (!headscaleManager.enabled())
throw createError({
statusCode: 500,
statusMessage: "Peer network not available.",
});
return headscaleManager.configuration();
});
+26
View File
@@ -0,0 +1,26 @@
import { ClientCapabilities } from "~/prisma/client";
import { defineClientEventHandler } from "~/server/internal/clients/event-handler";
import headscaleManager from "~/server/internal/p2p/headscale";
export default defineClientEventHandler(
async (h3, { fetchClient, fetchUser }) => {
const client = await fetchClient();
if (!client.capabilities.includes(ClientCapabilities.PeerAPI))
throw createError({
statusCode: 403,
statusMessage: "Capability not allowed.",
});
if (!headscaleManager.enabled())
throw createError({
statusCode: 500,
statusMessage: "Peer network not available.",
});
const user = await fetchUser();
const key = await headscaleManager.createPreauthKey(user, client);
return key;
},
);