From e7574670166b0c8eed8d59505ee969ae5d655a03 Mon Sep 17 00:00:00 2001 From: maksimchepelev Date: Mon, 4 Mar 2019 14:54:55 +0300 Subject: [PATCH 1/3] feat(tracking): use random tracking uuid Closes ENG-802 --- scripts/postinstall.js | 3 ++- scripts/preuninstall.js | 3 ++- scripts/util.js | 13 +++++++++++++ src/helpers/constants.js | 1 + src/tracking/index.js | 41 ++++++++++++++++++++-------------------- 5 files changed, 38 insertions(+), 23 deletions(-) diff --git a/scripts/postinstall.js b/scripts/postinstall.js index a7723b45c..4850a5b79 100644 --- a/scripts/postinstall.js +++ b/scripts/postinstall.js @@ -17,12 +17,13 @@ const fs = require('fs') const semver = require('semver') const config = require('../src/config') const currentVersion = require('../package').version -const {restoreDBs, restoreConfigs, INSTALLATION_VARIABLES_FILE} = require('./util') +const {restoreDBs, restoreConfigs, restoreTrackingUuid, INSTALLATION_VARIABLES_FILE} = require('./util') function postinstall() { // restore all files restoreDBs() restoreConfigs() + restoreTrackingUuid() // process migrations try { diff --git a/scripts/preuninstall.js b/scripts/preuninstall.js index 5cbdb7aea..69d0c5d5a 100644 --- a/scripts/preuninstall.js +++ b/scripts/preuninstall.js @@ -13,7 +13,7 @@ const fs = require('fs') const version = require('../package').version -const {backupDBs, backupConfigs, INSTALLATION_VARIABLES_FILE} = require('./util') +const {backupDBs, backupConfigs, backupTrackingUuid, INSTALLATION_VARIABLES_FILE} = require('./util') function preuninstall() { const instalationVars = { @@ -24,6 +24,7 @@ function preuninstall() { backupDBs() backupConfigs() + backupTrackingUuid() } module.exports = { diff --git a/scripts/util.js b/scripts/util.js index 8fd2e1434..f8cbb40c6 100644 --- a/scripts/util.js +++ b/scripts/util.js @@ -30,6 +30,9 @@ const DEFAULT_CONFIG_BACKUP = `${TEMP_DIR}/default_iofog_backup.json` const DEVELOP_CONFIG_BACKUP = `${TEMP_DIR}/development_iofog_backup.json` const PRODUCTION_CONFIG_BACKUP = `${TEMP_DIR}/production_iofog_backup.json` +const TRACKING_UUID_FILE = `${ROOT_DIR}/src/config/tracking-uuid` +const TRACKING_UUID_FILE_BACKUP = `${TEMP_DIR}/tracking-uuid_backup` + const INSTALLATION_VARIABLES_FILE = TEMP_DIR + '/iofogcontroller_install_variables' @@ -77,11 +80,21 @@ function restoreConfigs() { renameFile(PRODUCTION_CONFIG_BACKUP, PRODUCTION_CONFIG) } +function backupTrackingUuid() { + renameFile(TRACKING_UUID_FILE, TRACKING_UUID_FILE_BACKUP) +} + +function restoreTrackingUuid() { + renameFile(TRACKING_UUID_FILE_BACKUP, TRACKING_UUID_FILE) +} + module.exports = { backupDBs: backupDBs, restoreDBs: restoreDBs, backupConfigs: backupConfigs, restoreConfigs: restoreConfigs, + backupTrackingUuid: backupTrackingUuid, + restoreTrackingUuid: restoreTrackingUuid, renameFile: renameFile, getTempDir: getTempDir, diff --git a/src/helpers/constants.js b/src/helpers/constants.js index 79d3fc591..e5ebcb276 100644 --- a/src/helpers/constants.js +++ b/src/helpers/constants.js @@ -12,6 +12,7 @@ */ module.exports = { + ROOT_DIR: `${__dirname}/../..`, CONNECTOR_HTTP_PORT: 8080, CONNECTOR_HTTPS_PORT: 443, diff --git a/src/tracking/index.js b/src/tracking/index.js index 43c7ff647..2d2a7fc0a 100644 --- a/src/tracking/index.js +++ b/src/tracking/index.js @@ -14,16 +14,16 @@ const {isOnline} = require('../helpers/app-helper') const https = require('https') const EventTypes = require('../enums/tracking-event-type') -const os = require('os') +const fs = require('fs') const AppHelper = require('../helpers/app-helper') -const crypto = require('crypto') +const Constants = require('../helpers/constants') const TrackingEventManager = require('../sequelize/managers/tracking-event-manager') const Transaction = require('sequelize/lib/transaction') const fakeTransactionObject = {fakeTransaction: true} -const trackingUuid = getUniqueTrackingUuid() +const trackingUuid = initTrackingUuid() function buildEvent(eventType, res, args, functionName) { const eventInfo = { @@ -93,33 +93,32 @@ function sendEvents(events) { request.end() } -function getUniqueTrackingUuid() { +function initTrackingUuid() { let uuid - + const path = `${Constants.ROOT_DIR}/src/config/tracking-uuid` try { - let allMacs = '' - const interfaces = os.networkInterfaces() - for (const i in interfaces) { - if (interfaces.hasOwnProperty(i)) { - let networkInterface = interfaces[i] - if (Array.isArray(networkInterface)) { - networkInterface = networkInterface.length > 0 ? networkInterface[0] : null - } - - if (!networkInterface || networkInterface.internal) { - continue - } + if (!fs.existsSync(path)) { + return createTrackingUuidFile(path) + } - allMacs += networkInterface.mac + '-' - } + const uuid = fs.readFileSync(path).toString('utf8') + if (uuid.length < 32) { + return createTrackingUuidFile(path) } - uuid = crypto.createHash('md5').update(allMacs).digest('hex') } catch (e) { - uuid = 'random_' + AppHelper.generateRandomString(32) + logSilly('Error while getting tracking UUID') + uuid = `temp_${AppHelper.generateRandomString(32)}` } return uuid } +function createTrackingUuidFile(path) { + const uuid = AppHelper.generateRandomString(32) + fs.writeFileSync(path, uuid) + + return uuid +} + async function processEvent(event, fArgs) { event.data = JSON.stringify(event.data) if (isOnline()) { From e9114898701803374ebd53b48b11c30801ce9286 Mon Sep 17 00:00:00 2001 From: maksimchepelev Date: Mon, 4 Mar 2019 14:59:41 +0300 Subject: [PATCH 2/3] feat(tracking): use random tracking uuid Closes ENG-802 --- src/tracking/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/tracking/index.js b/src/tracking/index.js index 2d2a7fc0a..0f1e70ed9 100644 --- a/src/tracking/index.js +++ b/src/tracking/index.js @@ -17,6 +17,7 @@ const EventTypes = require('../enums/tracking-event-type') const fs = require('fs') const AppHelper = require('../helpers/app-helper') const Constants = require('../helpers/constants') +const logger = require('../logger') const TrackingEventManager = require('../sequelize/managers/tracking-event-manager') const Transaction = require('sequelize/lib/transaction') @@ -106,7 +107,7 @@ function initTrackingUuid() { return createTrackingUuidFile(path) } } catch (e) { - logSilly('Error while getting tracking UUID') + logger.silly('Error while getting tracking UUID') uuid = `temp_${AppHelper.generateRandomString(32)}` } return uuid From 7a5c887edff34123c9f94d12f2c27d8d1547c208 Mon Sep 17 00:00:00 2001 From: maksimchepelev Date: Mon, 4 Mar 2019 16:46:33 +0300 Subject: [PATCH 3/3] feat(tracking): use random tracking uuid Closes ENG-802 --- src/tracking/index.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/tracking/index.js b/src/tracking/index.js index 0f1e70ed9..4b6d3b9ae 100644 --- a/src/tracking/index.js +++ b/src/tracking/index.js @@ -102,7 +102,7 @@ function initTrackingUuid() { return createTrackingUuidFile(path) } - const uuid = fs.readFileSync(path).toString('utf8') + uuid = fs.readFileSync(path).toString('utf8') if (uuid.length < 32) { return createTrackingUuidFile(path) } @@ -140,7 +140,6 @@ async function processEvent(event, fArgs) { } module.exports = { - trackingUuid: trackingUuid, buildEvent: buildEvent, sendEvents: sendEvents, processEvent: processEvent,