Skip to content

Instantly share code, notes, and snippets.

@ktwrd
Created May 17, 2021 11:57
Show Gist options
  • Save ktwrd/cdfe12b83476c1b69af681f6656102ca to your computer and use it in GitHub Desktop.
Save ktwrd/cdfe12b83476c1b69af681f6656102ca to your computer and use it in GitHub Desktop.
Simple TraceRoute Thing made in Node.JS
const tr = require("nodejs-traceroute");
var HopLog = [];
const EventParse = (objInputTraceData) =>
{
if (objInputTraceData.ip == undefined) return;
HopLog.push(objInputTraceData);
if (objInputTraceData.ip == 'Request timed out.' || objInputTraceData.rtt1 == '*')
{
console.log(`${objInputTraceData.hop}: Trace Timed Out!`);
} else {
let AvgPing = parseInt(objInputTraceData.rtt1)+parseInt(objInputTraceData.rtt2)+parseInt(objInputTraceData.rtt3);
AvgPing = parseFloat(AvgPing/3).toFixed(2);
console.log(`${objInputTraceData.hop}: ${AvgPing}ms | ${HopLog[HopLog.length - 2] == undefined ? '127.0.0.1' : HopLog[HopLog.length - 2].ip || '127.0.0.1'} -> ${objInputTraceData.ip}`);
}
}
const tracer = new tr();
var DestinationAddress = process.argv[2] || 'dariox.club';
tracer.on('destination',d => DestinationAddress);
tracer.on('hop',EventParse);
tracer.on('close',()=>{
//console.log(HopLog);
if (process.argv[3] == 'true')
{
require("fs").writeFileSync(`${Date.now()}-${DestinationAddress}.json`,JSON.stringify(HopLog,null,'\t'));
}
});
tracer.trace(DestinationAddress);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment