navy
Version:
Quick and powerful development environments using Docker and Docker Compose
92 lines (68 loc) • 2.44 kB
JavaScript
;
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;