function address(ip) { if (Array.from(ip).includes(':')) { return new Address6(ip) } else { i = new Address4(ip) const subnetMask = 96 + i.subnetMask ip = `::ffff:${i.toGroup6()}/${subnetMask}` return new Address6(ip) } }
function processLine(line) { var fields = CSVtoArray(line); if (!fields || fields.length < 6) { console.log("weird line: %s::", line); return; } lines++; var sip; var eip; var rngip; var cc = countryLookup[fields[1]]; var b; var bsz; var i; if(cc){ if (fields[0].match(/:/)) { // IPv6 bsz = 34; rngip = new Address6(fields[0]); sip = utils.aton6(rngip.startAddress().correctForm()); eip = utils.aton6(rngip.endAddress().correctForm()); b = Buffer.alloc(bsz); for (i = 0; i < sip.length; i++) { b.writeUInt32BE(sip[i], i * 4); } for (i = 0; i < eip.length; i++) { b.writeUInt32BE(eip[i], 16 + (i * 4)); } } else { // IPv4 bsz = 10; rngip = new Address4(fields[0]); sip = parseInt(rngip.startAddress().bigInteger(),10); eip = parseInt(rngip.endAddress().bigInteger(),10); b = Buffer.alloc(bsz); b.fill(0); b.writeUInt32BE(sip, 0); b.writeUInt32BE(eip, 4); } b.write(cc, bsz - 2); fs.writeSync(datFile, b, 0, bsz, null); if(Date.now() - tstart > 5000) { tstart = Date.now(); process.stdout.write('\nStill working (' + lines + ') ...'); } } }
let defaultPort = "8007"; let defaultHost = "127.0.0.1"; let strHost = defaultHost; let strPort = defaultPort; if( !(totalArguments >= requiredArguments) ) { console.log("[usage] node trueno-graph.js action graph [host] [port]"); process.exit(0); } let strAction = process.argv[2].toString(); let destinationGraph = process.argv[3].toString(); if( totalArguments >= requiredArguments + 1){ let tmpAddress = new ipAddress(process.argv[4].toString()); /* If IP address is valid override default address */ if(tmpAddress.isValid()){ strHost = process.argv[4].toString(); } else{ console.log("[Warning] --> Invalid IP address, default [127.0.0.1] used instead"); } } if( totalArguments == requiredArguments + 2){ strPort = process.argv[5].toString(); } /* Trueno's WebSockets connection */ let ws = new Socket("ws://" + strHost + ":" + strPort);
function processLine(line) { if (line.match(/^Copyright/) || !line.match(/\d/)) { return; } var fields = CSVtoArray(line); if (!fields) { console.log("weird line: %s::", line); return; } var sip; var eip; var rngip; var locId; var b; var bsz; var lat; var lon; var area; var i; lines++; if (fields[0].match(/:/)) { // IPv6 var offset = 0; bsz = 48; rngip = new Address6(fields[0]); sip = utils.aton6(rngip.startAddress().correctForm()); eip = utils.aton6(rngip.endAddress().correctForm()); locId = parseInt(fields[1], 10); locId = cityLookup[locId]; b = Buffer.alloc(bsz); b.fill(0); for (i = 0; i < sip.length; i++) { b.writeUInt32BE(sip[i], offset); offset += 4; } for (i = 0; i < eip.length; i++) { b.writeUInt32BE(eip[i], offset); offset += 4; } b.writeUInt32BE(locId>>>0, 32); lat = Math.round(parseFloat(fields[7]) * 10000); lon = Math.round(parseFloat(fields[8]) * 10000); area = parseInt(fields[9], 10); b.writeInt32BE(lat,36); b.writeInt32BE(lon,40); b.writeInt32BE(area,44); } else { // IPv4 bsz = 24; rngip = new Address4(fields[0]); sip = parseInt(rngip.startAddress().bigInteger(),10); eip = parseInt(rngip.endAddress().bigInteger(),10); locId = parseInt(fields[1], 10); locId = cityLookup[locId]; b = Buffer.alloc(bsz); b.fill(0); b.writeUInt32BE(sip>>>0, 0); b.writeUInt32BE(eip>>>0, 4); b.writeUInt32BE(locId>>>0, 8); lat = Math.round(parseFloat(fields[7]) * 10000); lon = Math.round(parseFloat(fields[8]) * 10000); area = parseInt(fields[9], 10); b.writeInt32BE(lat,12); b.writeInt32BE(lon,16); b.writeInt32BE(area,20); } fs.writeSync(datFile, b, 0, b.length, null); if(Date.now() - tstart > 5000) { tstart = Date.now(); process.stdout.write('\nStill working (' + lines + ') ...'); } }