UNPKG

fog-controller

Version:

Fog Controller project @ iotracks.com

291 lines (245 loc) 10.1 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _async = require('async'); var _async2 = _interopRequireDefault(_async); var _baseApiController = require('./baseApiController'); var _baseApiController2 = _interopRequireDefault(_baseApiController); var _changeTrackingService = require('../../services/changeTrackingService'); var _changeTrackingService2 = _interopRequireDefault(_changeTrackingService); var _userService = require('../../services/userService'); var _userService2 = _interopRequireDefault(_userService); var _proxyService = require('../../services/proxyService'); var _proxyService2 = _interopRequireDefault(_proxyService); var _fogService = require('../../services/fogService'); var _fogService2 = _interopRequireDefault(_fogService); var _appUtils = require('../../utils/appUtils'); var _appUtils2 = _interopRequireDefault(_appUtils); var _winstonLogs = require('../../utils/winstonLogs'); var _winstonLogs2 = _interopRequireDefault(_winstonLogs); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /********************************************* EndPoints ******************************************************/ /** * ioAuthoring end point to create proxy for specific iofog instance * (Post: /api/v2/authoring/fabric/instance/proxy/createOrUpdate) * @param req request * @param res response */ /** * @file proxyController.js * @author epankov * @description This file includes the implementation of the proxy end-point */ var createOrUpdateProxyEndPoint = function createOrUpdateProxyEndPoint(req, res) { _winstonLogs2.default.info("Endpoint hit: " + req.originalUrl); var params = {}, userProps = { userId: 'bodyParams.t', setProperty: 'user' }, changeTrackingProps = { fogInstanceId: 'bodyParams.instanceId', changeObject: { proxy: new Date().getTime() } }, proxyProps = { fogInstanceId: 'bodyParams.instanceId', setProperty: 'proxy' }; params.bodyParams = req.body; _winstonLogs2.default.info("Parameters:" + JSON.stringify(params.bodyParams)); _async2.default.waterfall([_async2.default.apply(_userService2.default.getUser, userProps, params), _async2.default.apply(_proxyService2.default.getProxyByInstanceId, proxyProps), updateProxyStatusToPendingOpen, createOrUpdateProxy, _async2.default.apply(_changeTrackingService2.default.updateChangeTracking, changeTrackingProps)], function (err, result) { var errMsg = 'Internal error: ' + result; _appUtils2.default.sendResponse(res, err, 'instanceId', params.bodyParams.instanceId, errMsg); }); }; /** * ioAuthoring end point to close proxy for specific iofog instance * (Post: /api/v2/authoring/fabric/instance/proxy/close) * @param req request * @param res response */ var closeProxyEndPoint = function closeProxyEndPoint(req, res) { _winstonLogs2.default.info("Endpoint hit:" + req.originalUrl); var params = {}, userProps = { userId: 'bodyParams.t', setProperty: 'user' }, changeTrackingProps = { fogInstanceId: 'bodyParams.instanceId', changeObject: { proxy: new Date().getTime() } }, proxyProps = { fogInstanceId: 'bodyParams.instanceId', changeObject: { close: true } }; params.bodyParams = req.body; _winstonLogs2.default.info("Parameters:" + JSON.stringify(params.bodyParams)); _async2.default.waterfall([_async2.default.apply(_userService2.default.getUser, userProps, params), updateProxyStatusToPendingClose, _async2.default.apply(_proxyService2.default.updateProxy, proxyProps), _async2.default.apply(_changeTrackingService2.default.updateChangeTracking, changeTrackingProps)], function (err, result) { var errMsg = 'Internal error: ' + result; _appUtils2.default.sendResponse(res, err, '', '', errMsg); }); }; /** * ioFog end point to retrieve proxy info for specific iofog instance * (Post: /api/v2/instance/proxyconfig/id/:ID/token/:Token) * @param req request * @param res response */ var getProxyEndPoint = function getProxyEndPoint(req, res) { _winstonLogs2.default.info("Endpoint hit:" + req.originalUrl); var params = {}, instanceProps = { fogInstanceId: 'bodyParams.ID', setProperty: 'config' }; params.bodyParams = req.params; _winstonLogs2.default.info("Parameters:" + JSON.stringify(params.bodyParams)); _async2.default.waterfall([_async2.default.apply(_baseApiController2.default.checkUserExistance, req, res), _async2.default.apply(_proxyService2.default.getProxyByInstanceId, instanceProps, params)], function (err, result) { _appUtils2.default.sendResponse(res, err, 'config', params.config, result); }); }; /** * ioAuthoring end point to retrieve proxy status * (Get: /api/v2/authoring/fabric/proxy/status) * @param req request * @param res response */ var getProxyStatusEndPoint = function getProxyStatusEndPoint(req, res) { _winstonLogs2.default.info("Endpoint hit: " + req.originalUrl); var params = {}, userProps = { userId: 'bodyParams.t', setProperty: 'user' }, proxyProps = { fogInstanceId: 'bodyParams.instanceId', setProperty: 'proxy' }; params.bodyParams = req.params; params.bodyParams.t = req.query.t; _winstonLogs2.default.info("Parameters:" + JSON.stringify(params.bodyParams)); _async2.default.waterfall([_async2.default.apply(_userService2.default.getUser, userProps, params), _async2.default.apply(_proxyService2.default.getProxyByInstanceId, proxyProps)], function (err, result) { var output = void 0; if (!err) { output = params.proxy; } // let errMsg = 'Internal error: ' + result; // AppUtils.sendResponse(res, err, 'proxy', params.proxy, errMsg); _appUtils2.default.sendResponse(res, err, 'output', output, result); }); }; /** * ioFog end point to update proxy status * (Post: /api/v2/instance/proxyconfig/changes/id/:ID/token/:Token) * @param req request * @param res response */ var updateProxyStatusEndPoint = function updateProxyStatusEndPoint(req, res) { _winstonLogs2.default.info("Endpoint hit:" + req.originalUrl); var params = {}, instanceProps = { instanceId: 'bodyParams.ID', updatedFog: { proxy: req.body.proxystatus } }; params.bodyParams = req.params; _winstonLogs2.default.info("Parameters:" + JSON.stringify(params.bodyParams)); _async2.default.waterfall([_async2.default.apply(_baseApiController2.default.checkUserExistance, req, res), _async2.default.apply(_fogService2.default.updateFogInstance, instanceProps, params)], function (err, result) { _appUtils2.default.sendResponse(res, err, '', '', result); }); }; /*************************************** Extra Functions *************************************************/ /** * updates proxy info if it exists and creates new one in other case. * @param params parameters * @param callback waterfall callback */ var createOrUpdateProxy = function createOrUpdateProxy(params, callback) { var proxyProps = void 0; var proxyObject = { username: params.bodyParams.username, password: params.bodyParams.password, host: params.bodyParams.host, lport: params.bodyParams.lport, rport: params.bodyParams.rport, rsakey: params.bodyParams.rsakey, close: false, iofog_uuid: params.bodyParams.instanceId }; if (params.proxy) { proxyProps = { fogInstanceId: 'bodyParams.instanceId', changeObject: proxyObject }; _proxyService2.default.updateProxy(proxyProps, params, callback); } else { proxyProps = { proxy: proxyObject, setProperty: 'proxy' }; _proxyService2.default.createProxy(proxyProps, params, callback); } }; var updateProxyStatusToPendingOpen = function updateProxyStatusToPendingOpen(params, callback) { var proxyObj = { username: params.bodyParams.username, host: params.bodyParams.host, lport: params.bodyParams.lport, rport: params.bodyParams.rport, status: "PENDING_OPEN", errormessage: "" }; var proxyStr = JSON.stringify(proxyObj); var fogInstanceProps = { instanceId: 'bodyParams.instanceId', updatedFog: { proxy: proxyStr } }; _fogService2.default.updateFogInstance(fogInstanceProps, params, callback); }; var updateProxyStatusToPendingClose = function updateProxyStatusToPendingClose(params, callback) { var fogInstanceProps = { fogId: 'bodyParams.instanceId', setProperty: 'fogInstance' }; _async2.default.waterfall([_async2.default.apply(_fogService2.default.getFogInstance, fogInstanceProps, params), updateProxyStatusObj], function (err, result) { callback(null, params); }); }; var updateProxyStatusObj = function updateProxyStatusObj(params, callback) { var oldProxyStr = params.fogInstance.proxy; var oldProxyObj = JSON.parse(oldProxyStr); var proxyObj = { username: oldProxyObj.username, host: oldProxyObj.host, lport: oldProxyObj.lport, rport: oldProxyObj.rport, status: "PENDING_CLOSE", errormessage: "" }; var proxyStr = JSON.stringify(proxyObj); var fogInstanceProps = { instanceId: 'bodyParams.instanceId', updatedFog: { proxy: proxyStr } }; _fogService2.default.updateFogInstance(fogInstanceProps, params, callback); }; exports.default = { createOrUpdateProxyEndPoint: createOrUpdateProxyEndPoint, closeProxyEndPoint: closeProxyEndPoint, getProxyEndPoint: getProxyEndPoint, getProxyStatusEndPoint: getProxyStatusEndPoint, updateProxyStatusEndPoint: updateProxyStatusEndPoint };