mirror of
https://github.com/fosrl/pangolin.git
synced 2026-08-05 12:10:52 +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
|
const requiresExitNodeRows = await trx
|
||||||
.select({
|
.select({
|
||||||
clientId: clientSiteResourcesAssociationsCache.clientId
|
clientId: clientSiteResourcesAssociationsCache.clientId,
|
||||||
|
alias: siteResources.alias
|
||||||
})
|
})
|
||||||
.from(clientSiteResourcesAssociationsCache)
|
.from(clientSiteResourcesAssociationsCache)
|
||||||
.innerJoin(
|
.innerJoin(
|
||||||
@@ -1141,6 +1142,20 @@ async function syncClientExitNodeConnections(
|
|||||||
requiresExitNodeRows.map((r) => r.clientId)
|
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(
|
const exitNodeIds = Array.from(
|
||||||
new Set(
|
new Set(
|
||||||
clientsData
|
clientsData
|
||||||
@@ -1215,7 +1230,10 @@ async function syncClientExitNodeConnections(
|
|||||||
relayPort,
|
relayPort,
|
||||||
publicKey: exitNode.publicKey,
|
publicKey: exitNode.publicKey,
|
||||||
serverIP: exitNode.address.split("/")[0],
|
serverIP: exitNode.address.split("/")[0],
|
||||||
tunnelIP: client.exitNodeSubnet.split("/")[0]
|
tunnelIP: client.exitNodeSubnet.split("/")[0],
|
||||||
|
aliases: exitNodeAliasesByClientId.get(
|
||||||
|
client.clientId
|
||||||
|
) ?? []
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
options: {
|
options: {
|
||||||
|
|||||||
Reference in New Issue
Block a user