diff --git a/conference.js b/conference.js index c45c7d0d6..f453fb233 100644 --- a/conference.js +++ b/conference.js @@ -470,6 +470,11 @@ export default { */ localVideo: null, + /** + * The key used for End-To-End Encryption. + */ + e2eeKey: undefined, + /** * Creates local media tracks and connects to a room. Will show error * dialogs in case accessing the local microphone and/or camera failed. Will @@ -645,6 +650,8 @@ export default { init(options) { this.roomName = options.roomName; + window.addEventListener('hashchange', this.onHashChange.bind(this), false); + return ( // Initialize the device list first. This way, when creating tracks @@ -1177,6 +1184,31 @@ export default { })); }, + /** + * Handled location hash change events. + */ + onHashChange() { + const items = {}; + const parts = window.location.hash.substr(1).split('&'); + + for (const part of parts) { + const param = part.split('='); + const key = param[0]; + + if (!key) { + continue; // eslint-disable-line no-continue + } + + items[key] = param[1]; + } + + this.e2eeKey = items.e2eekey; + + logger.debug(`New E2EE key: ${this.e2eeKey}`); + + this._room.setE2EEKey(this.e2eeKey); + }, + /** * Exposes a Command(s) API on this instance. It is necessitated by (1) the * desire to keep room private to this instance and (2) the need of other diff --git a/package-lock.json b/package-lock.json index c691b22be..7d381edf8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2833,17 +2833,18 @@ } }, "@jitsi/sdp-interop": { - "version": "0.1.14", - "resolved": "https://registry.npmjs.org/@jitsi/sdp-interop/-/sdp-interop-0.1.14.tgz", - "integrity": "sha512-v60VAtBx9LO46c9In9oMNY+Ho5993UMOLHBg6VcrcyoVTIWIeqs/9YjjmrQ3Sf4I5aMRABNl7HTby/1lHcqFJw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@jitsi/sdp-interop/-/sdp-interop-1.0.1.tgz", + "integrity": "sha512-OJm8IYsJKCYJBlC0geRHm2VHi8ow2k/3wOZ7n0lEOBfV6RWghZQzQWHdT/qrkbXB2EHcm40Oy91a5Bfz2m6ydA==", "requires": { + "lodash.clonedeep": "4.5.0", "sdp-transform": "2.3.0" } }, "@jitsi/sdp-simulcast": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@jitsi/sdp-simulcast/-/sdp-simulcast-0.2.2.tgz", - "integrity": "sha512-zQt9DRnG/wn7bQg3nat0+G2yptBtuZuQN0iG5LHy4/wedyzV7HjEE73Zod69i7boZlRgvdjyexoaiwisrj9knw==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@jitsi/sdp-simulcast/-/sdp-simulcast-0.3.0.tgz", + "integrity": "sha512-lxHfIWgTvdVY7F7BOcC3OaFvyvLsQJVRBCQvfmz4/Pk21/FdCyeBW4gv9ogfxxisjarU8gPX7/up4Z3C17wuXw==", "requires": { "sdp-transform": "2.3.0" } @@ -10883,11 +10884,11 @@ } }, "lib-jitsi-meet": { - "version": "github:jitsi/lib-jitsi-meet#960eea3c5087ce07e9135fad70268c7d338e0de5", - "from": "github:jitsi/lib-jitsi-meet#960eea3c5087ce07e9135fad70268c7d338e0de5", + "version": "github:jitsi/lib-jitsi-meet#edfad5f51186d70c645c1c05ece88822c2486dc7", + "from": "github:jitsi/lib-jitsi-meet#edfad5f51186d70c645c1c05ece88822c2486dc7", "requires": { - "@jitsi/sdp-interop": "0.1.14", - "@jitsi/sdp-simulcast": "0.2.2", + "@jitsi/sdp-interop": "1.0.1", + "@jitsi/sdp-simulcast": "0.3.0", "async": "0.9.0", "current-executing-script": "0.1.3", "jitsi-meet-logger": "github:jitsi/jitsi-meet-logger#5ec92357570dc8f0b7ffc1528820721c84c6af8b", @@ -10896,7 +10897,7 @@ "sdp-transform": "2.3.0", "strophe.js": "1.3.4", "strophejs-plugin-disco": "0.0.2", - "strophejs-plugin-stream-management": "github:jitsi/strophejs-plugin-stream-management#cec7608601c1bc098543823fc658e3ddf758c009", + "strophejs-plugin-stream-management": "github:jitsi/strophejs-plugin-stream-management#e719a02b4f83856c1530882084a4b048ee622d45", "webrtc-adapter": "7.5.0" }, "dependencies": { @@ -10976,6 +10977,11 @@ "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", "dev": true }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" + }, "lodash.flatten": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", @@ -16879,8 +16885,8 @@ "integrity": "sha512-T9pJFzn1ZUqZ/we9+OvI5pFdrjeb4IBMbEjK+ZWEZV036wEl8l8GOtF8AJ3sIqOMtdIiFLdFu99JiGWd7yapAQ==" }, "strophejs-plugin-stream-management": { - "version": "github:jitsi/strophejs-plugin-stream-management#cec7608601c1bc098543823fc658e3ddf758c009", - "from": "github:jitsi/strophejs-plugin-stream-management#cec7608601c1bc098543823fc658e3ddf758c009" + "version": "github:jitsi/strophejs-plugin-stream-management#e719a02b4f83856c1530882084a4b048ee622d45", + "from": "github:jitsi/strophejs-plugin-stream-management#e719a02b4f83856c1530882084a4b048ee622d45" }, "style-loader": { "version": "0.19.0", diff --git a/package.json b/package.json index d5c2becb3..de5285a59 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ "js-utils": "github:jitsi/js-utils#0b2cef90613a74777fefd98d4ee3eda3879809ab", "jsrsasign": "8.0.12", "jwt-decode": "2.2.0", - "lib-jitsi-meet": "github:jitsi/lib-jitsi-meet#960eea3c5087ce07e9135fad70268c7d338e0de5", + "lib-jitsi-meet": "github:jitsi/lib-jitsi-meet#edfad5f51186d70c645c1c05ece88822c2486dc7", "libflacjs": "github:mmig/libflac.js#93d37e7f811f01cf7d8b6a603e38bd3c3810907d", "lodash": "4.17.13", "moment": "2.19.4",