From 3f4642d49af70af90406d885d3b207acb33256a5 Mon Sep 17 00:00:00 2001 From: Evan Theurer Date: Thu, 5 Nov 2015 10:29:10 +0100 Subject: [PATCH 01/15] Add new server flag. --- server.conf.in | 2 ++ src/app/spreed-webrtc-server/config.go | 18 ++++++++++-------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/server.conf.in b/server.conf.in index b57031a7..94fb850d 100644 --- a/server.conf.in +++ b/server.conf.in @@ -57,6 +57,8 @@ listen = 127.0.0.1:8080 ; See http://tools.ietf.org/html/draft-uberti-behave-turn-rest-00 for details. ; A supported TURN server is https://code.google.com/p/rfc5766-turn-server/. ;turnSecret = the-default-turn-shared-secret-do-not-keep +; Enable adding TURN servers inside of the clientside webui under settings +;turnURIsClientSideSetable = false ; Enable renegotiation support. Set to true to tell clients that they can ; renegotiate peer connections when required. Firefox support is not complete, ; so do not enable if you want compatibility with Firefox clients. diff --git a/src/app/spreed-webrtc-server/config.go b/src/app/spreed-webrtc-server/config.go index 89a14c54..57e23a03 100644 --- a/src/app/spreed-webrtc-server/config.go +++ b/src/app/spreed-webrtc-server/config.go @@ -39,6 +39,7 @@ type Config struct { Renegotiation bool // Renegotiation flag StunURIs []string // STUN server URIs TurnURIs []string // TURN server URIs + TurnURIsClientSideSetable bool // Enable TURN server customization under settings in web ui Tokens bool // True when we got a tokens file Version string // Server version number UsersEnabled bool // Flag if users are enabled @@ -108,14 +109,15 @@ func NewConfig(container phoenix.Container, tokens bool) *Config { log.Println("Enabled modules:", modules) return &Config{ - Title: container.GetStringDefault("app", "title", "Spreed WebRTC"), - ver: ver, - S: fmt.Sprintf("static/ver=%s", ver), - B: basePath, - Token: serverToken, - Renegotiation: container.GetBoolDefault("app", "renegotiation", false), - StunURIs: stunURIs, - TurnURIs: turnURIs, + Title: container.GetStringDefault("app", "title", "Spreed WebRTC"), + ver: ver, + S: fmt.Sprintf("static/ver=%s", ver), + B: basePath, + Token: serverToken, + Renegotiation: container.GetBoolDefault("app", "renegotiation", false), + StunURIs: stunURIs, + TurnURIs: turnURIs, + TurnURIsClientSideSetable: container.GetBoolDefault("app", "turnClientSideSetable", true), Tokens: tokens, Version: version, UsersEnabled: container.GetBoolDefault("users", "enabled", false), From dfd337de775c8d81a26266d5c5948cce3b84065c Mon Sep 17 00:00:00 2001 From: Evan Theurer Date: Thu, 5 Nov 2015 13:54:19 +0100 Subject: [PATCH 02/15] Add support for adding a custom turn server under settings. --- static/js/controllers/appcontroller.js | 7 +++++++ static/js/directives/settings.js | 15 +++++++++++++++ static/partials/settings.html | 23 ++++++++++++++++++++++- 3 files changed, 44 insertions(+), 1 deletion(-) diff --git a/static/js/controllers/appcontroller.js b/static/js/controllers/appcontroller.js index e97b9ef6..0f226cc0 100644 --- a/static/js/controllers/appcontroller.js +++ b/static/js/controllers/appcontroller.js @@ -56,6 +56,13 @@ define(["jquery", "angular", "underscore"], function($, angular, _) { videoLeakyBucket: true, videoNoiseReduction: false }, + webrtc: { + turn: { + urls: ['turn:turnserver:port?transport=udp', 'turn:turnserver:port?transport=tcp'], + username: 'myusername', + password: 'the-default-turn-secret-do-not-keep' + } + }, sound: { incomingMessages: true, incomingCall: true, diff --git a/static/js/directives/settings.js b/static/js/directives/settings.js index 43c9f9a2..075a5c38 100644 --- a/static/js/directives/settings.js +++ b/static/js/directives/settings.js @@ -70,6 +70,18 @@ define(['jquery', 'underscore', 'text!partials/settings.html'], function($, _, t $scope.withUsers = mediaStream.config.UsersEnabled; $scope.withUsersRegistration = mediaStream.config.UsersAllowRegistration; $scope.withUsersMode = mediaStream.config.UsersMode; + $scope.withTurnCustomizable = mediaStream.config.TurnURIsClientSideSetable; + + var updateTurnSettings = function() { + constraints.turn($scope.user.settings.webrtc.turn); + }; + + if ($scope.withTurnCustomizable && $scope.user.settings.webrtc.turn.urls) { + // Overwrite server Turn settings + appData.e.one("userSettingsLoaded", function() { + updateTurnSettings(); + }); + } _.each(availableLanguages, function(name, code) { $scope.availableLanguages.push({ @@ -90,6 +102,9 @@ define(['jquery', 'underscore', 'text!partials/settings.html'], function($, _, t if (form.$valid && form.$dirty) { var user = $scope.user; $scope.update(user); + if ($scope.withTurnCustomizable) { + updateTurnSettings(); + } if ($scope.rememberSettings) { userSettingsData.save(user); localStorage.setItem("mediastream-language", user.settings.language || ""); diff --git a/static/partials/settings.html b/static/partials/settings.html index 9d064763..129edad1 100644 --- a/static/partials/settings.html +++ b/static/partials/settings.html @@ -283,6 +283,27 @@ +
+
+ +
+   +
+
+
+ +
+   +
+
+
+ +
+   +
+
+
+ @@ -314,4 +335,4 @@ - \ No newline at end of file + From fb675b513e2d188c7ffa1e091a90389cced28fa5 Mon Sep 17 00:00:00 2001 From: Evan Theurer Date: Thu, 5 Nov 2015 14:36:56 +0100 Subject: [PATCH 03/15] Update turn settings. --- static/partials/settings.html | 40 +++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/static/partials/settings.html b/static/partials/settings.html index 129edad1..e3728a94 100644 --- a/static/partials/settings.html +++ b/static/partials/settings.html @@ -283,25 +283,29 @@ -
-
- -
-   -
-
-
- -
-   -
-
-
- -
-   +
+ {{_('Turn')}} +
+
+ +
+ + Comma separated list of urls +
+
+
+ +
+ +
+
+
+ +
+ +
+
-
From 4d9b851e6d8c9ff454272306fcd3d3a033abac88 Mon Sep 17 00:00:00 2001 From: Evan Theurer Date: Thu, 5 Nov 2015 15:23:40 +0100 Subject: [PATCH 04/15] Update turn template. --- static/js/controllers/appcontroller.js | 6 +++--- static/partials/settings.html | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/static/js/controllers/appcontroller.js b/static/js/controllers/appcontroller.js index 0f226cc0..bc35d1ac 100644 --- a/static/js/controllers/appcontroller.js +++ b/static/js/controllers/appcontroller.js @@ -58,9 +58,9 @@ define(["jquery", "angular", "underscore"], function($, angular, _) { }, webrtc: { turn: { - urls: ['turn:turnserver:port?transport=udp', 'turn:turnserver:port?transport=tcp'], - username: 'myusername', - password: 'the-default-turn-secret-do-not-keep' + urls: [], + username: '', + password: '' } }, sound: { diff --git a/static/partials/settings.html b/static/partials/settings.html index e3728a94..8bb9bcf8 100644 --- a/static/partials/settings.html +++ b/static/partials/settings.html @@ -283,26 +283,26 @@
-
+
{{_('Turn')}} -
+
- Comma separated list of urls + {{_('Comma separated list of urls')}}
- +
- +
From d847bb73e3087143db6a956bec24982b000dfa4f Mon Sep 17 00:00:00 2001 From: Evan Theurer Date: Thu, 5 Nov 2015 16:28:03 +0100 Subject: [PATCH 05/15] Create turnSettings service to correctly prefer cient or server TURN configuration. --- static/js/directives/settings.js | 19 ++------ static/js/mediastream/api.js | 2 +- static/js/services/constraints.js | 4 +- static/js/services/services.js | 9 ++-- static/js/services/turnsettings.js | 76 ++++++++++++++++++++++++++++++ 5 files changed, 89 insertions(+), 21 deletions(-) create mode 100644 static/js/services/turnsettings.js diff --git a/static/js/directives/settings.js b/static/js/directives/settings.js index 075a5c38..4cbfe48b 100644 --- a/static/js/directives/settings.js +++ b/static/js/directives/settings.js @@ -55,7 +55,7 @@ define(['jquery', 'underscore', 'text!partials/settings.html'], function($, _, t return ["$compile", "mediaStream", function($compile, mediaStream) { - var controller = ['$scope', 'desktopNotify', 'mediaSources', 'safeApply', 'availableLanguages', 'translation', 'localStorage', 'userSettingsData', 'constraints', 'appData', '$timeout', function($scope, desktopNotify, mediaSources, safeApply, availableLanguages, translation, localStorage, userSettingsData, constraints, appData, $timeout) { + var controller = ['$scope', 'desktopNotify', 'mediaSources', 'safeApply', 'availableLanguages', 'translation', 'localStorage', 'userSettingsData', 'constraints', 'appData', '$timeout', 'turnSettings', function($scope, desktopNotify, mediaSources, safeApply, availableLanguages, translation, localStorage, userSettingsData, constraints, appData, $timeout, turnSettings) { $scope.layout.settings = false; $scope.showAdvancedSettings = true; @@ -70,18 +70,7 @@ define(['jquery', 'underscore', 'text!partials/settings.html'], function($, _, t $scope.withUsers = mediaStream.config.UsersEnabled; $scope.withUsersRegistration = mediaStream.config.UsersAllowRegistration; $scope.withUsersMode = mediaStream.config.UsersMode; - $scope.withTurnCustomizable = mediaStream.config.TurnURIsClientSideSetable; - - var updateTurnSettings = function() { - constraints.turn($scope.user.settings.webrtc.turn); - }; - - if ($scope.withTurnCustomizable && $scope.user.settings.webrtc.turn.urls) { - // Overwrite server Turn settings - appData.e.one("userSettingsLoaded", function() { - updateTurnSettings(); - }); - } + $scope.withTurnCustomizable = turnSettings.showClientSideTurnOptions(); _.each(availableLanguages, function(name, code) { $scope.availableLanguages.push({ @@ -102,9 +91,7 @@ define(['jquery', 'underscore', 'text!partials/settings.html'], function($, _, t if (form.$valid && form.$dirty) { var user = $scope.user; $scope.update(user); - if ($scope.withTurnCustomizable) { - updateTurnSettings(); - } + turnSettings.update($scope.user.settings.webrtc.turn); if ($scope.rememberSettings) { userSettingsData.save(user); localStorage.setItem("mediastream-language", user.settings.language || ""); diff --git a/static/js/mediastream/api.js b/static/js/mediastream/api.js index 058b523c..4cb09f02 100644 --- a/static/js/mediastream/api.js +++ b/static/js/mediastream/api.js @@ -151,7 +151,7 @@ define(['jquery', 'underscore', 'ua-parser'], function($, _, uaparser) { switch (dataType) { case "Self": - //console.log("Self received", data); + console.log("Self received", data); if (data.Token) { this.connector.token = data.Token; } diff --git a/static/js/services/constraints.js b/static/js/services/constraints.js index eefb8c5a..6dbf409d 100644 --- a/static/js/services/constraints.js +++ b/static/js/services/constraints.js @@ -143,6 +143,7 @@ iceServers.push(createIceServers(service.stun)); } if (service.turn && service.turn.urls && service.turn.urls.length) { + console.log('iceServers', service.turn); iceServers.push(createIceServers(service.turn.urls, service.turn.username, service.turn.password)); } webrtc.settings.pcConfig.iceServers = iceServers; @@ -185,6 +186,7 @@ // Setters for TURN and STUN data. turn: function(turnData) { service.turn = turnData; + console.log("turnData", service.turn); }, stun: function(stunData) { service.stun = stunData; @@ -211,4 +213,4 @@ }]; - }); \ No newline at end of file + }); diff --git a/static/js/services/services.js b/static/js/services/services.js index 4fa9919a..35a1abe3 100644 --- a/static/js/services/services.js +++ b/static/js/services/services.js @@ -70,7 +70,8 @@ define([ 'services/mediadevices', 'services/sandbox', 'services/dummystream', - 'services/usermedia'], function(_, + 'services/usermedia', + 'services/turnsettings'], function(_, desktopNotify, playSound, safeApply, @@ -118,7 +119,8 @@ modules, mediaDevices, sandbox, dummyStream, -userMedia) { +userMedia, +turnSettings) { var services = { desktopNotify: desktopNotify, @@ -168,7 +170,8 @@ userMedia) { mediaDevices: mediaDevices, sandbox: sandbox, dummyStream: dummyStream, - userMedia: userMedia + userMedia: userMedia, + turnSettings: turnSettings }; var initialize = function(angModule) { diff --git a/static/js/services/turnsettings.js b/static/js/services/turnsettings.js new file mode 100644 index 00000000..a2466b27 --- /dev/null +++ b/static/js/services/turnsettings.js @@ -0,0 +1,76 @@ +/* + * Spreed WebRTC. + * Copyright (C) 2013-2015 struktur AG + * + * This file is part of Spreed WebRTC. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + +define(["angular"], function(angular) { + "use strict"; + + /** + * turnSettings + * Service to correctly sync client and server side TURN settings to contraints.js + * See contraints.js for actual TURN configuration in use for a connection + */ + return ['mediaStream', 'appData', 'constraints', function(mediaStream, appData, constraints) { + + var preferClientSideTurnSettings = mediaStream.config.TurnURIsClientSideSetable; + var turnConfigServer = null; + + /** + * @param Object config Turn configuration object + * @param Array config.urls + * @param String config.username + * @param String config.password + */ + var updateTurnSettings = function(config) { + if (!preferClientSideTurnSettings) { + return; + } + if (config.urls.length) { + constraints.turn(config); + // Apply original server side TURN settings when user removes client side TURN settings + } else if (turnConfigServer && turnConfigServer.urls.length) { + constraints.turn(turnConfigServer); + } + }; + + if (preferClientSideTurnSettings) { + // Overwrite server Turn settings when loading app + appData.e.one("userSettingsLoaded", function(event, loadedUser, user) { + if (user) { + updateTurnSettings(user.settings.webrtc.turn); + } + }); + // Set server side TURN settings + mediaStream.api.e.on("received.self", function(event, data) { + if (data.Turn && data.Turn.urls.length) { + turnConfigServer = data.Turn; + } + }); + } + + return { + showClientSideTurnOptions: function() { + return preferClientSideTurnSettings; + }, + update: updateTurnSettings + }; + + }]; +}); From 4df80a6ecac222ba75c13a964a272c7aa532a68f Mon Sep 17 00:00:00 2001 From: Evan Theurer Date: Thu, 5 Nov 2015 16:47:26 +0100 Subject: [PATCH 06/15] Update comments and condition check. --- static/js/services/turnsettings.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/static/js/services/turnsettings.js b/static/js/services/turnsettings.js index a2466b27..995a8cda 100644 --- a/static/js/services/turnsettings.js +++ b/static/js/services/turnsettings.js @@ -51,15 +51,15 @@ define(["angular"], function(angular) { }; if (preferClientSideTurnSettings) { - // Overwrite server Turn settings when loading app + // Overwrite server Turn settings with user settings when loading app appData.e.one("userSettingsLoaded", function(event, loadedUser, user) { if (user) { updateTurnSettings(user.settings.webrtc.turn); } }); - // Set server side TURN settings + // Get server site TURN settings mediaStream.api.e.on("received.self", function(event, data) { - if (data.Turn && data.Turn.urls.length) { + if (data.Turn.urls && data.Turn.urls.length) { turnConfigServer = data.Turn; } }); From 4d61a940ac1c9066fd15c72f6c6e7d87af349c95 Mon Sep 17 00:00:00 2001 From: Evan Theurer Date: Thu, 5 Nov 2015 17:01:52 +0100 Subject: [PATCH 07/15] Fix server configuration flag. --- src/app/spreed-webrtc-server/config.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/spreed-webrtc-server/config.go b/src/app/spreed-webrtc-server/config.go index 57e23a03..a815f0fa 100644 --- a/src/app/spreed-webrtc-server/config.go +++ b/src/app/spreed-webrtc-server/config.go @@ -117,7 +117,7 @@ func NewConfig(container phoenix.Container, tokens bool) *Config { Renegotiation: container.GetBoolDefault("app", "renegotiation", false), StunURIs: stunURIs, TurnURIs: turnURIs, - TurnURIsClientSideSetable: container.GetBoolDefault("app", "turnClientSideSetable", true), + TurnURIsClientSideSetable: container.GetBoolDefault("app", "turnURIsClientSideSetable", false), Tokens: tokens, Version: version, UsersEnabled: container.GetBoolDefault("users", "enabled", false), From bf0ac08a88065a35d2c4f4e74b2e6015861fe173 Mon Sep 17 00:00:00 2001 From: Evan Theurer Date: Thu, 5 Nov 2015 17:04:49 +0100 Subject: [PATCH 08/15] Improve server flag name. --- server.conf.in | 4 ++-- src/app/spreed-webrtc-server/config.go | 20 ++++++++++---------- static/js/mediastream/api.js | 2 +- static/js/services/constraints.js | 4 +--- static/js/services/turnsettings.js | 2 +- 5 files changed, 15 insertions(+), 17 deletions(-) diff --git a/server.conf.in b/server.conf.in index 94fb850d..77a27e18 100644 --- a/server.conf.in +++ b/server.conf.in @@ -57,8 +57,8 @@ listen = 127.0.0.1:8080 ; See http://tools.ietf.org/html/draft-uberti-behave-turn-rest-00 for details. ; A supported TURN server is https://code.google.com/p/rfc5766-turn-server/. ;turnSecret = the-default-turn-shared-secret-do-not-keep -; Enable adding TURN servers inside of the clientside webui under settings -;turnURIsClientSideSetable = false +; Enable adding TURN servers inside of the client side webui under settings +;turnClientSideSetable = false ; Enable renegotiation support. Set to true to tell clients that they can ; renegotiate peer connections when required. Firefox support is not complete, ; so do not enable if you want compatibility with Firefox clients. diff --git a/src/app/spreed-webrtc-server/config.go b/src/app/spreed-webrtc-server/config.go index a815f0fa..6cfa1b2f 100644 --- a/src/app/spreed-webrtc-server/config.go +++ b/src/app/spreed-webrtc-server/config.go @@ -39,7 +39,7 @@ type Config struct { Renegotiation bool // Renegotiation flag StunURIs []string // STUN server URIs TurnURIs []string // TURN server URIs - TurnURIsClientSideSetable bool // Enable TURN server customization under settings in web ui + TurnClientSideSetable bool // Enable TURN server customization under settings in web ui Tokens bool // True when we got a tokens file Version string // Server version number UsersEnabled bool // Flag if users are enabled @@ -109,15 +109,15 @@ func NewConfig(container phoenix.Container, tokens bool) *Config { log.Println("Enabled modules:", modules) return &Config{ - Title: container.GetStringDefault("app", "title", "Spreed WebRTC"), - ver: ver, - S: fmt.Sprintf("static/ver=%s", ver), - B: basePath, - Token: serverToken, - Renegotiation: container.GetBoolDefault("app", "renegotiation", false), - StunURIs: stunURIs, - TurnURIs: turnURIs, - TurnURIsClientSideSetable: container.GetBoolDefault("app", "turnURIsClientSideSetable", false), + Title: container.GetStringDefault("app", "title", "Spreed WebRTC"), + ver: ver, + S: fmt.Sprintf("static/ver=%s", ver), + B: basePath, + Token: serverToken, + Renegotiation: container.GetBoolDefault("app", "renegotiation", false), + StunURIs: stunURIs, + TurnURIs: turnURIs, + TurnClientSideSetable: container.GetBoolDefault("app", "turnClientSideSetable", false), Tokens: tokens, Version: version, UsersEnabled: container.GetBoolDefault("users", "enabled", false), diff --git a/static/js/mediastream/api.js b/static/js/mediastream/api.js index 4cb09f02..058b523c 100644 --- a/static/js/mediastream/api.js +++ b/static/js/mediastream/api.js @@ -151,7 +151,7 @@ define(['jquery', 'underscore', 'ua-parser'], function($, _, uaparser) { switch (dataType) { case "Self": - console.log("Self received", data); + //console.log("Self received", data); if (data.Token) { this.connector.token = data.Token; } diff --git a/static/js/services/constraints.js b/static/js/services/constraints.js index 6dbf409d..eefb8c5a 100644 --- a/static/js/services/constraints.js +++ b/static/js/services/constraints.js @@ -143,7 +143,6 @@ iceServers.push(createIceServers(service.stun)); } if (service.turn && service.turn.urls && service.turn.urls.length) { - console.log('iceServers', service.turn); iceServers.push(createIceServers(service.turn.urls, service.turn.username, service.turn.password)); } webrtc.settings.pcConfig.iceServers = iceServers; @@ -186,7 +185,6 @@ // Setters for TURN and STUN data. turn: function(turnData) { service.turn = turnData; - console.log("turnData", service.turn); }, stun: function(stunData) { service.stun = stunData; @@ -213,4 +211,4 @@ }]; - }); + }); \ No newline at end of file diff --git a/static/js/services/turnsettings.js b/static/js/services/turnsettings.js index 995a8cda..4401394c 100644 --- a/static/js/services/turnsettings.js +++ b/static/js/services/turnsettings.js @@ -29,7 +29,7 @@ define(["angular"], function(angular) { */ return ['mediaStream', 'appData', 'constraints', function(mediaStream, appData, constraints) { - var preferClientSideTurnSettings = mediaStream.config.TurnURIsClientSideSetable; + var preferClientSideTurnSettings = mediaStream.config.TurnClientSideSetable; var turnConfigServer = null; /** From e759ee598dd49a1cd4f549939afaf36b5987dbb6 Mon Sep 17 00:00:00 2001 From: Evan Theurer Date: Tue, 5 Jan 2016 16:44:14 +0100 Subject: [PATCH 09/15] Remove unused angularjs dep. --- static/js/services/turnsettings.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/js/services/turnsettings.js b/static/js/services/turnsettings.js index 4401394c..84b69a00 100644 --- a/static/js/services/turnsettings.js +++ b/static/js/services/turnsettings.js @@ -19,7 +19,7 @@ * */ -define(["angular"], function(angular) { +define([], function() { "use strict"; /** From a84b0ecbc9b028e703939f565d7a373bf597ef2c Mon Sep 17 00:00:00 2001 From: Evan Theurer Date: Tue, 5 Jan 2016 16:49:37 +0100 Subject: [PATCH 10/15] Update comment syntax. --- static/js/services/turnsettings.js | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/static/js/services/turnsettings.js b/static/js/services/turnsettings.js index 84b69a00..3af99dc6 100644 --- a/static/js/services/turnsettings.js +++ b/static/js/services/turnsettings.js @@ -22,22 +22,18 @@ define([], function() { "use strict"; - /** - * turnSettings - * Service to correctly sync client and server side TURN settings to contraints.js - * See contraints.js for actual TURN configuration in use for a connection - */ + // turnSettings + // Service to correctly sync client and server side TURN settings to contraints.js + // See contraints.js for actual TURN configuration in use for a connection return ['mediaStream', 'appData', 'constraints', function(mediaStream, appData, constraints) { var preferClientSideTurnSettings = mediaStream.config.TurnClientSideSetable; var turnConfigServer = null; - /** - * @param Object config Turn configuration object - * @param Array config.urls - * @param String config.username - * @param String config.password - */ + // @param Object config Turn configuration object + // @param Array config.urls + // @param String config.username + // @param String config.password var updateTurnSettings = function(config) { if (!preferClientSideTurnSettings) { return; From 3b2e96d51855a2671e2176b01a0947267a5ada57 Mon Sep 17 00:00:00 2001 From: Evan Theurer Date: Thu, 7 Jan 2016 10:18:13 +0100 Subject: [PATCH 11/15] Unify feauture names to clientSideTurn. --- server.conf.in | 2 +- src/app/spreed-webrtc-server/config.go | 4 ++-- static/js/directives/settings.js | 2 +- static/js/services/turnsettings.js | 8 ++++---- static/partials/settings.html | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/server.conf.in b/server.conf.in index 77a27e18..231f4411 100644 --- a/server.conf.in +++ b/server.conf.in @@ -58,7 +58,7 @@ listen = 127.0.0.1:8080 ; A supported TURN server is https://code.google.com/p/rfc5766-turn-server/. ;turnSecret = the-default-turn-shared-secret-do-not-keep ; Enable adding TURN servers inside of the client side webui under settings -;turnClientSideSetable = false +;clientSideTurn = false ; Enable renegotiation support. Set to true to tell clients that they can ; renegotiate peer connections when required. Firefox support is not complete, ; so do not enable if you want compatibility with Firefox clients. diff --git a/src/app/spreed-webrtc-server/config.go b/src/app/spreed-webrtc-server/config.go index 6cfa1b2f..08f2c9dc 100644 --- a/src/app/spreed-webrtc-server/config.go +++ b/src/app/spreed-webrtc-server/config.go @@ -39,7 +39,7 @@ type Config struct { Renegotiation bool // Renegotiation flag StunURIs []string // STUN server URIs TurnURIs []string // TURN server URIs - TurnClientSideSetable bool // Enable TURN server customization under settings in web ui + ClientSideTurn bool // Enable TURN server customization under settings in web ui Tokens bool // True when we got a tokens file Version string // Server version number UsersEnabled bool // Flag if users are enabled @@ -117,7 +117,7 @@ func NewConfig(container phoenix.Container, tokens bool) *Config { Renegotiation: container.GetBoolDefault("app", "renegotiation", false), StunURIs: stunURIs, TurnURIs: turnURIs, - TurnClientSideSetable: container.GetBoolDefault("app", "turnClientSideSetable", false), + ClientSideTurn: container.GetBoolDefault("app", "clientSideTurn", false), Tokens: tokens, Version: version, UsersEnabled: container.GetBoolDefault("users", "enabled", false), diff --git a/static/js/directives/settings.js b/static/js/directives/settings.js index 4cbfe48b..52bf07fa 100644 --- a/static/js/directives/settings.js +++ b/static/js/directives/settings.js @@ -70,7 +70,7 @@ define(['jquery', 'underscore', 'text!partials/settings.html'], function($, _, t $scope.withUsers = mediaStream.config.UsersEnabled; $scope.withUsersRegistration = mediaStream.config.UsersAllowRegistration; $scope.withUsersMode = mediaStream.config.UsersMode; - $scope.withTurnCustomizable = turnSettings.showClientSideTurnOptions(); + $scope.clientSideTurn = turnSettings.showClientSideTurnOptions(); _.each(availableLanguages, function(name, code) { $scope.availableLanguages.push({ diff --git a/static/js/services/turnsettings.js b/static/js/services/turnsettings.js index 3af99dc6..b02cf3db 100644 --- a/static/js/services/turnsettings.js +++ b/static/js/services/turnsettings.js @@ -27,7 +27,7 @@ define([], function() { // See contraints.js for actual TURN configuration in use for a connection return ['mediaStream', 'appData', 'constraints', function(mediaStream, appData, constraints) { - var preferClientSideTurnSettings = mediaStream.config.TurnClientSideSetable; + var clientSideTurn = mediaStream.config.ClientSideTurn; var turnConfigServer = null; // @param Object config Turn configuration object @@ -35,7 +35,7 @@ define([], function() { // @param String config.username // @param String config.password var updateTurnSettings = function(config) { - if (!preferClientSideTurnSettings) { + if (!clientSideTurn) { return; } if (config.urls.length) { @@ -46,7 +46,7 @@ define([], function() { } }; - if (preferClientSideTurnSettings) { + if (clientSideTurn) { // Overwrite server Turn settings with user settings when loading app appData.e.one("userSettingsLoaded", function(event, loadedUser, user) { if (user) { @@ -63,7 +63,7 @@ define([], function() { return { showClientSideTurnOptions: function() { - return preferClientSideTurnSettings; + return clientSideTurn; }, update: updateTurnSettings }; diff --git a/static/partials/settings.html b/static/partials/settings.html index 8bb9bcf8..d3c90f2b 100644 --- a/static/partials/settings.html +++ b/static/partials/settings.html @@ -283,7 +283,7 @@
-
+
{{_('Turn')}}
From aad06525c339d0d41e60243c00f11eda7b4b7a9b Mon Sep 17 00:00:00 2001 From: Evan Theurer Date: Thu, 7 Jan 2016 10:24:47 +0100 Subject: [PATCH 12/15] Improve property name. --- static/js/controllers/appcontroller.js | 4 ++-- static/js/directives/settings.js | 2 +- static/js/services/turnsettings.js | 2 +- static/partials/settings.html | 6 +++--- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/static/js/controllers/appcontroller.js b/static/js/controllers/appcontroller.js index bc35d1ac..2c2fda09 100644 --- a/static/js/controllers/appcontroller.js +++ b/static/js/controllers/appcontroller.js @@ -56,8 +56,8 @@ define(["jquery", "angular", "underscore"], function($, angular, _) { videoLeakyBucket: true, videoNoiseReduction: false }, - webrtc: { - turn: { + turn: { + clientSideTurn: { urls: [], username: '', password: '' diff --git a/static/js/directives/settings.js b/static/js/directives/settings.js index 52bf07fa..1f69f46b 100644 --- a/static/js/directives/settings.js +++ b/static/js/directives/settings.js @@ -91,7 +91,7 @@ define(['jquery', 'underscore', 'text!partials/settings.html'], function($, _, t if (form.$valid && form.$dirty) { var user = $scope.user; $scope.update(user); - turnSettings.update($scope.user.settings.webrtc.turn); + turnSettings.update($scope.user.settings.turn.clientSideTurn); if ($scope.rememberSettings) { userSettingsData.save(user); localStorage.setItem("mediastream-language", user.settings.language || ""); diff --git a/static/js/services/turnsettings.js b/static/js/services/turnsettings.js index b02cf3db..221f5ce0 100644 --- a/static/js/services/turnsettings.js +++ b/static/js/services/turnsettings.js @@ -50,7 +50,7 @@ define([], function() { // Overwrite server Turn settings with user settings when loading app appData.e.one("userSettingsLoaded", function(event, loadedUser, user) { if (user) { - updateTurnSettings(user.settings.webrtc.turn); + updateTurnSettings(user.settings.turn.clientSideTurn); } }); // Get server site TURN settings diff --git a/static/partials/settings.html b/static/partials/settings.html index d3c90f2b..66b76e88 100644 --- a/static/partials/settings.html +++ b/static/partials/settings.html @@ -289,20 +289,20 @@
- + {{_('Comma separated list of urls')}}
- +
- +
From 409eec6244a0bf46b9dda2a78da0d36e861c9859 Mon Sep 17 00:00:00 2001 From: Evan Theurer Date: Thu, 7 Jan 2016 10:44:17 +0100 Subject: [PATCH 13/15] Change turnsettings api property key. --- static/js/directives/settings.js | 2 +- static/js/services/turnsettings.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/static/js/directives/settings.js b/static/js/directives/settings.js index 1f69f46b..324c90fd 100644 --- a/static/js/directives/settings.js +++ b/static/js/directives/settings.js @@ -70,7 +70,7 @@ define(['jquery', 'underscore', 'text!partials/settings.html'], function($, _, t $scope.withUsers = mediaStream.config.UsersEnabled; $scope.withUsersRegistration = mediaStream.config.UsersAllowRegistration; $scope.withUsersMode = mediaStream.config.UsersMode; - $scope.clientSideTurn = turnSettings.showClientSideTurnOptions(); + $scope.clientSideTurn = turnSettings.clientSideTurn(); _.each(availableLanguages, function(name, code) { $scope.availableLanguages.push({ diff --git a/static/js/services/turnsettings.js b/static/js/services/turnsettings.js index 221f5ce0..6816c2fc 100644 --- a/static/js/services/turnsettings.js +++ b/static/js/services/turnsettings.js @@ -62,7 +62,7 @@ define([], function() { } return { - showClientSideTurnOptions: function() { + clientSideTurn: function() { return clientSideTurn; }, update: updateTurnSettings From 433b6e1cbefb722acffc1ad9eccb424887c76a38 Mon Sep 17 00:00:00 2001 From: Evan Theurer Date: Thu, 7 Jan 2016 10:50:30 +0100 Subject: [PATCH 14/15] Use globalstrict in turnsettings service. --- static/js/services/turnsettings.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/js/services/turnsettings.js b/static/js/services/turnsettings.js index 6816c2fc..4ba32c89 100644 --- a/static/js/services/turnsettings.js +++ b/static/js/services/turnsettings.js @@ -19,8 +19,8 @@ * */ +"use strict"; define([], function() { - "use strict"; // turnSettings // Service to correctly sync client and server side TURN settings to contraints.js From ac212918959aef551c994c1ac2d49e7b65b1a371 Mon Sep 17 00:00:00 2001 From: Evan Theurer Date: Thu, 7 Jan 2016 11:07:21 +0100 Subject: [PATCH 15/15] Add help text communicating that a TURN server is not usually required. --- static/partials/settings.html | 1 + 1 file changed, 1 insertion(+) diff --git a/static/partials/settings.html b/static/partials/settings.html index 66b76e88..f384e4dc 100644 --- a/static/partials/settings.html +++ b/static/partials/settings.html @@ -286,6 +286,7 @@
{{_('Turn')}}
+

{{_('Normally a TURN server is not required. Only use in cases when peer to peer connections are blocked by a firewall.')}}