From 7ac27b38833f13987a0d2bfa9b6d0351e70cfb1b Mon Sep 17 00:00:00 2001 From: Owen Date: Thu, 20 Nov 2025 16:08:03 -0500 Subject: [PATCH] Switch to update --- server/routers/client/targets.ts | 30 +++++++++++++++++++ .../siteResource/updateSiteResource.ts | 29 ++++++++++-------- 2 files changed, 46 insertions(+), 13 deletions(-) diff --git a/server/routers/client/targets.ts b/server/routers/client/targets.ts index 29380010..c94cb680 100644 --- a/server/routers/client/targets.ts +++ b/server/routers/client/targets.ts @@ -86,3 +86,33 @@ export async function removeRemoteSubnets( } }); } + +export async function updateRemoteSubnets( + clientId: number, + siteId: number, + remoteSubnets: { + oldRemoteSubnets: string[], + newRemoteSubnets: string[] + }, + olmId?: string +) { + if (!olmId) { + const [olm] = await db + .select() + .from(olms) + .where(eq(olms.clientId, clientId)) + .limit(1); + if (!olm) { + throw new Error(`Olm with ID ${clientId} not found`); + } + olmId = olm.olmId; + } + + await sendToClient(olmId, { + type: `olm/wg/peer/update-remote-subnets`, + data: { + siteId: siteId, + ...remoteSubnets + } + }); +} diff --git a/server/routers/siteResource/updateSiteResource.ts b/server/routers/siteResource/updateSiteResource.ts index 70f0d712..2e2c1592 100644 --- a/server/routers/siteResource/updateSiteResource.ts +++ b/server/routers/siteResource/updateSiteResource.ts @@ -18,11 +18,13 @@ import { fromError } from "zod-validation-error"; import logger from "@server/logger"; import { OpenAPITags, registry } from "@server/openApi"; import { - addRemoteSubnets, - removeRemoteSubnets, + updateRemoteSubnets, updateTargets } from "@server/routers/client/targets"; -import { generateRemoteSubnets, generateSubnetProxyTargets } from "@server/lib/ip"; +import { + generateRemoteSubnets, + generateSubnetProxyTargets +} from "@server/lib/ip"; import { getClientSiteResourceAccess, rebuildClientAssociations @@ -261,19 +263,20 @@ export async function updateSiteResource( }); let olmJobs: Promise[] = []; - for (const client of mergedAllClients) { // we also need to update the remote subnets on the olms for each client that has access to this site + for (const client of mergedAllClients) { + // we also need to update the remote subnets on the olms for each client that has access to this site olmJobs.push( - removeRemoteSubnets( + updateRemoteSubnets( client.clientId, updatedSiteResource.siteId, - generateRemoteSubnets([existingSiteResource]) - ) - ); - olmJobs.push( - addRemoteSubnets( - client.clientId, - updatedSiteResource.siteId, - generateRemoteSubnets([updatedSiteResource]) + { + oldRemoteSubnets: generateRemoteSubnets([ + existingSiteResource + ]), + newRemoteSubnets: generateRemoteSubnets([ + updatedSiteResource + ]) + } ) ); }