'use strict' // Run a public Cabal-compatible HyperDHT bootstrap node in the foreground. // Put this under a service manager and advertise the reachable IPv4 host/UDP port. const { loadCabalCore } = require('./cable_hyperswarm') async function main () { const host = process.argv[2] const port = Number(process.argv[3]) if (!host || !Number.isInteger(port) || port < 1 || port > 65535) { throw new Error('usage: cable bootstrap serve ') } const { requireCabal } = loadCabalCore() const DHT = requireCabal('hyperdht') const node = DHT.bootstrapper(port, host) await node.ready() const address = node.address() process.stdout.write('Cabal Hyperswarm bootstrap serving ' + host + ':' + address.port + ' (bound ' + address.host + ':' + address.port + ')\n') const close = async () => { try { await node.destroy() } finally { process.exit(0) } } process.once('SIGINT', close) process.once('SIGTERM', close) } if (require.main === module) main().catch(err => { process.stderr.write((err && err.stack) || String(err)) process.stderr.write('\n') process.exitCode = 1 }) module.exports = { main }