fog-controller
Version:
Fog Controller project @ iotracks.com
343 lines (260 loc) • 20.4 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _bodyParser = require('body-parser');
var _bodyParser2 = _interopRequireDefault(_bodyParser);
var _cookieParser = require('cookie-parser');
var _cookieParser2 = _interopRequireDefault(_cookieParser);
var _fs = require('fs');
var _fs2 = _interopRequireDefault(_fs);
var _https = require('https');
var _https2 = _interopRequireDefault(_https);
var _config = require('./config.json');
var _config2 = _interopRequireDefault(_config);
var _configUtil = require('./server/utils/configUtil');
var _configUtil2 = _interopRequireDefault(_configUtil);
var _constants = require('./server/constants.js');
var _constants2 = _interopRequireDefault(_constants);
var _baseController = require('./server/controllers/baseController');
var _baseController2 = _interopRequireDefault(_baseController);
var _elementInstanceController = require('./server/controllers/api/elementInstanceController');
var _elementInstanceController2 = _interopRequireDefault(_elementInstanceController);
var _elementController = require('./server/controllers/api/elementController');
var _elementController2 = _interopRequireDefault(_elementController);
var _fogController = require('./server/controllers/api/fogController');
var _fogController2 = _interopRequireDefault(_fogController);
var _instanceResourcesController = require('./server/controllers/api/instanceResourcesController');
var _instanceResourcesController2 = _interopRequireDefault(_instanceResourcesController);
var _instanceStatusController = require('./server/controllers/api/instanceStatusController');
var _instanceStatusController2 = _interopRequireDefault(_instanceStatusController);
var _instanceConfigController = require('./server/controllers/api/instanceConfigController');
var _instanceConfigController2 = _interopRequireDefault(_instanceConfigController);
var _instanceContainerListController = require('./server/controllers/api/instanceContainerListController');
var _instanceContainerListController2 = _interopRequireDefault(_instanceContainerListController);
var _instanceChangesController = require('./server/controllers/api/instanceChangesController');
var _instanceChangesController2 = _interopRequireDefault(_instanceChangesController);
var _instanceRegistriesController = require('./server/controllers/api/instanceRegistriesController');
var _instanceRegistriesController2 = _interopRequireDefault(_instanceRegistriesController);
var _instanceRoutingController = require('./server/controllers/api/instanceRoutingController');
var _instanceRoutingController2 = _interopRequireDefault(_instanceRoutingController);
var _instanceContainerConfigController = require('./server/controllers/api/instanceContainerConfigController');
var _instanceContainerConfigController2 = _interopRequireDefault(_instanceContainerConfigController);
var _integratorController = require('./server/controllers/api/integratorController');
var _integratorController2 = _interopRequireDefault(_integratorController);
var _provisionKeyController = require('./server/controllers/api/provisionKeyController');
var _provisionKeyController2 = _interopRequireDefault(_provisionKeyController);
var _streamViewerController = require('./server/controllers/api/streamViewerController');
var _streamViewerController2 = _interopRequireDefault(_streamViewerController);
var _trackController = require('./server/controllers/api/trackController');
var _trackController2 = _interopRequireDefault(_trackController);
var _userController = require('./server/controllers/api/userController');
var _userController2 = _interopRequireDefault(_userController);
var _registryController = require('./server/controllers/api/registryController');
var _registryController2 = _interopRequireDefault(_registryController);
var _winstonLogs = require('./server/utils/winstonLogs');
var _winstonLogs2 = _interopRequireDefault(_winstonLogs);
var _proxyController = require('./server/controllers/api/proxyController');
var _proxyController2 = _interopRequireDefault(_proxyController);
var _fogVersionCommandController = require('./server/controllers/api/fogVersionCommandController');
var _fogVersionCommandController2 = _interopRequireDefault(_fogVersionCommandController);
var _diagnosticsController = require('./server/controllers/api/diagnosticsController');
var _diagnosticsController2 = _interopRequireDefault(_diagnosticsController);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var express = require('express');
var path = require('path');
var startServer = function startServer(port) {
var app = void 0,
dbPort = void 0,
sslKey = void 0,
sslCert = void 0,
intermedKey = void 0;
app = initApp();
_configUtil2.default.getAllConfigs().then(function () {
if (!port) {
dbPort = _configUtil2.default.getConfigParam(_constants2.default.CONFIG.port);
if (dbPort) {
port = dbPort;
} else {
port = _config2.default.port;
}
}
sslKey = _configUtil2.default.getConfigParam(_constants2.default.CONFIG.ssl_key);
sslCert = _configUtil2.default.getConfigParam(_constants2.default.CONFIG.ssl_cert);
intermedKey = _configUtil2.default.getConfigParam(_constants2.default.CONFIG.intermediate_cert);
if (sslKey && sslCert && intermedKey) {
startHttpsServer(app, port, sslKey, sslCert, intermedKey);
} else {
startHttpServer(app, port);
}
});
};
var initApp = function initApp() {
var app = express();
// parse application/x-www-form-urlencoded
app.use(_bodyParser2.default.urlencoded({
extended: true
}));
// parse application/json
app.use(_bodyParser2.default.json());
app.engine('ejs', require('ejs').renderFile);
app.set('view engine', 'ejs');
app.use((0, _cookieParser2.default)());
// CORS Enabled
app.use(function (req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
app.set('views', path.join(__dirname, 'views'));
app.get('/', _baseController2.default.mainPageEndPoint);
app.post('/api/v1/user/login', _userController2.default.validateUserEndPoint);
app.post('/api/v1/user/logout', _userController2.default.logoutUserEndPoint);
app.get('/api/v2/status', _fogController2.default.getFogControllerStatusEndPoint);
app.post('/api/v2/status', _fogController2.default.getFogControllerStatusEndPoint);
app.get('/api/v2/instance/create/type/:type', _fogController2.default.fogInstanceCreateEndPoint);
// app.get('/api/v2/instance/getfabriclist', fogController.getFogListEndPoint);
app.get('/api/v2/authoring/element/get', _elementController2.default.getElementsForPublishingEndPoint);
// app.post('/api/v2/authoring/organization/element/create', elementController.createElementEndPoint);
// app.post('/api/v2/authoring/organization/element/update', elementController.updateElementEndPoint);
// app.post('/api/v2/authoring/organization/element/delete', elementController.deleteElementEndPoint);
app.post('/api/v2/authoring/list/element/instance/', _elementInstanceController2.default.listElementInstanceWithStatusEndPoint);
app.get('/api/v2/authoring/element/catalog/get', _elementController2.default.getCatalogOfElements);
app.post('/api/v2/authoring/element/instance/create', _elementInstanceController2.default.detailedElementInstanceCreateEndPoint);
app.post('/api/v2/authoring/build/element/instance/create', _elementInstanceController2.default.elementInstanceCreateEndPoint);
app.post('/api/v2/authoring/integrator/instance/create', _integratorController2.default.integratorInstanceCreateEndPoint);
app.post('/api/v2/authoring/fabric/instance/create', _integratorController2.default.integratorInstanceCreateEndPoint);
app.post('/api/v2/authoring/integrator/instance/update', _integratorController2.default.integratorInstanceUpdateEndPoint);
app.post('/api/v2/authoring/element/instance/update', _elementInstanceController2.default.elementInstanceUpdateEndPoint);
app.post(['/api/v2/authoring/element/instance/config/update', '/api/v2/authoring/element/instance/name/update'], _elementInstanceController2.default.elementInstanceConfigUpdateEndPoint);
app.post('/api/v2/authoring/element/instance/delete', _elementInstanceController2.default.elementInstanceDeleteEndPoint);
app.get('/api/v2/authoring/fabric/viewer/access', _streamViewerController2.default.fogViewerAccessEndPoint);
app.get('/api/v2/instance/config/id/:ID/token/:Token', _instanceConfigController2.default.instanceConfigEndPoint);
app.post('/api/v2/instance/config/id/:ID/token/:Token', _instanceConfigController2.default.instanceConfigEndPoint);
app.post('/api/v2/instance/config/changes/id/:ID/token/:Token', _instanceConfigController2.default.instanceConfigChangesEndPoint);
app.post('/api/v2/instance/status/id/:ID/token/:Token', _instanceStatusController2.default.instanceStatusEndPoint);
app.post('/api/v2/authoring/element/instance/comsat/pipe/create', _elementInstanceController2.default.elementInstanceComsatPipeCreateEndPoint);
app.post('/api/v2/authoring/element/instance/comsat/pipe/delete', _elementInstanceController2.default.elementInstanceComsatPipeDeleteEndPoint);
app.post('/api/v2/authoring/element/instance/port/create', _elementInstanceController2.default.elementInstancePortCreateEndPoint);
app.post('/api/v2/authoring/element/instance/port/delete', _elementInstanceController2.default.elementInstancePortDeleteEndPoint);
app.get('/api/v2/authoring/integrator/instances/list/:t', _fogController2.default.fogInstancesListEndPoint); //
app.post('/api/v2/authoring/fabric/instances/list', _fogController2.default.fogInstancesListEndPoint);
app.post('/api/v2/authoring/integrator/instance/delete', _fogController2.default.integratorInstanceDeleteEndPoint);
app.get('/api/v2/instance/changes/id/:ID/token/:Token/timestamp/:TimeStamp', _instanceChangesController2.default.getChangeTrackingChangesEndPoint);
app.post('/api/v2/instance/changes/id/:ID/token/:Token/timestamp/:TimeStamp', _instanceChangesController2.default.getChangeTrackingChangesEndPoint);
app.get('/api/v2/instance/containerconfig/id/:ID/token/:Token', _instanceContainerConfigController2.default.containerConfigEndPoint);
app.post('/api/v2/instance/containerconfig/id/:ID/token/:Token', _instanceContainerConfigController2.default.containerConfigEndPoint);
app.get('/api/v2/instance/containerlist/id/:ID/token/:Token', _instanceContainerListController2.default.containerListEndPoint);
app.post('/api/v2/instance/containerlist/id/:ID/token/:Token', _instanceContainerListController2.default.containerListEndPoint);
app.post('/api/v2/instance/proxyconfig/id/:ID/token/:Token', _proxyController2.default.getProxyEndPoint);
app.post('/api/v2/instance/proxyconfig/changes/id/:ID/token/:Token', _proxyController2.default.updateProxyStatusEndPoint);
app.post('/api/v2/authoring/user/track/update', _trackController2.default.userTrackUpdateEndPoint);
app.get('/api/v2/instance/registries/id/:ID/token/:Token', _instanceRegistriesController2.default.instanceRegistriesEndPoint);
app.post('/api/v2/instance/registries/id/:ID/token/:Token', _instanceRegistriesController2.default.instanceRegistriesEndPoint);
app.get('/api/v2/instance/routing/id/:ID/token/:Token', _instanceRoutingController2.default.instanceRoutingEndPoint);
app.post('/api/v2/instance/routing/id/:ID/token/:Token', _instanceRoutingController2.default.instanceRoutingEndPoint);
app.post('/api/v2/authoring/element/instance/route/create', _instanceRoutingController2.default.instanceRouteCreateEndPoint);
app.post('/api/v2/authoring/element/instance/route/delete', _instanceRoutingController2.default.instanceRouteDeleteEndPoint);
app.get('/api/v2/authoring/fabric/provisioningkey/instanceid/:instanceId', _provisionKeyController2.default.getProvisionKeyEndPoint);
app.get('/api/v2/instance/provision/key/:provisionKey/fabrictype/:fabricType', _provisionKeyController2.default.fogProvisionKeyEndPoint);
app.post('/api/v2/instance/provision/key/:provisionKey/fabrictype/:fabricType', _provisionKeyController2.default.fogProvisionKeyEndPoint);
app.post('/api/v2/authoring/fabric/provisioningkey/list/delete', _provisionKeyController2.default.deleteProvisionKeyEndPoint);
app.get('/api/v2/authoring/fabric/track/list/:instanceId', _trackController2.default.fogTrackListEndPoint);
app.post('/api/v2/authoring/element/connection/create', _elementInstanceController2.default.createElementInstanceConnectionEndPoint);
app.post('/api/v2/authoring/element/connection/delete', _elementInstanceController2.default.deleteElementInstanceConnectionEndPoint);
app.post('/api/v2/authoring/element/instance/rebuild', _elementInstanceController2.default.elementInstanceRebuildUpdateEndPoint);
app.get('/api/v2/authoring/element/instance/rebuild/status/elementid/:elementId', _elementInstanceController2.default.elementInstanceRebuildStatusEndPoint);
app.get('/api/v2/authoring/user/track/list/:t', _trackController2.default.getTracksForUser);
app.get('/api/v2/authoring/fabric/types/list', _fogController2.default.getFogTypesEndPoint);
app.get('/api/v2/authoring/fabric/proxy/status', _proxyController2.default.getProxyStatusEndPoint);
app.get('/api/v2/authoring/element/instance/details/trackid/:trackId', _elementInstanceController2.default.getElementInstanceDetailsEndPoint);
app.post('/api/v2/authoring/element/instance/details/trackid/:trackId', _elementInstanceController2.default.getElementInstanceDetailsEndPoint);
app.post('/api/v2/authoring/build/properties/panel/get', _elementInstanceController2.default.getElementInstancePropertiesEndPoint);
app.post('/api/v2/authoring/user/track/create', _trackController2.default.userTrackCreateEndPoint);
app.post('/api/v2/authoring/user/track/delete', _trackController2.default.userTrackDeleteEndPoint);
app.get('/api/v2/authoring/fabric/track/element/list/:trackId', _elementInstanceController2.default.trackElementListEndPoint);
app.post('/api/v2/authoring/fabric/instance/delete', _fogController2.default.fogInstanceDeleteEndPoint);
app.post('/api/v2/authoring/fabric/instances/settings/update', _fogController2.default.updateFogSettingsEndpoint);
app.post('/api/v2/authoring/fabric/track/update', _trackController2.default.fogTrackUpdateEndPoint);
app.post('/api/v2/authoring/fabric/track/delete', _trackController2.default.fogTrackDeleteEndPoint);
app.post('/api/v2/authoring/fabric/details', _fogController2.default.getFogDetailsEndpoint);
app.post('/api/v2/instance/hw_info/id/:ID/token/:Token', _instanceResourcesController2.default.fogInstanceHWInfo);
app.post('/api/v2/instance/usb_info/id/:ID/token/:Token', _instanceResourcesController2.default.fogInstanceUSBInfo);
app.post('/api/v2/authoring/fog/info/hw', _instanceResourcesController2.default.getFogHwInfoEndPoint);
app.post('/api/v2/authoring/fog/info/usb', _instanceResourcesController2.default.getFogUsbInfoEndPoint);
app.get('/api/v2/authoring/registry/list', _registryController2.default.listRegistryEndPoint);
app.post('/api/v2/authoring/registry/add', _registryController2.default.addRegistryEndPoint);
app.post('/api/v2/authoring/registry/delete', _registryController2.default.deleteRegistryEndPoint);
app.post('/api/v2/authoring/element/module/create', _elementController2.default.createElementForUserEndPoint);
app.post('/api/v2/authoring/element/module/update', _elementController2.default.updateElementForUserEndPoint);
app.get('/api/v2/authoring/element/module/delete/moduleid/:moduleId', _elementController2.default.deleteElementForUserEndPoint);
app.get('/api/v2/authoring/element/module/details/moduleid/:moduleId', _elementController2.default.getElementDetailsEndPoint);
app.post('/api/v2/authoring/fabric/instance/proxy/createOrUpdate', _proxyController2.default.createOrUpdateProxyEndPoint);
app.post('/api/v2/authoring/fabric/instance/proxy/close', _proxyController2.default.closeProxyEndPoint);
app.post('/api/v2/authoring/fabric/version/change', _fogVersionCommandController2.default.changeVersionEndPoint);
app.get('/api/v2/instance/version/id/:instanceId/token/:Token', _fogVersionCommandController2.default.instanceVersionEndPoint);
app.post('/api/v2/instance/version/id/:instanceId/token/:Token', _fogVersionCommandController2.default.instanceVersionEndPoint);
// app.post('/api/v2/authoring/fabric/instance/bluebox/add', fogController.addBlueboxEndpoint);
app.post('/api/v2/authoring/element/diagnostics/strace/switch', _diagnosticsController2.default.switchElementStrace);
app.post('/api/v2/instance/strace/push/id/:instanceId/token/:Token', _diagnosticsController2.default.pushStraceData);
app.post('/api/v2/instance/diagnostics/id/:instanceId/token/:Token', _diagnosticsController2.default.getDiagnosticsInfo);
app.post('/api/v2/authoring/element/diagnostics/strace/pop/json', _diagnosticsController2.default.popStraceDataAsJson);
app.post('/api/v2/authoring/element/diagnostics/strace/pop/file/', _diagnosticsController2.default.popStraceDataAsFile);
app.post('/api/v2/authoring/element/diagnostics/strace/pop/ftp/', _diagnosticsController2.default.popStraceDataToFtp);
app.get('/api/v2/get/user/data/:t', _userController2.default.getUserDetailsEndPoint);
app.post('/api/v1/user/profile/update', _userController2.default.updateUserDetailsEndPoint);
app.post('/api/v1/user/password/change', _userController2.default.updateUserPasswordEndPoint);
app.post('/api/v1/user/account/delete', _userController2.default.deleteUserAccountEndPoint);
app.post('/api/v1/user/signup', _userController2.default.userSignupEndPoint);
app.post('/api/v1/user/password/reset', _userController2.default.resetUserPasswordEndPoint);
app.post('/api/v1/user/account/activate/resend', _userController2.default.resendEmailActivationEndPoint);
app.get('/account/activate/code/:code', _userController2.default.activateUserAccountEndPoint);
app.get('/api/v2/user/authenticate/:t', _userController2.default.authenticateUserEndPoint);
//generic error handler
app.use(function (err, req, res, next) {
_winstonLogs2.default.error('App crashed with error: ' + err);
_winstonLogs2.default.error('App crashed with stack: ' + err.stack);
console.log('App crashed with error: ' + err);
console.log('App crashed with stack: ' + err.stack);
res.status(500).send('Hmm, what you have encountered is unexpected. If problem persists, contact app provider.');
});
return app;
};
var startHttpServer = function startHttpServer(app, port) {
_winstonLogs2.default.warn("| SSL not configured, starting HTTP server.|");
console.log("------------------------------------------");
console.log("| SSL not configured, starting HTTP server.|");
console.log("------------------------------------------");
app.listen(port, function onStart(err) {
if (err) {
console.log(err);
}
_winstonLogs2.default.info('==> 🌎 Listening on port %s. Open up http://localhost:%s/ in your browser.', port, port);
console.log('==> 🌎 Listening on port %s. Open up http://localhost:%s/ in your browser.', port, port);
});
};
var startHttpsServer = function startHttpsServer(app, port, sslKey, sslCert, intermedKey) {
try {
var sslOptions = {
key: _fs2.default.readFileSync(sslKey),
cert: _fs2.default.readFileSync(sslCert),
ca: _fs2.default.readFileSync(intermedKey),
requestCert: true,
rejectUnauthorized: false
};
_https2.default.createServer(sslOptions, app).listen(port, function onStart(err) {
if (err) {
_winstonLogs2.default.error(err);
console.log(err);
}
_winstonLogs2.default.info('==> 🌎 HTTPS server listening on port %s. Open up https://localhost:%s/ in your browser.', port, port);
console.log('==> 🌎 HTTPS server listening on port %s. Open up https://localhost:%s/ in your browser.', port, port);
});
} catch (e) {
_winstonLogs2.default.error('ssl_key or ssl_cert or intermediate_cert is either missing or invalid. Provide valid SSL configurations.');
console.log('ssl_key or ssl_cert or intermediate_cert is either missing or invalid. Provide valid SSL configurations.');
}
};
exports.default = {
startServer: startServer
};