Compare commits

..

1 Commits

Author SHA1 Message Date
Owen Schwartz
bdc45887f9 Add chainId to dedup messages (#2737)
* ChainId send through on sensitive messages
2026-03-29 12:08:29 -07:00
4 changed files with 13 additions and 24 deletions

View File

@@ -8,13 +8,6 @@ import { sendToExitNode } from "#dynamic/lib/exitNodes";
import { buildClientConfigurationForNewtClient } from "./buildConfiguration"; import { buildClientConfigurationForNewtClient } from "./buildConfiguration";
import { canCompress } from "@server/lib/clientVersionChecks"; import { canCompress } from "@server/lib/clientVersionChecks";
const inputSchema = z.object({
publicKey: z.string(),
port: z.int().positive()
});
type Input = z.infer<typeof inputSchema>;
export const handleGetConfigMessage: MessageHandler = async (context) => { export const handleGetConfigMessage: MessageHandler = async (context) => {
const { message, client, sendToClient } = context; const { message, client, sendToClient } = context;
const newt = client as Newt; const newt = client as Newt;
@@ -33,16 +26,7 @@ export const handleGetConfigMessage: MessageHandler = async (context) => {
return; return;
} }
const parsed = inputSchema.safeParse(message.data); const { publicKey, port, chainId } = message.data;
if (!parsed.success) {
logger.error(
"handleGetConfigMessage: Invalid input: " +
fromError(parsed.error).toString()
);
return;
}
const { publicKey, port } = message.data as Input;
const siteId = newt.siteId; const siteId = newt.siteId;
// Get the current site data // Get the current site data
@@ -133,7 +117,8 @@ export const handleGetConfigMessage: MessageHandler = async (context) => {
data: { data: {
ipAddress: site.address, ipAddress: site.address,
peers, peers,
targets targets,
chainId: chainId
} }
}, },
options: { options: {

View File

@@ -33,7 +33,7 @@ export const handleNewtPingRequestMessage: MessageHandler = async (context) => {
return; return;
} }
const { noCloud } = message.data; const { noCloud, chainId } = message.data;
const exitNodesList = await listExitNodes( const exitNodesList = await listExitNodes(
site.orgId, site.orgId,
@@ -98,7 +98,8 @@ export const handleNewtPingRequestMessage: MessageHandler = async (context) => {
message: { message: {
type: "newt/ping/exitNodes", type: "newt/ping/exitNodes",
data: { data: {
exitNodes: filteredExitNodes exitNodes: filteredExitNodes,
chainId: chainId
} }
}, },
broadcast: false, // Send to all clients broadcast: false, // Send to all clients

View File

@@ -43,7 +43,7 @@ export const handleNewtRegisterMessage: MessageHandler = async (context) => {
const siteId = newt.siteId; const siteId = newt.siteId;
const { publicKey, pingResults, newtVersion, backwardsCompatible } = const { publicKey, pingResults, newtVersion, backwardsCompatible, chainId } =
message.data; message.data;
if (!publicKey) { if (!publicKey) {
logger.warn("Public key not provided"); logger.warn("Public key not provided");
@@ -211,7 +211,8 @@ export const handleNewtRegisterMessage: MessageHandler = async (context) => {
udp: udpTargets, udp: udpTargets,
tcp: tcpTargets tcp: tcpTargets
}, },
healthCheckTargets: validHealthCheckTargets healthCheckTargets: validHealthCheckTargets,
chainId: chainId
} }
}, },
options: { options: {

View File

@@ -41,7 +41,8 @@ export const handleOlmRegisterMessage: MessageHandler = async (context) => {
orgId, orgId,
userToken, userToken,
fingerprint, fingerprint,
postures postures,
chainId
} = message.data; } = message.data;
if (!olm.clientId) { if (!olm.clientId) {
@@ -293,7 +294,8 @@ export const handleOlmRegisterMessage: MessageHandler = async (context) => {
data: { data: {
sites: siteConfigurations, sites: siteConfigurations,
tunnelIP: client.subnet, tunnelIP: client.subnet,
utilitySubnet: org.utilitySubnet utilitySubnet: org.utilitySubnet,
chainId: chainId
} }
}, },
options: { options: {