mirror of
https://github.com/fosrl/pangolin.git
synced 2026-08-05 20:21:19 +02:00
send the aliases when connecting for the first time
This commit is contained in:
@@ -1116,7 +1116,8 @@ async function syncClientExitNodeConnections(
|
||||
|
||||
const requiresExitNodeRows = await trx
|
||||
.select({
|
||||
clientId: clientSiteResourcesAssociationsCache.clientId
|
||||
clientId: clientSiteResourcesAssociationsCache.clientId,
|
||||
alias: siteResources.alias
|
||||
})
|
||||
.from(clientSiteResourcesAssociationsCache)
|
||||
.innerJoin(
|
||||
@@ -1141,6 +1142,20 @@ async function syncClientExitNodeConnections(
|
||||
requiresExitNodeRows.map((r) => r.clientId)
|
||||
);
|
||||
|
||||
// Aliases for every exit-node-backed resource this client can reach, so
|
||||
// the live connect push carries the same alias list the register/reconnect
|
||||
// path (buildSiteConfigurationForOlmClient) would compute.
|
||||
const exitNodeAliasesByClientId = new Map<number, string[]>();
|
||||
for (const row of requiresExitNodeRows) {
|
||||
if (row.alias == null) continue;
|
||||
const existing = exitNodeAliasesByClientId.get(row.clientId);
|
||||
if (existing) {
|
||||
existing.push(row.alias);
|
||||
} else {
|
||||
exitNodeAliasesByClientId.set(row.clientId, [row.alias]);
|
||||
}
|
||||
}
|
||||
|
||||
const exitNodeIds = Array.from(
|
||||
new Set(
|
||||
clientsData
|
||||
@@ -1215,7 +1230,10 @@ async function syncClientExitNodeConnections(
|
||||
relayPort,
|
||||
publicKey: exitNode.publicKey,
|
||||
serverIP: exitNode.address.split("/")[0],
|
||||
tunnelIP: client.exitNodeSubnet.split("/")[0]
|
||||
tunnelIP: client.exitNodeSubnet.split("/")[0],
|
||||
aliases: exitNodeAliasesByClientId.get(
|
||||
client.clientId
|
||||
) ?? []
|
||||
}
|
||||
},
|
||||
options: {
|
||||
|
||||
Reference in New Issue
Block a user