// Quick test: can JS lookup find a C++ announced peer?
import HyperDHT from 'hyperdht'
import crypto from 'crypto'
import { readFileSync } from 'fs'
const bstr = readFileSync('/tmp/layer_bootstrap.txt', 'utf8').trim()
const bs = bstr.split(',').map(s => {
const [host, port] = s.split(':')
return { host, port: parseInt(port) }
})
const topic = crypto.createHash('sha256').update('test-p2p-layer2').digest()
const cppPk = readFileSync('/tmp/test_dht_announce_pk.txt', 'utf8').trim()
console.log('Looking up topic for C++ pk:', cppPk.slice(0, 16))
const dht = new HyperDHT({ bootstrap: bs, firewalled: false })
await dht.fullyBootstrapped()
let found = false
const stream = dht.lookup(topic)
for await (const data of stream) {
if (data.peers && data.peers.length > 0) {
for (const peer of data.peers) {
const pk = peer.publicKey.toString('hex')
console.log('Found peer:', pk.slice(0, 16))
if (pk === cppPk) {
found = true
console.log('MATCH — C++ announce verified!')
}
}
}
}
console.log(found ? 'PASS: C++ announce found by JS lookup' : 'FAIL: C++ peer not found')
await dht.destroy()
process.exit(found ? 0 : 1)