UNPKG

@anansi/webpack-config

Version:
77 lines (73 loc) 7.9 kB
"use strict"; exports.__esModule = true; exports.default = getHttpsConfig; /** * Copyright (c) 2015-present, Facebook, Inc. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ const crypto = require('crypto'); const fs = require('fs'); const path = require('path'); const chalk = require('react-dev-utils/chalk'); // Ensure the certificate and key provided are valid and if not // throw an easy to debug error function validateKeyAndCerts({ cert, key, keyFile, crtFile }) { let encrypted; try { // publicEncrypt will throw an error with an invalid cert encrypted = crypto.publicEncrypt(cert, Buffer.from('test')); } catch (err) { throw new Error(`The certificate "${chalk.yellow(crtFile)}" is invalid.\n${err.message}`); } try { // privateDecrypt will throw an error with an invalid key crypto.privateDecrypt(key, encrypted); } catch (err) { throw new Error(`The certificate key "${chalk.yellow(keyFile)}" is invalid.\n${err.message}`); } } // Read file and throw an error if it doesn't exist function readEnvFile(file, type) { if (!fs.existsSync(file)) { throw new Error(`You specified ${chalk.cyan(type)} in your env, but the file "${chalk.yellow(file)}" can't be found.`); } return fs.readFileSync(file); } // Get the https config // Return cert files if provided in env, otherwise just true or false function getHttpsConfig(rootPath) { const { SSL_CRT_FILE, SSL_KEY_FILE, HTTPS } = process.env; const isHttps = HTTPS === 'true'; if (isHttps && SSL_CRT_FILE && SSL_KEY_FILE) { const crtFile = path.resolve(rootPath, SSL_CRT_FILE); const keyFile = path.resolve(rootPath, SSL_KEY_FILE); const config = { cert: readEnvFile(crtFile, 'SSL_CRT_FILE'), key: readEnvFile(keyFile, 'SSL_KEY_FILE') }; validateKeyAndCerts({ ...config, keyFile, crtFile }); return { type: 'spdy', options: config }; } return isHttps ? { type: 'spdy' } : 'http'; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcnlwdG8iLCJyZXF1aXJlIiwiZnMiLCJwYXRoIiwiY2hhbGsiLCJ2YWxpZGF0ZUtleUFuZENlcnRzIiwiY2VydCIsImtleSIsImtleUZpbGUiLCJjcnRGaWxlIiwiZW5jcnlwdGVkIiwicHVibGljRW5jcnlwdCIsIkJ1ZmZlciIsImZyb20iLCJlcnIiLCJFcnJvciIsInllbGxvdyIsIm1lc3NhZ2UiLCJwcml2YXRlRGVjcnlwdCIsInJlYWRFbnZGaWxlIiwiZmlsZSIsInR5cGUiLCJleGlzdHNTeW5jIiwiY3lhbiIsInJlYWRGaWxlU3luYyIsImdldEh0dHBzQ29uZmlnIiwicm9vdFBhdGgiLCJTU0xfQ1JUX0ZJTEUiLCJTU0xfS0VZX0ZJTEUiLCJIVFRQUyIsInByb2Nlc3MiLCJlbnYiLCJpc0h0dHBzIiwicmVzb2x2ZSIsImNvbmZpZyIsIm9wdGlvbnMiXSwic291cmNlcyI6WyIuLi9zcmMvZ2V0SHR0cHNDb25maWcuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTUtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuY29uc3QgY3J5cHRvID0gcmVxdWlyZSgnY3J5cHRvJyk7XG5jb25zdCBmcyA9IHJlcXVpcmUoJ2ZzJyk7XG5jb25zdCBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xuY29uc3QgY2hhbGsgPSByZXF1aXJlKCdyZWFjdC1kZXYtdXRpbHMvY2hhbGsnKTtcblxuLy8gRW5zdXJlIHRoZSBjZXJ0aWZpY2F0ZSBhbmQga2V5IHByb3ZpZGVkIGFyZSB2YWxpZCBhbmQgaWYgbm90XG4vLyB0aHJvdyBhbiBlYXN5IHRvIGRlYnVnIGVycm9yXG5mdW5jdGlvbiB2YWxpZGF0ZUtleUFuZENlcnRzKHsgY2VydCwga2V5LCBrZXlGaWxlLCBjcnRGaWxlIH0pIHtcbiAgbGV0IGVuY3J5cHRlZDtcbiAgdHJ5IHtcbiAgICAvLyBwdWJsaWNFbmNyeXB0IHdpbGwgdGhyb3cgYW4gZXJyb3Igd2l0aCBhbiBpbnZhbGlkIGNlcnRcbiAgICBlbmNyeXB0ZWQgPSBjcnlwdG8ucHVibGljRW5jcnlwdChjZXJ0LCBCdWZmZXIuZnJvbSgndGVzdCcpKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYFRoZSBjZXJ0aWZpY2F0ZSBcIiR7Y2hhbGsueWVsbG93KGNydEZpbGUpfVwiIGlzIGludmFsaWQuXFxuJHtlcnIubWVzc2FnZX1gLFxuICAgICk7XG4gIH1cblxuICB0cnkge1xuICAgIC8vIHByaXZhdGVEZWNyeXB0IHdpbGwgdGhyb3cgYW4gZXJyb3Igd2l0aCBhbiBpbnZhbGlkIGtleVxuICAgIGNyeXB0by5wcml2YXRlRGVjcnlwdChrZXksIGVuY3J5cHRlZCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBUaGUgY2VydGlmaWNhdGUga2V5IFwiJHtjaGFsay55ZWxsb3coa2V5RmlsZSl9XCIgaXMgaW52YWxpZC5cXG4ke1xuICAgICAgICBlcnIubWVzc2FnZVxuICAgICAgfWAsXG4gICAgKTtcbiAgfVxufVxuXG4vLyBSZWFkIGZpbGUgYW5kIHRocm93IGFuIGVycm9yIGlmIGl0IGRvZXNuJ3QgZXhpc3RcbmZ1bmN0aW9uIHJlYWRFbnZGaWxlKGZpbGUsIHR5cGUpIHtcbiAgaWYgKCFmcy5leGlzdHNTeW5jKGZpbGUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYFlvdSBzcGVjaWZpZWQgJHtjaGFsay5jeWFuKFxuICAgICAgICB0eXBlLFxuICAgICAgKX0gaW4geW91ciBlbnYsIGJ1dCB0aGUgZmlsZSBcIiR7Y2hhbGsueWVsbG93KGZpbGUpfVwiIGNhbid0IGJlIGZvdW5kLmAsXG4gICAgKTtcbiAgfVxuICByZXR1cm4gZnMucmVhZEZpbGVTeW5jKGZpbGUpO1xufVxuXG4vLyBHZXQgdGhlIGh0dHBzIGNvbmZpZ1xuLy8gUmV0dXJuIGNlcnQgZmlsZXMgaWYgcHJvdmlkZWQgaW4gZW52LCBvdGhlcndpc2UganVzdCB0cnVlIG9yIGZhbHNlXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRIdHRwc0NvbmZpZyhyb290UGF0aCkge1xuICBjb25zdCB7IFNTTF9DUlRfRklMRSwgU1NMX0tFWV9GSUxFLCBIVFRQUyB9ID0gcHJvY2Vzcy5lbnY7XG4gIGNvbnN0IGlzSHR0cHMgPSBIVFRQUyA9PT0gJ3RydWUnO1xuXG4gIGlmIChpc0h0dHBzICYmIFNTTF9DUlRfRklMRSAmJiBTU0xfS0VZX0ZJTEUpIHtcbiAgICBjb25zdCBjcnRGaWxlID0gcGF0aC5yZXNvbHZlKHJvb3RQYXRoLCBTU0xfQ1JUX0ZJTEUpO1xuICAgIGNvbnN0IGtleUZpbGUgPSBwYXRoLnJlc29sdmUocm9vdFBhdGgsIFNTTF9LRVlfRklMRSk7XG4gICAgY29uc3QgY29uZmlnID0ge1xuICAgICAgY2VydDogcmVhZEVudkZpbGUoY3J0RmlsZSwgJ1NTTF9DUlRfRklMRScpLFxuICAgICAga2V5OiByZWFkRW52RmlsZShrZXlGaWxlLCAnU1NMX0tFWV9GSUxFJyksXG4gICAgfTtcblxuICAgIHZhbGlkYXRlS2V5QW5kQ2VydHMoeyAuLi5jb25maWcsIGtleUZpbGUsIGNydEZpbGUgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdzcGR5JyxcbiAgICAgIG9wdGlvbnM6IGNvbmZpZyxcbiAgICB9O1xuICB9XG4gIHJldHVybiBpc0h0dHBzID8geyB0eXBlOiAnc3BkeScgfSA6ICdodHRwJztcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU1BLE1BQU0sR0FBR0MsT0FBTyxDQUFDLFFBQVEsQ0FBQztBQUNoQyxNQUFNQyxFQUFFLEdBQUdELE9BQU8s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