mirror of
https://github.com/fosrl/pangolin.git
synced 2026-07-05 19:59:43 +00:00
Add back the sync with semver
This commit is contained in:
@@ -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
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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);
|
||||||
// });
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user