fog-controller
Version:
Fog Controller project @ iotracks.com
291 lines (245 loc) • 10.1 kB
JavaScript
;
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
};