mirror of
https://github.com/fosrl/pangolin.git
synced 2026-06-27 17:49:04 +00:00
Send down remote subnets
This commit is contained in:
@@ -5,6 +5,7 @@ import {
|
|||||||
db,
|
db,
|
||||||
ExitNode,
|
ExitNode,
|
||||||
networks,
|
networks,
|
||||||
|
remoteExitNodeResources,
|
||||||
resources,
|
resources,
|
||||||
Site,
|
Site,
|
||||||
siteNetworks,
|
siteNetworks,
|
||||||
@@ -223,7 +224,8 @@ export async function buildClientConfigurationForNewtClient(
|
|||||||
|
|
||||||
export async function buildTargetConfigurationForNewtClient(
|
export async function buildTargetConfigurationForNewtClient(
|
||||||
siteId: number,
|
siteId: number,
|
||||||
version?: string | null
|
version?: string | null,
|
||||||
|
remoteExitNodeId?: string
|
||||||
) {
|
) {
|
||||||
// Get all enabled targets with their resource mode information
|
// Get all enabled targets with their resource mode information
|
||||||
const allTargets = await db
|
const allTargets = await db
|
||||||
@@ -379,10 +381,24 @@ export async function buildTargetConfigurationForNewtClient(
|
|||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
let remoteExitNodeSubnets: string[] = [];
|
||||||
|
if (remoteExitNodeId) {
|
||||||
|
const remoteNodeResources = await db
|
||||||
|
.select()
|
||||||
|
.from(remoteExitNodeResources)
|
||||||
|
.where(
|
||||||
|
eq(remoteExitNodeResources.remoteExitNodeId, remoteExitNodeId)
|
||||||
|
);
|
||||||
|
|
||||||
|
// filter through these and provide the subnets
|
||||||
|
remoteExitNodeSubnets = remoteNodeResources.map((r) => r.destination);
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
validHealthCheckTargets,
|
validHealthCheckTargets,
|
||||||
tcpTargets,
|
tcpTargets,
|
||||||
udpTargets,
|
udpTargets,
|
||||||
browserGatewayTargets
|
browserGatewayTargets,
|
||||||
|
remoteExitNodeSubnets
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { db, ExitNode, newts, Transaction } from "@server/db";
|
import { db, ExitNode, newts, remoteExitNodes, Transaction } from "@server/db";
|
||||||
import { MessageHandler } from "@server/routers/ws";
|
import { MessageHandler } from "@server/routers/ws";
|
||||||
import { exitNodes, Newt, sites } from "@server/db";
|
import { exitNodes, Newt, sites } from "@server/db";
|
||||||
import { eq } from "drizzle-orm";
|
import { eq } from "drizzle-orm";
|
||||||
@@ -196,12 +196,29 @@ export const handleNewtRegisterMessage: MessageHandler = async (context) => {
|
|||||||
.where(eq(newts.newtId, newt.newtId));
|
.where(eq(newts.newtId, newt.newtId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let remoteExitNodeId: string | undefined;
|
||||||
|
if (exitNode.type == "remoteExitNode") {
|
||||||
|
// get the remote exit node ID associated with this exit node
|
||||||
|
const [remoteExitNode] = await db
|
||||||
|
.select()
|
||||||
|
.from(remoteExitNodes)
|
||||||
|
.where(eq(remoteExitNodes.exitNodeId, exitNode.exitNodeId))
|
||||||
|
.limit(1);
|
||||||
|
|
||||||
|
remoteExitNodeId = remoteExitNode?.remoteExitNodeId;
|
||||||
|
}
|
||||||
|
|
||||||
const {
|
const {
|
||||||
tcpTargets,
|
tcpTargets,
|
||||||
udpTargets,
|
udpTargets,
|
||||||
validHealthCheckTargets,
|
validHealthCheckTargets,
|
||||||
browserGatewayTargets
|
browserGatewayTargets,
|
||||||
} = await buildTargetConfigurationForNewtClient(siteId, newtVersion);
|
remoteExitNodeSubnets
|
||||||
|
} = await buildTargetConfigurationForNewtClient(
|
||||||
|
siteId,
|
||||||
|
newtVersion,
|
||||||
|
remoteExitNodeId // this is for the remote node resources
|
||||||
|
);
|
||||||
|
|
||||||
logger.debug(
|
logger.debug(
|
||||||
`Sending health check targets to newt ${newt.newtId}: ${JSON.stringify(validHealthCheckTargets)}`
|
`Sending health check targets to newt ${newt.newtId}: ${JSON.stringify(validHealthCheckTargets)}`
|
||||||
@@ -222,6 +239,7 @@ export const handleNewtRegisterMessage: MessageHandler = async (context) => {
|
|||||||
},
|
},
|
||||||
healthCheckTargets: validHealthCheckTargets,
|
healthCheckTargets: validHealthCheckTargets,
|
||||||
browserGatewayTargets: browserGatewayTargets,
|
browserGatewayTargets: browserGatewayTargets,
|
||||||
|
remoteExitNodeSubnets: remoteExitNodeSubnets,
|
||||||
chainId: chainId
|
chainId: chainId
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user