const fs = require('fs'); let incomingRelays = JSON.parse(fs.readFileSync('./lnproxy_tmplist.json')); let existingRelays = JSON.parse(fs.readFileSync('./frontend/static/lnproxies.json')) let newRelays = []; let torCount = 0; let i2pCount = 0; let clearnetCount = 0; //Merge relay lists. URL is the unique ID used to merge records and only inserts supported. No updates or deletes let existingRelayURLs = existingRelays.map((relay) => relay.url); let newIncomingRelays = incomingRelays.filter((relay)=> existingRelayURLs.indexOf(relay) === -1) for (let url of newIncomingRelays) { let relayType; const LNPROXY_API_PATH = '/spec' const fqdn = url.replace(LNPROXY_API_PATH, ''); if (fqdn.endsWith('.onion')) { relayType = "TOR"; torCount++; } else if (fqdn.endsWith('i2p')) { relayType = "I2P"; i2pCount++; } else { relayType = "Clearnet"; clearnetCount++; } let relayName = `${relayType}${relayType === "TOR" ? torCount : ''}${relayType === "I2P" ? i2pCount : ''}${relayType === "Clearnet" ? clearnetCount : ''} ${url.split('/')[2].substring(0,6)}` newRelays.push({ name: relayName, url: url, relayType: relayType, network: "mainnet" //TODO: testnet }); } if (newRelays.length > 0) { existingRelays.push(...newRelays); fs.writeFileSync('./frontend/static/lnproxies.json', JSON.stringify(existingRelays, null, 2)); }