From c6ae969a82350028104381fcc47a9cbe314b78d3 Mon Sep 17 00:00:00 2001 From: Julien Fontanet Date: Fri, 18 May 2018 15:05:49 +0200 Subject: [PATCH] fix(xo-server/https): ask for passphrase (#2963) Fixes #2962 --- packages/xo-server/src/index.js | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/packages/xo-server/src/index.js b/packages/xo-server/src/index.js index 1b0f0dfbb..e95419098 100644 --- a/packages/xo-server/src/index.js +++ b/packages/xo-server/src/index.js @@ -7,6 +7,7 @@ import has from 'lodash/has' import helmet from 'helmet' import includes from 'lodash/includes' import proxyConsole from './proxy-console' +import pw from 'pw' import serveStatic from 'serve-static' import startsWith from 'lodash/startsWith' import stoppable from 'stoppable' @@ -227,12 +228,12 @@ async function registerPlugin (pluginPath, pluginName) { // instance. const instance = isFunction(factory) ? factory({ - xo: this, - getDataDir: () => { - const dir = `${this._config.datadir}/${pluginName}` - return ensureDir(dir).then(() => dir) - }, - }) + xo: this, + getDataDir: () => { + const dir = `${this._config.datadir}/${pluginName}` + return ensureDir(dir).then(() => dir) + }, + }) : factory await this.registerPlugin( @@ -311,6 +312,13 @@ async function makeWebServerListen ( ) { if (cert && key) { ;[opts.cert, opts.key] = await Promise.all([readFile(cert), readFile(key)]) + if (opts.key.includes('ENCRYPTED')) { + opts.passphrase = await new Promise(resolve => { + console.log('Encrypted key %s', key) + process.stdout.write(`Enter pass phrase: `) + pw(resolve) + }) + } } try { const niceAddress = await webServer.listen(opts)