| | |
| | function getLocalHosts() { |
| | const os = require("os"); |
| | const interfaces = os.networkInterfaces(); |
| | const results = new Set([undefined, "0.0.0.0"]); |
| |
|
| | for (const _interface of Object.values(interfaces)) { |
| | for (const config of _interface) { |
| | results.add(config.address); |
| | } |
| | } |
| |
|
| | return Array.from(results); |
| | } |
| |
|
| | function checkPort(options = {}) { |
| | const net = require("net"); |
| | return new Promise((resolve, reject) => { |
| | const server = net.createServer(); |
| | server.unref(); |
| | server.on("error", reject); |
| |
|
| | server.listen(options, () => { |
| | server.close(() => { |
| | resolve(true); |
| | }); |
| | }); |
| | }); |
| | } |
| |
|
| | async function isPortInUse(port, host) { |
| | try { |
| | await checkPort({ port, host }); |
| | return true; |
| | } catch (error) { |
| | if (!["EADDRNOTAVAIL", "EINVAL"].includes(error.code)) { |
| | return false; |
| | } |
| | } |
| | return false; |
| | } |
| |
|
| | module.exports = { |
| | isPortInUse, |
| | getLocalHosts, |
| | }; |
| |
|