UNPKG

mira-app-server

Version:

Mira Server - standalone server application using mira-app-core

44 lines 1.53 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.initializeServerIPv4 = initializeServerIPv4; const dgram_1 = require("dgram"); const net_1 = require("net"); const os_1 = require("os"); const ENV_NAME = 'MIRA_SERVER_IPV4'; function getFallbackIPv4() { return Object.values((0, os_1.networkInterfaces)()) .flat() .find(address => address?.family === 'IPv4' && !address.internal)?.address || '127.0.0.1'; } function getDefaultRouteIPv4() { return new Promise((resolve, reject) => { const socket = (0, dgram_1.createSocket)('udp4'); const timer = setTimeout(() => { socket.close(); reject(new Error('IPv4 detection timed out')); }, 1000); socket.once('error', error => { clearTimeout(timer); socket.close(); reject(error); }); socket.connect(53, '8.8.8.8', () => { const address = socket.address().address; clearTimeout(timer); socket.close(); resolve(address); }); }); } async function initializeServerIPv4() { const configured = process.env[ENV_NAME]; if (configured) { if (!(0, net_1.isIPv4)(configured)) throw new Error(`${ENV_NAME} must be a valid IPv4 address`); return configured; } const detected = await getDefaultRouteIPv4().catch(getFallbackIPv4); process.env[ENV_NAME] = detected; return detected; } //# sourceMappingURL=serverIPv4.js.map