UNPKG

fog-controller

Version:

Fog Controller project @ iotracks.com

294 lines (252 loc) 9.43 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _fs = require('fs'); var _fs2 = _interopRequireDefault(_fs); var _path = require('path'); var _path2 = _interopRequireDefault(_path); var _winstonLogs = require('./winstonLogs'); var _winstonLogs2 = _interopRequireDefault(_winstonLogs); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var portscanner = require('portscanner'); // Checks the status of a single port // returns 'closed' if port is available // returns 'open' if port is not available /** * @file appUtils.js * @author Zishan Iqbal * @description This file includes the utility functions relevant to IOFog; */ var checkPortAvailability = function checkPortAvailability(port) { return portscanner.checkPortStatus(port).then(function (status) { return status; }); }; var isArray = function isArray(object) { return Object.prototype.toString.call(object) === '[object Array]'; }; /** * @desc generates a random String of 64 size * @param - none * @return String - returns random string */ var generateAccessToken = function generateAccessToken() { var token = '', i = void 0; for (i = 0; i < 8; i++) { token += (0 + (Math.floor(Math.random() * Math.pow(2, 31)) + 1).toString(16)).slice(-8).substr(-8); } return token; }; /** * @desc generates a random String of the size specified by the input param * @param Integer - size * @return String - returns random string */ var generateRandomString = function generateRandomString(size) { var randString = ""; var possible = "2346789bcdfghjkmnpqrtvwxyzBCDFGHJKLMNPQRTVWXYZ"; for (var i = 0; i < size; i++) { randString += possible.charAt(Math.floor(Math.random() * possible.length)); }return randString; }; var isFileExists = function isFileExists(filePath) { if (_path2.default.extname(filePath).indexOf(".") >= 0) { return _fs2.default.existsSync(filePath); } else { return false; } }; var isValidPort = function isValidPort(port) { port = Number(port); if (Number.isInteger(port)) { if (port >= 0 && port < 65535) return true; } return false; }; var isValidEmail = function isValidEmail(email) { var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; return re.test(email); }; var isValidName = function isValidName(name) { var re = /^([a-zA-Z0-9]+)$/; return re.test(name); }; var isValidCertificate = function isValidCertificate(cert) { var re = /^(?:(?!-{3,}(?:BEGIN|END) CERTIFICATE)[\s\S])*(-{3,}BEGIN CERTIFICATE(?:(?!-{3,}END CERTIFICATE)[\s\S])*?-{3,}END CERTIFICATE-{3,})(?![\s\S]*?-{3,}BEGIN CERTIFICATE[\s\S]+?-{3,}END CERTIFICATE[\s\S]*?$)/; return re.test(cert); }; var trimCertificate = function trimCertificate(cert) { var result = cert.replace(/(^[\s\S]*-{3,}BEGIN CERTIFICATE-{3,}[\s]*)/, ""); result = result.replace(/([\s]*-{3,}END CERTIFICATE-{3,}[\s\S]*$)/, ""); return result; }; var isValidDomain = function isValidDomain(domain) { var re = /^((?:(?:(?:\w[\.\-\+]?)*)\w)+)((?:(?:(?:\w[\.\-\+]?){0,62})\w)+)\.(\w{2,6})$/; return re.test(domain); }; var isValidPublicIP = function isValidPublicIP(publicIP) { var re = /^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])$|^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/; return re.test(publicIP); }; var isValidProtocol = function isValidProtocol(protocol) { if (protocol == 'http' || protocol == 'https') { return true; } else { return false; } }; var convertRelativePathToAbsolute = function convertRelativePathToAbsolute(filePath) { if (_path2.default.isAbsolute(filePath)) { return filePath; } else { return _path2.default.resolve(filePath); } }; /** * @desc generates a random String of the size specified by the input param * @param Integer - size * @return String - returns random string */ var generateInstanceId = function generateInstanceId(size) { var randString = ""; var possible = "2346789bcdfghjkmnpqrtvwxyzBCDFGHJKLMNPQRTVWXYZ"; for (var i = 0; i < size; i++) { randString += possible.charAt(Math.floor(Math.random() * possible.length)); }return randString; }; var getProperty = function getProperty(theObject, path, separator) { if (path) { try { separator = separator || '.'; return path.replace('[', separator).replace(']', '').split(separator).reduce(function (obj, property) { return obj[property]; }, theObject); } catch (err) { return undefined; } } else { return null; } }; var onCreate = function onCreate(params, paramName, errorMsg, callback, modelObject) { if (modelObject) { if (paramName) { params[paramName] = modelObject; } callback(null, params); } else { callback('error', errorMsg); } }; var onFind = function onFind(params, paramName, errorMsg, callback, modelObject) { if (modelObject) { if (paramName) { params[paramName] = modelObject; } callback(null, params); } else { callback('error', errorMsg); } }; var onFindOptional = function onFindOptional(params, paramName, callback, modelObject) { if (modelObject && paramName) { params[paramName] = modelObject; } callback(null, params); }; var onUpdate = function onUpdate(params, errorMsg, callback, updatedModels) { if (updatedModels.length > 0) { callback(null, params); } else { callback('error', errorMsg); } }; var onUpdateOrCreate = function onUpdateOrCreate(params, paramName, errorMsg, callback, modelObject) { if (modelObject) { if (paramName) { params[paramName] = modelObject; } callback(null, params); } else { callback('error', errorMsg); } }; var onUpdateOptional = function onUpdateOptional(params, callback, updatedModels) { callback(null, params); }; var onDelete = function onDelete(params, errorMsg, callback, deletedModels) { if (deletedModels <= 0) { callback('error', errorMsg); } else { callback(null, params); } }; var onDeleteOptional = function onDeleteOptional(params, callback, deletedModels) { callback(null, params); }; var sendResponse = function sendResponse(response, err, successLabel, successValue, errorMessage) { var res = { 'timestamp': new Date().getTime() }; response.status(200); if (err) { _winstonLogs2.default.error(errorMessage); res['status'] = 'failure'; res['errormessage'] = errorMessage; } else { _winstonLogs2.default.info("Endpoint served successfully"); res['status'] = 'ok'; if (successLabel || successValue) { res[successLabel] = successValue; } } response.send(res); }; var sendMultipleResponse = function sendMultipleResponse(response, err, successLabelArr, successValueArr, errorMessage) { var res = { 'timestamp': new Date().getTime() }; response.status(200); if (err) { _winstonLogs2.default.error(errorMessage); res['status'] = 'failure'; res['errormessage'] = errorMessage; } else { _winstonLogs2.default.info("Endpoint served successfully"); res['status'] = 'ok'; for (var i = 0; i < successValueArr.length; i++) { res[successLabelArr[i]] = successValueArr[i]; } } response.send(res); }; exports.default = { isArray: isArray, isFileExists: isFileExists, isValidPort: isValidPort, isValidEmail: isValidEmail, isValidName: isValidName, isValidDomain: isValidDomain, isValidPublicIP: isValidPublicIP, isValidProtocol: isValidProtocol, isValidCertificate: isValidCertificate, trimCertificate: trimCertificate, generateAccessToken: generateAccessToken, generateRandomString: generateRandomString, convertRelativePathToAbsolute: convertRelativePathToAbsolute, checkPortAvailability: checkPortAvailability, generateInstanceId: generateInstanceId, getProperty: getProperty, onCreate: onCreate, onUpdate: onUpdate, onUpdateOptional: onUpdateOptional, onFind: onFind, onFindOptional: onFindOptional, onDelete: onDelete, onDeleteOptional: onDeleteOptional, sendResponse: sendResponse, sendMultipleResponse: sendMultipleResponse, onUpdateOrCreate: onUpdateOrCreate };