38 lines
982 B
JavaScript
38 lines
982 B
JavaScript
|
'use strict';
|
||
|
|
||
|
exports = module.exports = tcpBomb;
|
||
|
|
||
|
var async = require('async'),
|
||
|
net = require('net');
|
||
|
|
||
|
function tcpBomb(ip, port, times, timeout, callback) {
|
||
|
async.times(times, function (n, done) {
|
||
|
var client = new net.Socket();
|
||
|
client.setTimeout(timeout);
|
||
|
|
||
|
client.connect(port, ip, function() {
|
||
|
client.destroy();
|
||
|
done(null, 'Connected');
|
||
|
});
|
||
|
|
||
|
client.on('timeout', function () {
|
||
|
client.destroy();
|
||
|
done(null, 'Timeout');
|
||
|
});
|
||
|
|
||
|
client.on('error', function (error) {
|
||
|
done(null, 'Error: ' + error.message);
|
||
|
});
|
||
|
}, function (error, result) {
|
||
|
var x = result.reduce(function (ac, val) {
|
||
|
if (val === 'Connected') ++ac.connected;
|
||
|
else if (val === 'Timeout') ++ac.timeout;
|
||
|
else ++ac.error;
|
||
|
|
||
|
return ac;
|
||
|
}, { connected: 0, error: 0, timeout: 0 });
|
||
|
return callback(null, x);
|
||
|
});
|
||
|
}
|
||
|
|