Add back the sync with semver

This commit is contained in:
Owen
2026-07-02 12:10:20 -04:00
parent 5fc5a3ebca
commit 1bf3d2cdd6
2 changed files with 63 additions and 51 deletions

View File

@@ -5,8 +5,21 @@ import { Newt } from "@server/db";
import { eq } from "drizzle-orm"; import { eq } from "drizzle-orm";
import logger from "@server/logger"; import logger from "@server/logger";
import { sendNewtSyncMessage } from "./sync"; import { sendNewtSyncMessage } from "./sync";
import semver from "semver";
import { recordSitePing } from "./pingAccumulator"; import { recordSitePing } from "./pingAccumulator";
const NEWT_SUPPORTS_SYNC_VERSION = ">=1.14.0";
const PONG = {
message: {
type: "pong",
data: {
timestamp: new Date().toISOString()
}
},
broadcast: false,
excludeSender: false
};
/** /**
* Handles ping messages from newt clients. * Handles ping messages from newt clients.
* *
@@ -37,6 +50,14 @@ export const handleNewtPingMessage: MessageHandler = async (context) => {
// cross-region latency to the database. // cross-region latency to the database.
recordSitePing(newt.siteId); recordSitePing(newt.siteId);
if (
newt.version &&
!semver.satisfies(newt.version, NEWT_SUPPORTS_SYNC_VERSION)
) {
// Newt does not support the sync message so not checking - stop here -
return PONG;
}
// Check config version and sync if stale. // Check config version and sync if stale.
const configVersion = await getClientConfigVersion(newt.newtId); const configVersion = await getClientConfigVersion(newt.newtId);
@@ -65,14 +86,5 @@ export const handleNewtPingMessage: MessageHandler = async (context) => {
await sendNewtSyncMessage(newt, site); await sendNewtSyncMessage(newt, site);
} }
return { return PONG;
message: {
type: "pong",
data: {
timestamp: new Date().toISOString()
}
},
broadcast: false,
excludeSender: false
};
}; };

View File

@@ -9,45 +9,45 @@ import {
import { canCompress } from "@server/lib/clientVersionChecks"; import { canCompress } from "@server/lib/clientVersionChecks";
export async function sendNewtSyncMessage(newt: Newt, site: Site) { export async function sendNewtSyncMessage(newt: Newt, site: Site) {
// const { const {
// tcpTargets, tcpTargets,
// udpTargets, udpTargets,
// validHealthCheckTargets, validHealthCheckTargets,
// browserGatewayTargets, browserGatewayTargets,
// remoteExitNodeSubnets remoteExitNodeSubnets
// } = await buildTargetConfigurationForNewtClient(site.siteId); } = await buildTargetConfigurationForNewtClient(site.siteId);
// let exitNode: ExitNode | undefined; let exitNode: ExitNode | undefined;
// if (site.exitNodeId) { if (site.exitNodeId) {
// [exitNode] = await db [exitNode] = await db
// .select() .select()
// .from(exitNodes) .from(exitNodes)
// .where(eq(exitNodes.exitNodeId, site.exitNodeId)) .where(eq(exitNodes.exitNodeId, site.exitNodeId))
// .limit(1); .limit(1);
// } }
// const { peers, targets } = await buildClientConfigurationForNewtClient( const { peers, targets } = await buildClientConfigurationForNewtClient(
// site, site,
// exitNode exitNode
// ); );
// await sendToClient( await sendToClient(
// newt.newtId, newt.newtId,
// { {
// type: "newt/sync", type: "newt/sync",
// data: { data: {
// proxyTargets: { proxyTargets: {
// udp: udpTargets, udp: udpTargets,
// tcp: tcpTargets tcp: tcpTargets
// }, },
// healthCheckTargets: validHealthCheckTargets, healthCheckTargets: validHealthCheckTargets,
// peers: peers, peers: peers,
// clientTargets: targets, clientTargets: targets,
// browserGatewayTargets: browserGatewayTargets, browserGatewayTargets: browserGatewayTargets,
// remoteExitNodeSubnets: remoteExitNodeSubnets remoteExitNodeSubnets: remoteExitNodeSubnets
// } }
// }, },
// { {
// compress: canCompress(newt.version, "newt") compress: canCompress(newt.version, "newt")
// } }
// ).catch((error) => { ).catch((error) => {
// logger.warn(`Error sending newt sync message:`, error); logger.warn(`Error sending newt sync message:`, error);
// }); });
} }