UNPKG

navy

Version:

Quick and powerful development environments using Docker and Docker Compose

92 lines (68 loc) 2.44 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = _default; var _chalk = _interopRequireDefault(require("chalk")); var _errors = require("../errors"); var _navy = require("../navy"); var _config = require("../config"); var _httpProxy = require("../http-proxy"); var _https = require("../util/https"); var _fs = _interopRequireDefault(require("fs")); async function _default(services, opts) { const tlsRootCaDir = (0, _config.getConfig)().tlsRootCaDir || _config.DEFAULT_TLS_ROOT_CA_DIR; const configDir = (0, _config.getConfigDir)(); if (opts.disable) { await (0, _https.removeCert)(opts); await (0, _httpProxy.reconfigureHTTPProxy)({ restart: true }); console.log(); console.log(_chalk.default.green(`✅ HTTPS for service ${opts.disable} is now disabled`)); console.log(); return; } if (!services || services.length === 0) { if (!_fs.default.existsSync(`${configDir}/tls-certs`)) return; const files = _fs.default.readdirSync(`${configDir}/tls-certs`); const urls = files.filter(file => file.endsWith('.crt')).map(crt => { return `https://${crt.replace('.crt', '')}`; }); for (const url of urls) { console.log(`${url}`); } return; } if (!_fs.default.existsSync(`${tlsRootCaDir}/ca.crt`) || !_fs.default.existsSync(`${tlsRootCaDir}/ca.key`)) { await (0, _https.generateRootCa)(); } const navy = await (0, _navy.getNavy)(opts.navy); await navy.ensurePluginsLoaded(); const availableServices = await navy.getAvailableServiceNames(); const httpsReadyServices = []; for (const service of services) { if (!availableServices.includes(service)) { console.log(`❌ ${service} not found, skipping`); continue; } const serviceUrl = await navy.url(service); try { await (0, _https.createCert)({ serviceUrl }); httpsReadyServices.push(service); } catch (error) { console.log(error); throw new _errors.NavyError(`Could not generate TLS cert for ${service}`); } } await (0, _httpProxy.reconfigureHTTPProxy)({ restart: true }); console.log(); console.log(_chalk.default.green(`✅ Service(s) ${httpsReadyServices.join(', ')} now accessible via HTTPS🔒`)); console.log(); } module.exports = exports.default;