isopen
Version:
isOpen can check a range of ports (TCP) for 'open' or 'closed' status with label name
54 lines (44 loc) • 1.42 kB
JavaScript
const net = require('net')
const Socket = net.Socket
const portsNames = require("./ports.json");
var check = function (host,port,callback){
let socket = new Socket()
let status = null
let error = null
let connectionRefused = false
socket.setTimeout(500)
socket.on('timeout', function () {
status = false
error = new Error('Timeout 500ms')
socket.destroy()
})
socket.on('connect', function () {
status = true
socket.destroy()
})
socket.on('error', function (exception) {
if (exception.code !== 'ECONNREFUSED') {
error = exception
} else {
connectionRefused = true
}
status = false
})
socket.on('close', function (exception) {
if (exception && !connectionRefused) { error = error || exception } else { error = null }
let r = {};
let label = false;
if (portsNames.ports[port]){
if (portsNames.ports[port][0])
label = portsNames.ports[port][0].description;
if (portsNames.ports[port].description && !label)
label = portsNames.ports[port].description;
}
if (!label)
label = 'unknow';
r = { port: port,isOpen: status, label: label};
callback(error,r);
})
socket.connect(port, host);
}
module.exports = check;