Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion scripts/postinstall.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
3 changes: 2 additions & 1 deletion scripts/preuninstall.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 = {
Expand All @@ -24,6 +24,7 @@ function preuninstall() {

backupDBs()
backupConfigs()
backupTrackingUuid()
}

module.exports = {
Expand Down
13 changes: 13 additions & 0 deletions scripts/util.js
Original file line number Diff line number Diff line change
Expand Up @@ -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'


Expand Down Expand Up @@ -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,

Expand Down
1 change: 1 addition & 0 deletions src/helpers/constants.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
*/

module.exports = {
ROOT_DIR: `${__dirname}/../..`,
CONNECTOR_HTTP_PORT: 8080,
CONNECTOR_HTTPS_PORT: 443,

Expand Down
43 changes: 21 additions & 22 deletions src/tracking/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,17 @@
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 logger = require('../logger')

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 = {
Expand Down Expand Up @@ -93,33 +94,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 + '-'
}
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)
logger.silly('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()) {
Expand All @@ -140,7 +140,6 @@ async function processEvent(event, fArgs) {
}

module.exports = {
trackingUuid: trackingUuid,
buildEvent: buildEvent,
sendEvents: sendEvents,
processEvent: processEvent,
Expand Down