UNPKG

homebridge-config-ui-x

Version:

A web based management, configuration and control platform for Homebridge.

62 lines 2.63 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getStartupConfig = getStartupConfig; const node_os_1 = require("node:os"); const node_path_1 = require("node:path"); const node_process_1 = __importDefault(require("node:process")); const fs_extra_1 = require("fs-extra"); const logger_service_1 = require("../logger/logger.service"); async function getStartupConfig() { const logger = new logger_service_1.Logger(); const configPath = node_process_1.default.env.UIX_CONFIG_PATH || (0, node_path_1.resolve)((0, node_os_1.homedir)(), '.homebridge/config.json'); const homebridgeConfig = await (0, fs_extra_1.readJson)(configPath); const ui = Array.isArray(homebridgeConfig.platforms) ? homebridgeConfig.platforms.find((x) => x.platform === 'config') : undefined; const config = {}; const ipv6 = Object.entries((0, node_os_1.networkInterfaces)()).filter(([, addresses]) => { return addresses.find(x => x.family === 'IPv6'); }).length; config.host = ipv6 ? '::' : '0.0.0.0'; if (!ui) { return config; } if (ui.host) { config.host = ui.host; } if (ui.ssl && ((ui.ssl.key && ui.ssl.cert) || ui.ssl.pfx)) { for (const attribute of ['key', 'cert', 'pfx']) { if (ui.ssl[attribute]) { if (!(await ((0, fs_extra_1.stat)(ui.ssl[attribute]))).isFile()) { logger.error(`SSL config error: ui.ssl.${attribute}: ${ui.ssl[attribute]} is not a valid file.`); } } } try { config.httpsOptions = { key: ui.ssl.key ? await (0, fs_extra_1.readFile)(ui.ssl.key) : undefined, cert: ui.ssl.cert ? await (0, fs_extra_1.readFile)(ui.ssl.cert) : undefined, pfx: ui.ssl.pfx ? await (0, fs_extra_1.readFile)(ui.ssl.pfx) : undefined, passphrase: ui.ssl.passphrase, }; } catch (e) { logger.error(`Could not start server with SSL enabled as ${e.message}.`); logger.error(e); } } if (ui.proxyHost) { config.cspWsOverride = `wss://${ui.proxyHost} ws://${ui.proxyHost}`; } if (ui.debug) { config.debug = true; node_process_1.default.env.UIX_DEBUG_LOGGING = '1'; } else { config.debug = false; node_process_1.default.env.UIX_DEBUG_LOGGING = '0'; } return config; } //# sourceMappingURL=config.startup.js.map