Fetch Evernode Hosts
Posted: Sat Jan 03, 2026 10:10 pm
evernode-hosts.js
package.json
First, write npm i to install the packages needed.
Fetch with node evernode-hosts.js
Optional flags:
--server wss://yourserver --output youroutput
--host rAddress
The --host flag will only fetch that particular host and not the whole list as the other ones do.
Make a bin with these commands:
pkg evernode-hosts.js --targets node18-linux-x64 --output evernode-hosts
pkg evernode-hosts.js --targets node18-win-x64 --output evernode-hosts.exe
pkg evernode-hosts.js --targets node18-macos-x64 --output evernode-macos
Code: Select all
#!/usr/bin/env node
"use strict";
const fs = require("fs");
const path = require("path");
const evernode = require("evernode-js-client");
function parseArgs() {
const args = process.argv.slice(2);
let server = null;
let host = null;
let output = null;
for (let i = 0; i < args.length; i++) {
if ((args[i] === "--server" || args[i] === "-s") && args[i + 1]) {
server = args[++i];
continue;
}
if ((args[i] === "--host" || args[i] === "-h") && args[i + 1]) {
host = args[++i];
continue;
}
if ((args[i] === "--output" || args[i] === "-o") && args[i + 1]) {
output = args[++i];
continue;
}
}
return {
server: server || "wss://xahau.network",
host,
output
};
}
const { server, host, output } = parseArgs();
if (!server.startsWith("ws://") && !server.startsWith("wss://")) {
console.error("Error: --server must be a ws:// or wss:// URL");
process.exit(1);
}
const OUT_FILE = output
? path.resolve(output)
: path.join(
process.pkg ? path.dirname(process.execPath) : process.cwd(),
"hosts.json"
);
async function main() {
console.log("Starting Evernode host fetch");
console.log(`Xahau server : ${server}`);
if (host) console.log(`Query host : ${host}`);
evernode.Defaults.set({
governorAddress: "rBvKgF3jSZWdJcwSsmoJspoXLLDVLDp6jg",
rippledServer: server
});
const registryClient = await evernode.HookClientFactory.create(
evernode.HookTypes.registry
);
try {
await registryClient.connect();
console.log("Connected to registry hook.");
console.time("fetch");
if (host) {
let result;
if (/^[0-9A-F]{64}$/i.test(host)) {
result = await registryClient.getHostByUriTokenId(host);
} else {
result = await registryClient.getHostInfo(host);
}
if (!result) {
console.error("Host not found.");
process.exit(1);
}
console.timeEnd("fetch");
process.stdout.write(JSON.stringify(result, null, 2) + "\n");
return;
}
const hosts = await registryClient.getActiveHostsFromLedger();
console.timeEnd("fetch");
fs.mkdirSync(path.dirname(OUT_FILE), { recursive: true });
fs.writeFileSync(OUT_FILE, JSON.stringify(hosts, null, 2));
console.log(`Saved ${hosts.length} hosts ${OUT_FILE}`);
} finally {
if (typeof registryClient.disconnect === "function") {
await registryClient.disconnect();
}
}
console.log("Done. Exiting cleanly.");
process.exit(0);
}
main().catch(err => {
console.error("Fatal error:", err);
process.exit(1);
});
Code: Select all
{
"name": "evernode-js-client",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"evernode-js-client": "^0.6.61",
"express": "^5.1.0",
"ws": "^8.18.3"
}
}
First, write npm i to install the packages needed.
Fetch with node evernode-hosts.js
Optional flags:
--server wss://yourserver --output youroutput
--host rAddress
The --host flag will only fetch that particular host and not the whole list as the other ones do.
Make a bin with these commands:
pkg evernode-hosts.js --targets node18-linux-x64 --output evernode-hosts
pkg evernode-hosts.js --targets node18-win-x64 --output evernode-hosts.exe
pkg evernode-hosts.js --targets node18-macos-x64 --output evernode-macos