mirror of https://github.com/rancher/ui.git
185 lines
5.0 KiB
JavaScript
185 lines
5.0 KiB
JavaScript
/* eslint-env node */
|
|
var pkg = require('../package.json');
|
|
var fs = require('fs');
|
|
var YAML = require('yamljs');
|
|
|
|
// host can be an ip "1.2.3.4" -> https://1.2.3.4:30443
|
|
// or a URL+port
|
|
function normalizeHost(host,defaultPort) {
|
|
if ( host.indexOf('http') === 0 ) {
|
|
return host;
|
|
}
|
|
|
|
if ( host.indexOf(':') === -1 ) {
|
|
host = 'https://' + host + (defaultPort ? ':'+defaultPort : '');
|
|
} else {
|
|
host = 'https://' + host;
|
|
}
|
|
|
|
return host;
|
|
}
|
|
|
|
function readLocales(environment) {
|
|
/* Parse the translations from the translations folder*/
|
|
/* ember intl getLocalesByTranslations does not work if intl is not managing them (bundled) */
|
|
/* This needs a little work to read the yaml files for the langugae name prop*/
|
|
var files = fs.readdirSync('./translations');
|
|
var translationsOut = {};
|
|
files.forEach(function(filename) {
|
|
if ( !filename.match(/\.ya?ml$/) && !filename.match(/\.json$/) ) {
|
|
// Ignore non-YAML files
|
|
return;
|
|
}
|
|
|
|
if ( environment === 'production' && filename === 'none.yaml' ) {
|
|
// Don't show the "None" language in prod
|
|
return;
|
|
}
|
|
var ymlFile = YAML.load('./translations/' + filename);
|
|
var label = ymlFile.languageName;
|
|
var locale = filename.split('.')[0];
|
|
translationsOut[locale] = label;
|
|
});
|
|
return translationsOut;
|
|
}
|
|
|
|
module.exports = function(environment) {
|
|
var ENV = {
|
|
modulePrefix: 'ui',
|
|
environment: environment,
|
|
exportApplicationGlobal: true,
|
|
locationType: 'auto',
|
|
EmberENV: {
|
|
FEATURES: {
|
|
// Here you can enable experimental features on an ember canary build
|
|
// e.g. EMBER_NATIVE_DECORATOR_SUPPORT: true
|
|
},
|
|
EXTEND_PROTOTYPES: {
|
|
// Prevent Ember Data from overriding Date.parse.
|
|
Date: false,
|
|
},
|
|
},
|
|
|
|
|
|
minifyCSS: {
|
|
enabled: false
|
|
},
|
|
|
|
minifyJS: {
|
|
enabled: false
|
|
},
|
|
|
|
contentSecurityPolicy: {
|
|
// Allow the occasional <elem style="blah">...
|
|
'style-src': "'self' releases.rancher.com localhost:8000 'unsafe-inline'",
|
|
'font-src': "'self' releases.rancher.com",
|
|
'script-src': "'self' releases.rancher.com localhost:8000",
|
|
'object-src': "'self' releases.rancher.com",
|
|
'img-src': "'self' releases.rancher.com avatars.githubusercontent.com gravatar.com localhost:8000 data:",
|
|
'frame-src': "'self' releases.rancher.com",
|
|
|
|
// Allow connect to anywhere, for console and event stream socket
|
|
'connect-src': '*',
|
|
'unsafe-eval': "'self' releases.rancher.com"
|
|
},
|
|
|
|
APP: {
|
|
// Here you can pass flags/options to your application instance
|
|
// when it is created
|
|
version: pkg.version,
|
|
appName: 'Rancher',
|
|
environment: environment,
|
|
baseAssets: '/',
|
|
|
|
clusterToken: '%CLUSTERID%',
|
|
projectToken: '%PROJECTID%',
|
|
|
|
apiServer: 'https://localhost:30443',
|
|
apiEndpoint: '/v3',
|
|
publicApiEndpoint: '/v3-public',
|
|
clusterEndpoint: '/v3/clusters/%CLUSTERID%',
|
|
projectEndpoint: '/v3/projects/%PROJECTID%',
|
|
proxyEndpoint: '/meta/proxy',
|
|
globalSubscribeEndpoint: '/v3/subscribe',
|
|
clusterSubscribeEndpoint: '/v3/clusters/%CLUSTERID%/subscribe',
|
|
projectSubscribeEndpoint: '/v3/projects/%PROJECTID%/subscribe',
|
|
magicEndpoint: '/r',
|
|
|
|
telemetryEndpoint: '/v1-telemetry',
|
|
kubernetesBase: '/k8s',
|
|
kubectlEndpoint: '/r/projects/%PROJECTID%/kubectld:8091/v1-kubectl',
|
|
kubernetesDashboard: '/k8s/clusters/%CLUSTERID%/api/v1/namespaces/kube-system/services/kubernetes-dashboard/proxy/',
|
|
needIntlPolyfill: false,
|
|
|
|
locales: readLocales(environment),
|
|
},
|
|
};
|
|
|
|
if (environment === 'development') {
|
|
// ENV.APP.LOG_RESOLVER = true;
|
|
// ENV.APP.LOG_ACTIVE_GENERATION = true;
|
|
ENV.APP.LOG_TRANSITIONS = true;
|
|
ENV.APP.LOG_TRANSITIONS_INTERNAL = true;
|
|
ENV.APP.LOG_VIEW_LOOKUPS = true;
|
|
}
|
|
|
|
if (environment === 'test') {
|
|
// Testem prefers this...
|
|
ENV.locationType = 'none';
|
|
|
|
// keep test console output quieter
|
|
ENV.APP.LOG_ACTIVE_GENERATION = false;
|
|
ENV.APP.LOG_VIEW_LOOKUPS = false;
|
|
|
|
ENV.APP.rootElement = '#ember-testing';
|
|
ENV.APP.autoboot = false;
|
|
}
|
|
|
|
if (process.env.FINGERPRINT) {
|
|
ENV.APP.fingerprint = process.env.FINGERPRINT;
|
|
}
|
|
|
|
if (process.env.BASE_ASSETS) {
|
|
ENV.APP.baseAssets = process.env.BASE_ASSETS;
|
|
}
|
|
|
|
// Override the Rancher server/endpoint with environment var
|
|
var server = process.env.RANCHER;
|
|
if ( server )
|
|
{
|
|
ENV.APP.apiServer = normalizeHost(server,443);
|
|
}
|
|
else if (environment === 'production')
|
|
{
|
|
ENV.APP.apiServer = '';
|
|
}
|
|
|
|
var pl = process.env.PL;
|
|
if ( pl )
|
|
{
|
|
ENV.APP.pl = pl;
|
|
}
|
|
else
|
|
{
|
|
ENV.APP.pl = 'rancher';
|
|
}
|
|
|
|
return ENV;
|
|
};
|
|
|
|
// host can be an ip "1.2.3.4" -> https://1.2.3.4:30443
|
|
// or a URL+port
|
|
function normalizeHost(host, defaultPort) {
|
|
if ( host.indexOf('http') === 0 ) {
|
|
return host;
|
|
}
|
|
|
|
if ( host.indexOf(':') >= 0 || defaultPort === 443 ) {
|
|
host = `https://${ host }`;
|
|
} else {
|
|
host = `https://${ host }${ defaultPort ? `:${ defaultPort }` : '' }`;
|
|
}
|
|
|
|
return host;
|
|
}
|