From dac49f7fdc2d0796c261c3c2f78f2496c934b93b Mon Sep 17 00:00:00 2001 From: Owen Date: Wed, 26 Mar 2025 21:39:12 -0400 Subject: [PATCH] Converting more multi site --- server/routers/client/createClient.ts | 3 --- server/routers/client/pickClientDefaults.ts | 18 ++++++++++++++++-- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/server/routers/client/createClient.ts b/server/routers/client/createClient.ts index 0dd1e2da..19b41b66 100644 --- a/server/routers/client/createClient.ts +++ b/server/routers/client/createClient.ts @@ -18,9 +18,7 @@ import HttpCode from "@server/types/HttpCode"; import createHttpError from "http-errors"; import logger from "@server/logger"; import { eq, and } from "drizzle-orm"; -import { addPeer } from "../newt/peers"; import { fromError } from "zod-validation-error"; -import { newts } from "@server/db/schema"; import moment from "moment"; import { hashPassword } from "@server/auth/password"; @@ -122,7 +120,6 @@ export async function createClient( const [newClient] = await trx .insert(clients) .values({ - siteId, orgId: site.orgId, name, subnet, diff --git a/server/routers/client/pickClientDefaults.ts b/server/routers/client/pickClientDefaults.ts index 5e87759d..b56a4bf4 100644 --- a/server/routers/client/pickClientDefaults.ts +++ b/server/routers/client/pickClientDefaults.ts @@ -1,6 +1,6 @@ import { Request, Response, NextFunction } from "express"; import { db } from "@server/db"; -import { clients, olms, sites } from "@server/db/schema"; +import { clients, exitNodes, olms, sites } from "@server/db/schema"; import { eq } from "drizzle-orm"; import response from "@server/lib/response"; import HttpCode from "@server/types/HttpCode"; @@ -19,6 +19,7 @@ const getSiteSchema = z .strict(); export type PickClientDefaultsResponse = { + exitNodeId: number; siteId: number; address: string; publicKey: string; @@ -66,8 +67,20 @@ export async function pickClientDefaults( ); } - // make sure all the required fields are present + // TODO: more intelligent way to pick the exit node + // make sure there is an exit node by counting the exit nodes table + const nodes = await db.select().from(exitNodes); + if (nodes.length === 0) { + return next( + createHttpError(HttpCode.NOT_FOUND, "No exit nodes available") + ); + } + + // get the first exit node + const exitNode = nodes[0]; + + // make sure all the required fields are present const sitesRequiredFields = z.object({ address: z.string(), publicKey: z.string(), @@ -95,6 +108,7 @@ export async function pickClientDefaults( return response(res, { data: { + exitNodeId: exitNode.exitNodeId, siteId: site.siteId, address: address, publicKey: publicKey,