From 9a543105144afc3e55b047bb8cc89aa188c48f48 Mon Sep 17 00:00:00 2001 From: Jason Calabrese Date: Tue, 14 Apr 2015 22:46:06 -0700 Subject: [PATCH 1/3] create a better default mqtt clientId by hashing the mongo host/db/collection --- env.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/env.js b/env.js index c8be09fb2..ec6121305 100644 --- a/env.js +++ b/env.js @@ -32,13 +32,22 @@ function config ( ) { } env.version = software.version; env.name = software.name; - env.MQTT_MONITOR = readENV('MQTT_MONITOR', null); env.DISPLAY_UNITS = readENV('DISPLAY_UNITS', 'mg/dl'); env.PORT = readENV('PORT', 1337); env.mongo = readENV('MONGO_CONNECTION') || readENV('MONGO') || readENV('MONGOLAB_URI'); env.mongo_collection = readENV('MONGO_COLLECTION', 'entries'); + env.MQTT_MONITOR = readENV('MQTT_MONITOR', null); if (env.MQTT_MONITOR) { - env.mqtt_client_id = [env.mongo.split('/').pop( ), env.mongo_collection].join('.'); + var hostDbCollection = [env.mongo.split('mongodb://').pop().split('@').pop( ), env.mongo_collection].join('/'); + var mongoHash = crypto.createHash('sha1'); + mongoHash.update(hostDbCollection); + env.mqtt_client_id = mongoHash.digest('hex'); + console.info('Using Mongo host/db/collection to create the default MQTT client_id', hostDbCollection); + if (env.MQTT_MONITOR.indexOf('?clientId=') == -1) { + console.info('Set MQTT client_id to: ', env.mqtt_client_id); + } else { + console.info('MQTT configured to use a custom client id, it will override the default: ', env.mqtt_client_id); + } } env.settings_collection = readENV('MONGO_SETTINGS_COLLECTION', 'settings'); env.treatments_collection = readENV('MONGO_TREATMENTS_COLLECTION', 'treatments'); From 6eb1b62d73bc9a956af5a6f7d914fa24836ebf65 Mon Sep 17 00:00:00 2001 From: Jason Calabrese Date: Tue, 14 Apr 2015 22:46:31 -0700 Subject: [PATCH 2/3] clean/sort up package.json --- package.json | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index fd31ca30e..b667af528 100644 --- a/package.json +++ b/package.json @@ -44,6 +44,7 @@ "dependencies": { "async": "^0.9.0", "body-parser": "^1.4.3", + "bootevent": "0.0.1", "bower": "^1.3.8", "browserify-express": "^0.1.4", "compression": "^1.4.2", @@ -51,6 +52,7 @@ "event-stream": "~3.1.5", "express": "^4.6.1", "express-extension-to-accept": "0.0.2", + "forever": "~0.13.0", "git-rev": "git://github.com/bewest/git-rev.git", "long": "~2.2.3", "mongodb": "^1.4.7", @@ -58,10 +60,7 @@ "mqtt": "~0.3.11", "pushover-notifications": "0.2.0", "sgvdata": "git://github.com/ktind/sgvdata.git#wip/protobuf", - "socket.io": "^0.9.17", - "git-rev": "git://github.com/bewest/git-rev.git", - "bootevent": "0.0.1", - "forever": "~0.13.0" + "socket.io": "^0.9.17" }, "devDependencies": { "istanbul": "~0.3.5", From bafac13722689555b9175dd41e92c1e2e252e206 Mon Sep 17 00:00:00 2001 From: Jason Calabrese Date: Wed, 15 Apr 2015 22:34:41 -0700 Subject: [PATCH 3/3] don't let the client id get longer than 23 chars --- env.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/env.js b/env.js index ec6121305..58692857d 100644 --- a/env.js +++ b/env.js @@ -41,7 +41,8 @@ function config ( ) { var hostDbCollection = [env.mongo.split('mongodb://').pop().split('@').pop( ), env.mongo_collection].join('/'); var mongoHash = crypto.createHash('sha1'); mongoHash.update(hostDbCollection); - env.mqtt_client_id = mongoHash.digest('hex'); + //some MQTT servers only allow the client id to be 23 chars + env.mqtt_client_id = mongoHash.digest('base64').substring(0, 23); console.info('Using Mongo host/db/collection to create the default MQTT client_id', hostDbCollection); if (env.MQTT_MONITOR.indexOf('?clientId=') == -1) { console.info('Set MQTT client_id to: ', env.mqtt_client_id);