UNPKG

fog-controller

Version:

Fog Controller project @ iotracks.com

343 lines (260 loc) 20.4 kB
'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 };