Пример #1
0
app.get('/route2/:endPoint', function(req, res){
    
    console.log(req.params.endPoint);
    
   traceroute = new Traceroute(req.params.endPoint);

    
     var data =  {};
     var  apiKey = "1801720c83c41434c7c038029a88e120283d70cd1b90d451070ff195cafeadfc";
    
traceroute.on('hop', function(hop) {
  
    console.log(hop); // { counter: 1, ip: '1.2.3.4', ms: 12 }
    if (hop.ip!=null) {
        var i = hop.counter;
                      data[i] = {};
                       
                     //  console.log(Object.getOwnPropertyNames(hop[i]));
                   
                       data[i].ip = hop.ip;
                       data[i].time = hop.ms;
                      
                      
                       var url = 'http://api.ipinfodb.com/v3/ip-city/?key=' + apiKey + "&ip=" + hop.ip;
                    
                var re = httpsync.get({ url : url});
                    var re = re.end();
                    console.log("shiiiit");
                    // console.log(re.data.toString().split(";"));
                       var returned = re.data.toString().split(";");
                    data[i].country = returned[4];
                    data[i].state = returned[5];
                    data[i].city = returned[6];
                    data[i].zip = returned[7];
                    data[i].lat = returned[8];
                    data[i].lon = returned[9];
                        console.log(data[i]);
                   }
    

});

    
    
    traceroute.on('done', function(err, hops) {
  console.log(hops);
        console.log(err);
        if (hops[0]==null && hops[1]==null) {
         res.send("error");   
        } else {
        res.send(data);
        }
        });

    
    
traceroute.start();
    
    
    
});
Пример #2
0
    run: function (from, to, message, args)
    {
        if (args.length > 1)
        {
            args[0] = args[0].toLowerCase();

            if (args[0] != 'not' && args[0] != 'calc' && args[0] != 'whois')
            {
                if (!DaBot.regexs.domain.exec(args[1]) && !DaBot.regexs.ipaddr.exec(args[1]))
                {
                    DaBot.say(to, 'Invalid Domain Name or IP');
                    return;
                }
            }
            else if (args[0] == 'not')
            {
                if (!DaBot.regexs.netlogic.exec(args[1]))
                {
                    DaBot.say(to, 'Invalid IP / Netmask');
                    return;
                }
            }
            else if (args[0] == 'whois')
            {
                if (!DaBot.regexs.ipaddr.exec(args[1]))
                {
                    DaBot.say(to, 'Invalid IP');
                    return;
                }
            }
            else if (args[0] == 'calc')
            {
                if (DaBot.regexs.network.exec(args[1]) && !DaBot.regexs.netcidr.exec(args[1]))
                {
                    if (!args.hasOwnProperty('2'))
                    {
                        DaBot.say(to, 'Missing Netmask / CIDR');
                        return;
                    }
                    else if (!DaBot.regexs.network.exec(args[2]))
                    {
                        DaBot.say(to, 'Invalid Netmask');
                        return;
                    }
                }
                else if (!DaBot.regexs.netcidr.exec(args[1]))
                {
                    DaBot.say(to, 'Invalid CIDR');
                    return;
                }
            }

            switch (args[0])
            {
                case 'ping':
                case 'pong':
                    DaBot.say(to, 'Pinging: ' + args[1] + '...');

                    var ping = new Ping(args[1]);

                    ping.send(function (err, ms)
                    {
                        if (err)
                        {
                            DaBot.say(to, 'Ping Error: ' + err);
                            return;
                        }

                        if (ms)
                        {
                            DaBot.say(to, args[1] + ' responded in ' + ms + ' ms.');
                        }
                        else
                        {
                            DaBot.say(to, args[1] + ' did not respond.');
                        }
                    });
                    break;
                case 'trace':
                case 'tracert':
                case 'traceroute':
                    DaBot.say(to, 'Trace routing to ' + args[1] + '...');

                    var traceroute = new Traceroute(args[1]);

                    traceroute.on('done', function (err, hops)
                    {
                        var tLines        = [];
                        var hopsProcessed = 0;

                        if (err)
                        {
                            DaBot.say(to, 'Traceroute Error: ' + err);
                            return;
                        }

                        hops.forEach(function (hop)
                        {
                            tLines.push(S(hop.counter)
                                    .padLeft(2).s + ': ' + S((hop.ip) ? hop.ip : '*')
                                    .padRight(17).s + S((hop.ms) ? hop.ms : '*')
                                    .padRight(4).s + ' MS');
                            hopsProcessed++;

                            if (hopsProcessed == hops.length)
                            {
                                DaBot.say(to, tLines);
                            }
                        });
                    });

                    traceroute.start();
                    break;
                case 'port':
                    if (!args[2])
                    {
                        DaBot.say(to, 'You need to specify a port.');
                        return;
                    }

                    portChecker.isOpen(args[2], args[1], function (isOpen, port, host)
                    {
                        DaBot.say(to, 'Port ' + port + ' on ' + host + ' is ' + (isOpen ? 'open' : 'closed'));
                    });

                    break;

                case 'not':
                    DaBot.say(to, ip.not(args[1]));
                    break;

                case 'calc':
                    // The fun shits!
                    if (DaBot.regexs.netcidr.exec(args[1]))
                    {
                        info = ip.cidrSubnet(args[1]);

                        DaBot.say(to, "\x02Network\x02   " + info.networkAddress);
                        DaBot.say(to, "\x02Netmask\x02   " + info.subnetMask);
                        DaBot.say(to, "\x02CIDR\x02      /" + info.subnetMaskLength);
                        DaBot.say(to, "\x02Broadcast\x02 " + info.broadcastAddress);
                        DaBot.say(to, "\x02Hosts\x02     " + info.numHosts);
                        DaBot.say(to, "\x02usable\x02    " + info.firstAddress + " - " + info.lastAddress);

                    }
                    else
                    {
                        info = ip.subnet(args[1], args[2]);

                        DaBot.say(to, "\x02Network\x02   " + info.networkAddress);
                        DaBot.say(to, "\x02Netmask\x02   " + info.subnetMask);
                        DaBot.say(to, "\x02CIDR\x02      /" + info.subnetMaskLength);
                        DaBot.say(to, "\x02Broadcast\x02 " + info.broadcastAddress);
                        DaBot.say(to, "\x02Hosts\x02     " + info.numHosts);
                        DaBot.say(to, "\x02usable\x02    " + info.firstAddress + " - " + info.lastAddress);

                    }
                    break;
                case 'whois':
                    whois.whois(args[1], function (err, data)
                    {
                        DaBot.say(to, args[1] + ' is owned by ' + data.Organization);
                    });

                    break;
            }
        }
        else
        {
            DaBot.sayArray(to, script.help);
        }
    }