diff --git a/javascript/packages/orchestrator/src/bootnode.ts b/javascript/packages/orchestrator/src/bootnode.ts index e7def2d6a..da32463d6 100644 --- a/javascript/packages/orchestrator/src/bootnode.ts +++ b/javascript/packages/orchestrator/src/bootnode.ts @@ -4,18 +4,30 @@ import PeerId from "peer-id"; export async function generateBootnodeString( key: string, + args: string[], ip: string, port: number, useWs: boolean = true, ): Promise { + let multiaddress; let pair = await libp2pKeys.generateKeyPairFromSeed( "Ed25519", hexToU8a(hexAddPrefix(key)), 1024, ); let peerId: PeerId = await PeerId.createFromPrivKey(pair.bytes); - const multiaddress = `/ip4/${ip}/tcp/${port}/${ - useWs ? "ws/" : "/" - }p2p/${peerId.toB58String()}`; + + const listenIndex = args.findIndex((arg) => arg === "--listen-addr"); + if (listenIndex >= 0) { + let listenAddrParts = args[listenIndex + 1].split("/"); + listenAddrParts[2] = ip; + listenAddrParts[4] = port.toString(); + multiaddress = `${listenAddrParts.join("/")}/p2p/${peerId.toB58String()}`; + } else { + multiaddress = `/ip4/${ip}/tcp/${port}/${ + useWs ? "ws/" : "/" + }p2p/${peerId.toB58String()}`; + } + return multiaddress; } diff --git a/javascript/packages/orchestrator/src/cmdGenerator.ts b/javascript/packages/orchestrator/src/cmdGenerator.ts index c88d73a10..a9cfe121a 100644 --- a/javascript/packages/orchestrator/src/cmdGenerator.ts +++ b/javascript/packages/orchestrator/src/cmdGenerator.ts @@ -292,7 +292,7 @@ export async function genCmd( args[listenIndex + 1] = listenAddr; } else { // no --listen-add args - args.push(...[`--listen-addr /ip4/0.0.0.0/tcp/${nodeSetup.p2pPort}/ws`]); + args.push(...["--listen-addr", `/ip4/0.0.0.0/tcp/${nodeSetup.p2pPort}/ws`]); } // set our base path diff --git a/javascript/packages/orchestrator/src/orchestrator.ts b/javascript/packages/orchestrator/src/orchestrator.ts index 866cb704d..6cfceb37e 100644 --- a/javascript/packages/orchestrator/src/orchestrator.ts +++ b/javascript/packages/orchestrator/src/orchestrator.ts @@ -509,6 +509,7 @@ export async function start( const [nodeIp, nodePort] = await client.getNodeInfo(podDef.metadata.name); const nodeMultiAddress = await generateBootnodeString( node.key!, + node.args, nodeIp, nodePort, ); @@ -655,7 +656,12 @@ export async function start( const [nodeIp, nodePort] = await client.getNodeInfo(firstNode.name); bootnodes.push( - await generateBootnodeString(firstNode.key!, nodeIp, nodePort), + await generateBootnodeString( + firstNode.key!, + firstNode.args, + nodeIp, + nodePort, + ), ); // add bootnodes to chain spec await addBootNodes(chainSpecFullPath, bootnodes); @@ -712,6 +718,7 @@ export async function start( await addBootNodes(parachain.specPath!, [ await generateBootnodeString( firstCollatorNode.key!, + firstCollatorNode.args, nodeIp, nodePort, ),