56 lines
1.0 KiB
JavaScript
56 lines
1.0 KiB
JavaScript
|
'use strict';
|
||
|
|
||
|
function bindTcpAndRelease(port, cb) {
|
||
|
var server = require('net').createServer();
|
||
|
server.on('error', function (e) {
|
||
|
cb(e);
|
||
|
});
|
||
|
server.listen(port, function () {
|
||
|
server.close();
|
||
|
cb();
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function checkPorts(config, cb) {
|
||
|
var bound = {};
|
||
|
var failed = {};
|
||
|
|
||
|
bindTcpAndRelease(80, function (e) {
|
||
|
if (e) {
|
||
|
failed[80] = e;
|
||
|
//console.log(e.code);
|
||
|
//console.log(e.message);
|
||
|
} else {
|
||
|
bound['80'] = true;
|
||
|
}
|
||
|
|
||
|
bindTcpAndRelease(443, function (e) {
|
||
|
if (e) {
|
||
|
failed[443] = e;
|
||
|
} else {
|
||
|
bound['443'] = true;
|
||
|
}
|
||
|
|
||
|
if (bound['80'] && bound['443']) {
|
||
|
//config.tcp.ports = [ 80, 443 ];
|
||
|
cb(null, bound);
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
console.warn("default ports 80 and 443 are not available, trying 8443");
|
||
|
|
||
|
bindTcpAndRelease(8443, function (e) {
|
||
|
if (e) {
|
||
|
failed[8443] = e;
|
||
|
} else {
|
||
|
bound['8443'] = true;
|
||
|
}
|
||
|
|
||
|
cb(failed, bound);
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
}
|
||
|
|
||
|
module.exports.checkPorts = checkPorts;
|