From 416f105a319eda1eccefa03b2c4b8a7282765c70 Mon Sep 17 00:00:00 2001 From: Antoine Rondelet Date: Wed, 18 Jan 2017 12:06:50 +0100 Subject: [PATCH 1/5] Used mqtts with the azure bridge --- bridge.js | 21 ++++++++++++++++++++- index.js | 2 +- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/bridge.js b/bridge.js index ecc9966..31d95ca 100644 --- a/bridge.js +++ b/bridge.js @@ -1,4 +1,5 @@ 'use strict'; +const fs = require('fs'); const ttnazureiot = require('.'); @@ -12,7 +13,25 @@ const hubName = process.env.TTN_AZURE_HUBNAME; const keyName = process.env.TTN_AZURE_KEYNAME; const key = process.env.TTN_AZURE_KEY; -const bridge = new ttnazureiot.Bridge(region, appId, accessKey, hubName, keyName, key); +var options; + +try { + const mqttCertPath = process.env.TTN_MQTT_CERT; + if (!mqttCertPath) { + throw new Error('Could not find the ca certificate'); + } + options = { + protocol: 'mqtts', + ca: [ fs.readFileSync(mqttCertPath) ], + }; +} +catch(err) { + options = {}; + console.warn('Could not connect using TLS %s', err); + console.warn("Fallback to a non-secure connection"); +} + +const bridge = new ttnazureiot.Bridge(region, appId, accessKey, hubName, keyName, key, options); bridge.on('ttn-connect', () => { console.log('TTN connected'); diff --git a/index.js b/index.js index ac0cea5..4e3e2be 100644 --- a/index.js +++ b/index.js @@ -33,7 +33,7 @@ const Bridge = class Bridge extends EventEmitter { this.deviceConnectionString = util.format(DEVICE_CONNECTION_STRING, hubName); this.devices = {}; - this.ttnClient = new ttn.Client(region, appId, accessKey); + this.ttnClient = new ttn.Client(region, appId, accessKey, options); this.ttnClient.on('connect', super.emit.bind(this, 'ttn-connect')); this.ttnClient.on('error', super.emit.bind(this, 'error')); this.ttnClient.on('message', this._handleMessage.bind(this)); From 89bf7a4d06545e8f972eaee2b3118250ae25d5f1 Mon Sep 17 00:00:00 2001 From: Antoine Rondelet Date: Wed, 18 Jan 2017 17:06:53 +0100 Subject: [PATCH 2/5] Added fallback to hardcoded path for the TLS certificate --- bridge.js | 23 +++++------------------ 1 file changed, 5 insertions(+), 18 deletions(-) diff --git a/bridge.js b/bridge.js index 31d95ca..e91bb29 100644 --- a/bridge.js +++ b/bridge.js @@ -1,6 +1,5 @@ 'use strict'; const fs = require('fs'); - const ttnazureiot = require('.'); // TTN related settings @@ -13,23 +12,11 @@ const hubName = process.env.TTN_AZURE_HUBNAME; const keyName = process.env.TTN_AZURE_KEYNAME; const key = process.env.TTN_AZURE_KEY; -var options; - -try { - const mqttCertPath = process.env.TTN_MQTT_CERT; - if (!mqttCertPath) { - throw new Error('Could not find the ca certificate'); - } - options = { - protocol: 'mqtts', - ca: [ fs.readFileSync(mqttCertPath) ], - }; -} -catch(err) { - options = {}; - console.warn('Could not connect using TLS %s', err); - console.warn("Fallback to a non-secure connection"); -} +const mqttCertPath = process.env.TTN_MQTT_CERT || '/etc/ttn/mqtt-ca.pem' +var options = { + protocol: 'mqtts', + ca: [ fs.readFileSync(mqttCertPath) ], +}; const bridge = new ttnazureiot.Bridge(region, appId, accessKey, hubName, keyName, key, options); From cc46f1b44fc447791ce76c90f1447a4e141a6060 Mon Sep 17 00:00:00 2001 From: Antoine Rondelet Date: Thu, 19 Jan 2017 17:57:56 +0100 Subject: [PATCH 3/5] Fixed code style --- bridge.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/bridge.js b/bridge.js index e91bb29..820fabb 100644 --- a/bridge.js +++ b/bridge.js @@ -1,4 +1,5 @@ 'use strict'; + const fs = require('fs'); const ttnazureiot = require('.'); @@ -12,10 +13,10 @@ const hubName = process.env.TTN_AZURE_HUBNAME; const keyName = process.env.TTN_AZURE_KEYNAME; const key = process.env.TTN_AZURE_KEY; -const mqttCertPath = process.env.TTN_MQTT_CERT || '/etc/ttn/mqtt-ca.pem' +const mqttCertPath = process.env.TTN_MQTT_CERT || '/etc/ttn/mqtt-ca.pem'; var options = { protocol: 'mqtts', - ca: [ fs.readFileSync(mqttCertPath) ], + ca: fs.readFileSync(mqttCertPath), }; const bridge = new ttnazureiot.Bridge(region, appId, accessKey, hubName, keyName, key, options); From e5df1e625bb9343b7084a27d13de3b4b2f7f77f9 Mon Sep 17 00:00:00 2001 From: Antoine Rondelet Date: Thu, 19 Jan 2017 18:03:13 +0100 Subject: [PATCH 4/5] Added mqtt certificate --- mqtt-ca.pem | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 mqtt-ca.pem diff --git a/mqtt-ca.pem b/mqtt-ca.pem new file mode 100644 index 0000000..97cc21d --- /dev/null +++ b/mqtt-ca.pem @@ -0,0 +1,62 @@ +-----BEGIN CERTIFICATE----- +MIIE+jCCAuKgAwIBAgIUNXv27BzXBuxjtmr6TnoRV4b5+EEwDQYJKoZIhvcNAQEN +BQAwezELMAkGA1UEBhMCTkwxFjAUBgNVBAgTDU5vb3JkLUhvbGxhbmQxEjAQBgNV +BAcTCUFtc3RlcmRhbTEbMBkGA1UEChMSVGhlIFRoaW5ncyBOZXR3b3JrMSMwIQYD +VQQDExpUaGUgVGhpbmdzIE5ldHdvcmsgUm9vdCBDQTAeFw0xNjEwMTAwODQzMDBa +Fw0xNzEwMTAwODQzMDBaMIGKMQswCQYDVQQGEwJOTDEWMBQGA1UECBMNTm9vcmQt +SG9sbGFuZDESMBAGA1UEBxMJQW1zdGVyZGFtMRswGQYDVQQKExJUaGUgVGhpbmdz +IE5ldHdvcmsxDTALBgNVBAsTBE1RVFQxIzAhBgNVBAMTGlRoZSBUaGluZ3MgTmV0 +d29yayBNUVRUIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv72d +Do/aXgmbLxJ6h2iVPlUk+3m3WhyZ2p1BTSygzfEoQZepGC4JwJFUEiGhZdfn4448 +FB16DcJ5ansr9FFVbpIdi2x1Y+WE8wTH/XnFZ3LQ7gMx7HDfzMYiMP7ocMwKLA7N +xd3ceIRAR3xMMJUJydfjhxx8Gj5rcC86GKhvtc33MxHSDXNvCM5/hRz/laLeIzHI +nkMxHl5zMnCoVxbg+CNYnRMF0flUPf0Yhb9EtIZV0QvG+5oBaFIoHr/Kv2fJx4Qw +kMP4197xCbZxpC/s5DUhk7vZdmZRrwilcrbEaUWgqN8fQ3GILTuIKWnHtlB6cwEo +YGGgrdvcKX6AP8B5JQIDAQABo2YwZDAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/ +BAgwBgEB/wIBADAdBgNVHQ4EFgQUdaqNDpzWtaOr2HZd+j1SPRT2yo4wHwYDVR0j +BBgwFoAUm7XlplsQ/P3aiBhhDvKNczKVVCwwDQYJKoZIhvcNAQENBQADggIBACz0 +HcAgXZI7xVjhGlxryJbVlm9ZUX/Dy8gBhUIrqa0r5fr85u31BAxkkn+SPm1XnEXK +AzpUIqwLOlpwirxe4IApRmTGyX1pVRAtmq9tN9dvsi8hTGRJ6RJfJXZy3zZPVAt4 +n7KfY5ktg5P5ltMkgpxoJuy4uyxZduI+mQmoh5IXVXtLkdOD7niffHKB3vDED9Om +HgYcTJ522NroIDXaiquq1Bpe28BjSf1F2hpzOrEl1uis1dt8jMCPGz8v5+vRNjsi +P0AdRNnDRwStu0pDRazo4DOmli+ZOcYt4AaltPOP3X017iV3Bnkwa1cUsDiql1h9 +3dIYqvjfKwMSvEvUsWDaDtReKga5F+duT7UGwYRlh3W05IjL75AfFOsznX1uyCgX +J3kC7eBhOaxdR/mLzVj32eN0VrVWiLvz7z5Do2vt63/KXRApAhZlyHTO5GH3gV+K +d/gq/dft2A5B0zzvmVpUD/bO1HAR2FxclrvmgRp1Rg5qigfORNPDoxayjPVQUWXN +DDAcSikV1weZukLQwH1aIoCK3US6fWr9dNB7c+0XGgTmiVzMiObyba+XfncHq/fo +9WJ+Z8Bk+ZG6x1x1KYD403JwFUoRZeiWYA4RsnBIHJLM9E9Y5LpY/gNc1Mr6p/La +7gN2elJLRScehE7eWTJVFI2dgtC22URYVQ8Rf6Z7 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFxjCCA66gAwIBAgIUYglOVgizR4PLOIaeglDK70V1YOYwDQYJKoZIhvcNAQEN +BQAwezELMAkGA1UEBhMCTkwxFjAUBgNVBAgTDU5vb3JkLUhvbGxhbmQxEjAQBgNV +BAcTCUFtc3RlcmRhbTEbMBkGA1UEChMSVGhlIFRoaW5ncyBOZXR3b3JrMSMwIQYD +VQQDExpUaGUgVGhpbmdzIE5ldHdvcmsgUm9vdCBDQTAeFw0xNjEwMTAwODMyMDBa +Fw0yMTEwMDkwODMyMDBaMHsxCzAJBgNVBAYTAk5MMRYwFAYDVQQIEw1Ob29yZC1I +b2xsYW5kMRIwEAYDVQQHEwlBbXN0ZXJkYW0xGzAZBgNVBAoTElRoZSBUaGluZ3Mg +TmV0d29yazEjMCEGA1UEAxMaVGhlIFRoaW5ncyBOZXR3b3JrIFJvb3QgQ0EwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDn/+zjmsJEHitHhkBEvHabcYkH +Dw/EODuDpfNA/2b8Bby/aGD1wkBpcfco/UNH7e0VYdbmTtxsKsYPbjlaZhTlxB9o +CHwWGU1ox78m90CyArA82WJf+kUM/Sm2otawml2LyZMyv977oIf578wXgVWD19DD +M/Ys+NEHhS38L6vPH2SFxlyDiim917X6N9ugUnRLTIxPh0ItDnceXTJlhBcgI4ei +YlaG4bXdVlUIG7kIV5jsGMDI7udRnZO7qc9U5glkiA+sIuosN7K9mJr+xCLjTvEv +nIGtnw+jcr7VZLXugHUPFyCEa1qFOxwnpvkcXJXfy7Aj1GEpd0VWyA9IAqRRIIc2 +PoZae/D8f88u9E1CczZ2UcHw3tezR/0CbpUxwd+A0xmGc05vPzFp2XIarGSdPHOg +Ju7QHpd7w96R483vcOS9QvJsvVOrqsCaSDj9prJ6vDB9GjEQ59fOzLHXsyjNvL6o +CNj0+zPFozC8hOmVToQKa49H0O+gc7MAgu/FqAFeHv+597zDqWR9ndGK2+hTuuh4 +iLmmE6CCtLxgiBM8eioaVIlfguA/rSXECFFrWMRUnhsTfA1TskZ2N9gMRXAr+brq +zlUTLW9ItAQXJwB8RmdvvcxTRrVkudTlI4QPL6Dco8JiW3K6Qz1APvEM1xus8IH1 +IwcTj/20HjQnBAiaUQIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQUm7XlplsQ/P3aiBhhDvKNczKVVCwwDQYJKoZIhvcN +AQENBQADggIBAIxVNQuKWD1sb7F9u6FitraO+dAA9y0vNhMC32gs2z7M2n0GHZGD +zXcOYe9u4IGaB5uSs1MbjTe3NcElvjOPbqqxbIy7SP7aAoscqL4DF6tjD6ajAP2U +wtxIcgVyrV3L7owN2KHHxY4jHfeOzB5RicfjZS50icegT4wfeGnJ43zaXoFsKhev +di4BitML2ytrIGZw3FFJWJuFV2K9fWakVSxUfgCBKHUvwdaUmSzFz/koJ35wBeYV +5N+aWaKa8xuzHqM2u/LpmiCDgQpcCTgQSsSl7qDMgwvNZtcDQ2ilWdYt68sT5mw/ +v+g5JPHec9Goh1vBNfiHFK6tndgFsrScUnHtlK+jhxAgEa2o6H05ZsEA5x+O/WEN +i72Gy3OGcpHrJ8FLDho5So6bAYx4JoeDNe7sX9yD0Fgu/yLl3XRgQYOiQ5J4dkrl +/Wj6sant6hvOFaLkbAWtRutSBbTBxPPx2LvQ6I95h9nzZuN4INM+FrWp6i01X5gf +AhefWT7fVFpM6GvhJW3l9q1zPYYIuevm2f+l9O36RFu+Hk80fVPblo58KMNWFuPh +bqh+rSw71+gDcFNg3Fue2zTDI7scgbt7gZoE3KIiNNliVVQXEb6Js0tnZqag/Gf4 +bwtz3ZK2HvGI4z8XfRPP29HRP5em3euzF6Lxtx3s/ksNfb1HbKv3xEb2 +-----END CERTIFICATE----- From c4c5e1249a9dfaa98fdb5d026f559d2354c84231 Mon Sep 17 00:00:00 2001 From: Johan Stokking Date: Fri, 20 Jan 2017 10:30:53 +0100 Subject: [PATCH 5/5] Consistent quotes --- bridge.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bridge.js b/bridge.js index 820fabb..d659254 100644 --- a/bridge.js +++ b/bridge.js @@ -1,4 +1,4 @@ -'use strict'; +"use strict"; const fs = require('fs'); const ttnazureiot = require('.');