- Support single-server testing and a local dev server (like Next) that is on a different port from the shields server - Refactor config schema With this change, the suggestions work locally in #1273.
55 lines
1.3 KiB
JavaScript
55 lines
1.3 KiB
JavaScript
'use strict';
|
|
|
|
// This file should only be required by server.js. To simplify testing, config
|
|
// should be injected into other components needing it.
|
|
|
|
const url = require('url');
|
|
const envFlag = require('node-env-flag');
|
|
|
|
function envArray(envVar, defaultValue, delimiter) {
|
|
delimiter = delimiter || ',';
|
|
if (envVar) {
|
|
return envVar.split(delimiter);
|
|
} else {
|
|
return defaultValue;
|
|
}
|
|
}
|
|
|
|
const isSecure = envFlag(process.env.HTTPS, false);
|
|
const port = +process.env.PORT || +process.argv[2] || (isSecure ? 443 : 80);
|
|
const address = process.env.BIND_ADDRESS || process.argv[3] || '::';
|
|
const baseUri = url.format({
|
|
protocol: isSecure ? 'https' : 'http',
|
|
hostname: address,
|
|
port,
|
|
pathname: '/',
|
|
});
|
|
|
|
// The base URI provides a suitable value for development. Production should
|
|
// configure this.
|
|
const allowedOrigin = envArray(process.env.ALLOWED_ORIGIN, baseUri.replace(/\/$/, ''), ',');
|
|
|
|
const config = {
|
|
bind: {
|
|
port,
|
|
address,
|
|
},
|
|
ssl: {
|
|
isSecure,
|
|
key: process.env.HTTPS_KEY,
|
|
cert: process.env.HTTPS_CRT,
|
|
},
|
|
baseUri,
|
|
redirectUri: process.env.REDIRECT_URI || process.env.INFOSITE,
|
|
cors: {
|
|
allowedOrigin,
|
|
},
|
|
services: {
|
|
github: {
|
|
baseUri: process.env.GITHUB_URL || 'https://api.github.com',
|
|
},
|
|
},
|
|
};
|
|
|
|
module.exports = config;
|