agneta-platform
Version:
Agneta Platform - Integrate and customize business applications
123 lines (94 loc) • 3.07 kB
JavaScript
/* Copyright 2017 Agneta Network Applications, LLC.
*
* Source file: main/server/index.js
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
//--------------------------------------------
// Extend lodash
var _ = require('lodash');
_.mixin(require('lodash-deep'));
//--------------------------------------------
const url = require('url');
const Promise = require('bluebird');
const path = require('path');
const paths = require('../paths');
const configstore = require('configstore');
//---------------------------------------------------
// Look for server certificates
var options = {};
var protocol = 'http';
var port = 443;
module.exports = Promise.resolve()
.then(function() {
require('./version')();
})
.then(function() {
var secrets = require(
path.join(paths.core.services,'lib/secrets')
)({});
var serverKey = secrets.get('keys.server.key');
var serverCert = secrets.get('keys.server.cert');
if(!serverKey || !serverCert){
return;
}
var protocolOptions = {
key: serverKey,
cert: serverCert,
ca: secrets.get('keys.server.ca'),
requestCert: true,
rejectUnauthorized: false
};
//throw 'test';
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
options.protocolOptions = protocolOptions;
protocol = 'https';
})
.then(function() {
//---------------------------------------------------
// Set environment variables
var config = new configstore('agneta');
process.env.SERVER_NAME = process.env.SERVER_NAME || config.get('server.name');
process.env.HOST_NAME = process.env.HOST_NAME || 'localhost';
process.env.PORT = process.env.PORT || port;
process.env.PORT_HTTP = process.env.PORT_HTTP || 80;
process.env.MODE = process.env.MODE || 'portal';
if(!process.env.ENDPOINT){
let options = {
protocol: protocol,
hostname: process.env.HOST_NAME
};
if(process.env.HOST_NAME=='localhost'){
options.port = process.env.PORT;
}
process.env.ENDPOINT = url.format(options);
}
process.env.NODE_ENV = process.env.NODE_ENV || 'development';
process.env.PROTOCOL = protocol;
})
.then(function() {
var server;
console.log('MODE',process.env.MODE);
switch (process.env.MODE) {
case 'sftp':
server = require('./sftp');
break;
default:
server = require('./cluster');
break;
}
return server(options);
})
.catch(function(err) {
console.error(err);
});