From cb5f4cd48eb0be3c844705eeebf6a6d950d75fcb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A9sz=C3=A1ros=20Mih=C3=A1ly?= Date: Thu, 23 Apr 2020 18:08:56 +0200 Subject: [PATCH 01/23] Only add OIDC request params that's really needed --- server/server.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/server/server.js b/server/server.js index d55dd4b..c253c46 100755 --- a/server/server.js +++ b/server/server.js @@ -240,7 +240,8 @@ function setupOIDC(oidcIssuer) // redirect_uri defaults to client.redirect_uris[0] // response type defaults to client.response_types[0], then 'code' // scope defaults to 'openid' - const params = config.auth.oidc.clientOptions; + const params = (({clinet_id, redirect_uri, scope})=>({clinet_id, redirect_uri, scope}))(config.auth.oidc.clientOptions); + // optional, defaults to false, when true req is passed as a first // argument to verify fn From 9376e42d49abec8bca035ce63cfc103e5569a184 Mon Sep 17 00:00:00 2001 From: Ali Orhun Akkirman Date: Mon, 27 Apr 2020 12:00:43 +0300 Subject: [PATCH 02/23] Create turkish language file --- app/src/translations/tr.json | 140 +++++++++++++++++++++++++++++++++++ 1 file changed, 140 insertions(+) create mode 100644 app/src/translations/tr.json diff --git a/app/src/translations/tr.json b/app/src/translations/tr.json new file mode 100644 index 0000000..80b96c6 --- /dev/null +++ b/app/src/translations/tr.json @@ -0,0 +1,140 @@ +{ + "socket.disconnected": "Bağlantınız Kesildi", + "socket.reconnecting": "Bağlantınız kesildi, yeniden bağlanmaya çalışılıyor", + "socket.reconnected": "Yeniden bağlandınız", + "socket.requestError": "Sunucu isteğinde hata", + + "room.chooseRoom": "Katılmak istediğiniz odanın adını seçin", + "room.cookieConsent": "Bu web sayfası kullanıcı deneyimini geliştirmek için çerezleri kullanmaktadır", + "room.consentUnderstand": "Anladım", + "room.joined": "Odaya katıldın", + "room.cantJoin": "Odaya katılamadın", + "room.youLocked": "Odayı kilitledin", + "room.cantLock": "Oda kilitlenemiyor", + "room.youUnLocked": "Odanın kilidini açtın", + "room.cantUnLock": "Odanın kilidi açılamıyor", + "room.locked": "Oda kilitlendi", + "room.unlocked": "Oda kilidi açıldı", + "room.newLobbyPeer": "Lobiye yeni katılımcı girdi", + "room.lobbyPeerLeft": "Lobiden katılımcı ayrıldı", + "room.lobbyPeerChangedDisplayName": "Lobideki katılımcı adını {displayName} olarak değiştirdi", + "room.lobbyPeerChangedPicture": "Lobideki katılımcı resim değiştirdi", + "room.setAccessCode": "Oda için erişim kodu güncellendi", + "room.accessCodeOn": "Oda erişim kodu etkinleştirildi", + "room.accessCodeOff": "Oda erişim kodu devre dışı", + "room.peerChangedDisplayName": "{oldDisplayName}, {displayName} olarak değiştirildi", + "room.newPeer": "{displayName} odaya katıldı", + "room.newFile": "Yeni dosya mevcut", + "room.toggleAdvancedMode": "Gelişmiş moda geçiş", + "room.setDemocraticView": "Demokratik görünüme geçtiniz", + "room.setFilmStripView": "Filmşeridi görünümüne geçtiniz", + "room.loggedIn": "Giriş yaptınız", + "room.loggedOut": "Çıkış yaptınız", + "room.changedDisplayName": "Adınız {displayName} olarak değiştirildi", + "room.changeDisplayNameError": "Adınız değiştirilirken bir hata oluştu", + "room.chatError": "Sohbet mesajı gönderilemiyor", + "room.aboutToJoin": "Toplantıya katılmak üzeresiniz", + "room.roomId": "Oda ID: {roomName}", + "room.setYourName": "Katılım için adınızı belirleyin ve nasıl katılmak istediğinizi seçin:", + "room.audioOnly": "Sadece ses", + "room.audioVideo": "Ses ve Video", + "room.youAreReady": "Tamam, hazırsın", + "room.emptyRequireLogin": "Oda boş! Toplantıyı başlatmak için oturum açabilirsiniz veya toplantı sahibi katılana kadar bekleyebilirsiniz", + "room.locketWait": "Oda kilitli - birisi içeri alana kadar bekleyiniz ...", + "room.lobbyAdministration": "Lobi Yöneticisi", + "room.peersInLobby": "Lobideki katılımcılar", + "room.lobbyEmpty": "Lobide katılımcı yok", + "room.hiddenPeers": "{hiddenPeersCount, plural, one {participant} other {participants}}", + "room.me": "Ben", + "room.spotlights": "Gündemdeki Katılımcılar", + "room.passive": "Pasif Katılımcılar", + "room.videoPaused": "Video duraklatıldı", + + "tooltip.login": "Giriş", + "tooltip.logout": "Çıkış", + "tooltip.admitFromLobby": "Lobiden içeri al", + "tooltip.lockRoom": "Oda kilitle", + "tooltip.unLockRoom": "Oda kilidini aç", + "tooltip.enterFullscreen": "Tam Ekrana Geç", + "tooltip.leaveFullscreen": "Tam Ekrandan Çık", + "tooltip.lobby": "Lobiyi göster", + "tooltip.settings": "Ayarları göster", + "tooltip.participants": "Katılımcıları göster", + + "label.roomName": "Oda adı", + "label.chooseRoomButton": "Devam", + "label.yourName": "Adınız", + "label.newWindow": "Yeni pencere", + "label.fullscreen": "Tam Ekran", + "label.openDrawer": "Çiziciyi aç", + "label.leave": "Ayrıl", + "label.chatInput": "Sohbet mesajı gir...", + "label.chat": "Sohbet", + "label.filesharing": "Dosya paylaşım", + "label.participants": "Katılımcı", + "label.shareFile": "Dosya paylaş", + "label.fileSharingUnsupported": "Dosya paylaşımı desteklenmiyor", + "label.unknown": "Bilinmeyen", + "label.democratic": "Demokratik görünüm", + "label.filmstrip": "Filmşeridi görünüm", + "label.low": "Düşük", + "label.medium": "Orta", + "label.high": "Yüksek (HD)", + "label.veryHigh": "Çok Yüksek (FHD)", + "label.ultra": "Ultra (UHD)", + "label.close": "Kapat", + + "settings.settings": "Ayarlar", + "settings.camera": "Kamera", + "settings.selectCamera": "Video aygıtını seç", + "settings.cantSelectCamera": "Video aygıtı seçilemiyor", + "settings.audio": "Ses aygıtı", + "settings.selectAudio": "Ses aygıtını seç", + "settings.cantSelectAudio": "Ses aygıtı seçilemiyor", + "settings.resolution": "Video çözünürlüğü ayarla", + "settings.layout": "Oda düzeni", + "settings.selectRoomLayout": "Oda düzeni seç", + "settings.advancedMode": "Detaylı mod", + "settings.permanentTopBar": "Üst barı kalıcı yap", + "settings.lastn": "İzlenebilir video sayısı", + + "filesharing.saveFileError": "Dosya kaydedilemiyor", + "filesharing.startingFileShare": "Paylaşılan dosyaya erişiliyor", + "filesharing.successfulFileShare": "Dosya başarıyla paylaşıldı", + "filesharing.unableToShare": "Dosya paylaşılamıyor", + "filesharing.error": "Dosya paylaşım hatası", + "filesharing.finished": "Dosya indirilmesi tamamlandı", + "filesharing.save": "Kaydet", + "filesharing.sharedFile": "{displayName} bir dosya paylaştı", + "filesharing.download": "İndir", + "filesharing.missingSeeds": "İşlem uzun zaman alıyorsa, bu torrent'i paylaşan kimse olmayabilir. İlgili dosyayı yeniden yüklemesini isteyin.", + + "devices.devicesChanged": "Cihazlarınız değişti, ayarlar kutusundan cihazlarınızı yapılandırın", + + "device.audioUnsupported": "Ses desteklenmiyor", + "device.activateAudio": "Sesi aktif et", + "device.muteAudio": "Sesi kıs", + "device.unMuteAudio": "Sesi aç", + + "device.videoUnsupported": "Video desteklenmiyor", + "device.startVideo": "Video başlat", + "device.stopVideo": "Video durdur", + + "device.screenSharingUnsupported": "Ekran paylaşımı desteklenmiyor", + "device.startScreenSharing": "Ekran paylaşımını başlat", + "device.stopScreenSharing": "Ekran paylaşımını durdur", + + "devices.microphoneDisconnected": "Mikrofon bağlı değil", + "devices.microphoneError": "Mikrofononuza erişilirken bir hata oluştu", + "devices.microPhoneMute": "Mikrofonumu kıs", + "devices.micophoneUnMute": "Mikrofonumu aç", + "devices.microphoneEnable": "Mikrofonumu aktif et", + "devices.microphoneMuteError": "Mikrofonunuz kısılamıyor", + "devices.microphoneUnMuteError": "Mikrofonunuz açılamıyor", + + "devices.screenSharingDisconnected" : "Ekran paylaşımı bağlı değil", + "devices.screenSharingError": "Ekranınıza erişilirken bir hata oluştu", + + "devices.cameraDisconnected": "Kamera bağlı değil", + "devices.cameraError": "Kameranıza erişilirken bir hata oluştu" +} From 4c8c74601150585f3de04e12acecfa835dd1f9d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A9sz=C3=A1ros=20Mih=C3=A1ly?= Date: Mon, 27 Apr 2020 11:59:38 +0200 Subject: [PATCH 03/23] Add turkish translation --- app/src/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/index.js b/app/src/index.js index dd052fa..90bfa4d 100644 --- a/app/src/index.js +++ b/app/src/index.js @@ -37,6 +37,7 @@ import messagesCroatian from './translations/hr'; import messagesCzech from './translations/cs'; import messagesItalian from './translations/it'; import messagesUkrainian from './translations/uk'; +import messagesTurkish from './translations/tr'; import './index.css'; @@ -61,7 +62,8 @@ const messages = 'hr' : messagesCroatian, 'cs' : messagesCzech, 'it' : messagesItalian, - 'uk' : messagesUkrainian + 'uk' : messagesUkrainian, + 'tr' : messagesTurkish }; const locale = navigator.language.split(/[-_]/)[0]; // language without region code From 916003e0852e6ed069c01c3c3e1ff91c14cac863 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A9sz=C3=A1ros=20Mih=C3=A1ly?= Date: Mon, 27 Apr 2020 13:38:53 +0200 Subject: [PATCH 04/23] clarify more that ip change is mandatory Move to documentation IP range --- server/config/config.example.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/server/config/config.example.js b/server/config/config.example.js index 22f3dcb..966c1bc 100644 --- a/server/config/config.example.js +++ b/server/config/config.example.js @@ -325,11 +325,12 @@ module.exports = { listenIps : [ - // change ip to your servers IP address! - { ip: '0.0.0.0', announcedIp: null } + // change 192.0.2.1 IPv4 to your server's IPv4 address!! + { ip: '192.0.2.1', announcedIp: null } // Can have multiple listening interfaces - // { ip: '::/0', announcedIp: null } + // change 2001:DB8::1 IPv6 to your server's IPv6 address!! + // { ip: '2001:DB8::1', announcedIp: null } ], initialAvailableOutgoingBitrate : 1000000, minimumAvailableOutgoingBitrate : 600000, From c23d635803b2f2a0a391b02d32ef150062a4d20e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5var=20Aamb=C3=B8=20Fosstveit?= Date: Tue, 28 Apr 2020 22:23:15 +0200 Subject: [PATCH 05/23] ESlint for server --- server/package.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/server/package.json b/server/package.json index d8b314d..c1b7ad4 100644 --- a/server/package.json +++ b/server/package.json @@ -8,7 +8,8 @@ "main": "lib/index.js", "scripts": { "start": "DEBUG=${DEBUG:='*mediasoup* *INFO* *WARN* *ERROR*'} INTERACTIVE=${INTERACTIVE:='true'} node server.js", - "connect": "node connect.js" + "connect": "node connect.js", + "lint": "eslint -c .eslintrc.json --ext .js *.js lib/" }, "dependencies": { "awaitqueue": "^1.0.0", @@ -35,5 +36,8 @@ "socket.io": "^2.3.0", "spdy": "^4.0.1", "uuid": "^7.0.2" + }, + "devDependencies": { + "eslint": "6.8.0" } } From 174a03814f7c070c702e4df59e03b295384ca6ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A9sz=C3=A1ros=20Mih=C3=A1ly?= Date: Wed, 29 Apr 2020 21:39:11 +0200 Subject: [PATCH 06/23] Fixes: #268 --- app/src/RoomClient.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/RoomClient.js b/app/src/RoomClient.js index 630851a..8e5c365 100644 --- a/app/src/RoomClient.js +++ b/app/src/RoomClient.js @@ -873,7 +873,7 @@ export default class RoomClient store.dispatch( lobbyPeerActions.addLobbyPeer(peer.peerId)); store.dispatch( - lobbyPeerActions.setLobbyPeerDisplayName(peer.displayName)); + lobbyPeerActions.setLobbyPeerDisplayName(peer.displayName, peer.peerId)); store.dispatch( lobbyPeerActions.setLobbyPeerPicture(peer.picture)); }); From a64830a06aba39f38b94adf467ea4914623c1f07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5var=20Aamb=C3=B8=20Fosstveit?= Date: Thu, 30 Apr 2020 12:32:43 +0200 Subject: [PATCH 07/23] Make lastN configurable, max, and lock. Fixes #225 --- app/public/config/config.example.js | 11 +++-- app/src/components/Settings/Settings.js | 65 +++++++++++++------------ 2 files changed, 43 insertions(+), 33 deletions(-) diff --git a/app/public/config/config.example.js b/app/public/config/config.example.js index 9e16360..371d399 100644 --- a/app/public/config/config.example.js +++ b/app/public/config/config.example.js @@ -1,9 +1,9 @@ // eslint-disable-next-line var config = { - loginEnabled : false, - developmentPort : 3443, - productionPort : 443, + loginEnabled : false, + developmentPort : 3443, + productionPort : 443, /** * If defaultResolution is set, it will override user settings when joining: @@ -25,6 +25,7 @@ var config = { scaleResolutionDownBy: 2 }, { scaleResolutionDownBy: 1 } ], + /** * White listing browsers that support audio output device selection. * It is not yet fully implemented in Firefox. @@ -43,6 +44,10 @@ var config = }, lastN : 4, mobileLastN : 1, + // Highest number of speakers user can select + maxLastN : 5, + // If truthy, users can NOT change number of speakers visible + lockLastN : false, background : 'images/background.jpg', // Add file and uncomment for adding logo to appbar // logo : 'images/logo.svg', diff --git a/app/src/components/Settings/Settings.js b/app/src/components/Settings/Settings.js index 5a4a09a..af46eb2 100644 --- a/app/src/components/Settings/Settings.js +++ b/app/src/components/Settings/Settings.js @@ -355,36 +355,41 @@ const Settings = ({ /> { settings.advancedMode && -
- - - - - - -
+ { window.config && !window.config.lockLastN && +
+ + + + + + +
+ } } From 2ece8e9975933c7f4a8db2a7291b01018c4c9b54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5var=20Aamb=C3=B8=20Fosstveit?= Date: Thu, 30 Apr 2020 12:48:36 +0200 Subject: [PATCH 08/23] Make layout configurable in client, fixes #227 --- app/public/config/config.example.js | 15 ++++++++------- app/src/reducers/room.js | 11 +++++++---- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/app/public/config/config.example.js b/app/public/config/config.example.js index 371d399..cf2703d 100644 --- a/app/public/config/config.example.js +++ b/app/public/config/config.example.js @@ -42,17 +42,18 @@ var config = { tcp : true }, - lastN : 4, - mobileLastN : 1, + defaultLayout : 'democratic', // democratic, filmstrip + lastN : 4, + mobileLastN : 1, // Highest number of speakers user can select - maxLastN : 5, + maxLastN : 5, // If truthy, users can NOT change number of speakers visible - lockLastN : false, - background : 'images/background.jpg', + lockLastN : false, + background : 'images/background.jpg', // Add file and uncomment for adding logo to appbar // logo : 'images/logo.svg', - title : 'Multiparty meeting', - theme : + title : 'Multiparty meeting', + theme : { palette : { diff --git a/app/src/reducers/room.js b/app/src/reducers/room.js index 6340b40..54c4011 100644 --- a/app/src/reducers/room.js +++ b/app/src/reducers/room.js @@ -1,19 +1,22 @@ const initialState = { name : '', - state : 'new', // new/connecting/connected/disconnected/closed, + // new/connecting/connected/disconnected/closed, + state : 'new', locked : false, inLobby : false, signInRequired : false, - accessCode : '', // access code to the room if locked and joinByAccessCode == true - joinByAccessCode : true, // if true: accessCode is a possibility to open the room + // access code to the room if locked and joinByAccessCode == true + accessCode : '', + // if true: accessCode is a possibility to open the room + joinByAccessCode : true, activeSpeakerId : null, torrentSupport : false, showSettings : false, fullScreenConsumer : null, // ConsumerID windowConsumer : null, // ConsumerID toolbarsVisible : true, - mode : 'democratic', + mode : window.config.defaultLayout || 'democratic', selectedPeerId : null, spotlights : [], settingsOpen : false, From 1ffa4fdc9a38b6ea235f02ae8b4a0a257bddeea3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5var=20Aamb=C3=B8=20Fosstveit?= Date: Thu, 30 Apr 2020 12:50:23 +0200 Subject: [PATCH 09/23] Better handling of default resolution. --- app/src/RoomClient.js | 14 ++------------ app/src/reducers/settings.js | 3 ++- 2 files changed, 4 insertions(+), 13 deletions(-) diff --git a/app/src/RoomClient.js b/app/src/RoomClient.js index 8e5c365..f499871 100644 --- a/app/src/RoomClient.js +++ b/app/src/RoomClient.js @@ -31,8 +31,7 @@ let Spotlights; let requestTimeout, transportOptions, lastN, - mobileLastN, - defaultResolution; + mobileLastN; if (process.env.NODE_ENV !== 'test') { @@ -40,8 +39,7 @@ if (process.env.NODE_ENV !== 'test') requestTimeout, transportOptions, lastN, - mobileLastN, - defaultResolution + mobileLastN } = window.config); } @@ -205,9 +203,6 @@ export default class RoomClient // Our WebTorrent client this._webTorrent = null; - if (defaultResolution) - store.dispatch(settingsActions.setVideoResolution(defaultResolution)); - // Max spotlights if (device.platform === 'desktop') this._maxSpotlights = lastN; @@ -534,11 +529,6 @@ export default class RoomClient } } - notify(text) - { - store.dispatch(requestActions.notify({ text: text })); - } - timeoutCallback(callback) { let called = false; diff --git a/app/src/reducers/settings.js b/app/src/reducers/settings.js index 0be91a8..2b2325b 100644 --- a/app/src/reducers/settings.js +++ b/app/src/reducers/settings.js @@ -4,7 +4,8 @@ const initialState = selectedWebcam : null, selectedAudioDevice : null, advancedMode : false, - resolution : 'medium', // low, medium, high, veryhigh, ultra + // low, medium, high, veryhigh, ultra + resolution : window.config.defaultResolution || 'medium', lastN : 4, permanentTopBar : true }; From 2fced42c425abfa1394b5e008f23943194e0d6bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5var=20Aamb=C3=B8=20Fosstveit?= Date: Thu, 30 Apr 2020 12:50:43 +0200 Subject: [PATCH 10/23] Cleanups. --- app/src/components/ChooseRoom.js | 4 ++-- app/src/components/Controls/TopBar.js | 4 ++-- app/src/components/JoinDialog.js | 6 +++--- app/src/components/Settings/Settings.js | 5 ++--- 4 files changed, 9 insertions(+), 10 deletions(-) diff --git a/app/src/components/ChooseRoom.js b/app/src/components/ChooseRoom.js index b81ff47..3d549b3 100644 --- a/app/src/components/ChooseRoom.js +++ b/app/src/components/ChooseRoom.js @@ -86,7 +86,7 @@ const DialogTitle = withStyles(styles)((props) => return ( - { window.config && window.config.logo && Logo } + { window.config.logo && Logo } {children} ); @@ -125,7 +125,7 @@ const ChooseRoom = ({ }} > - { window.config && window.config.title ? window.config.title : 'Multiparty meeting' } + { window.config.title ? window.config.title : 'Multiparty meeting' }
diff --git a/app/src/components/Controls/TopBar.js b/app/src/components/Controls/TopBar.js index 2cc380a..23cddec 100644 --- a/app/src/components/Controls/TopBar.js +++ b/app/src/components/Controls/TopBar.js @@ -194,14 +194,14 @@ const TopBar = (props) => - { window.config && window.config.logo && Logo } + { window.config.logo && Logo } - { window.config && window.config.title ? window.config.title : 'Multiparty meeting' } + { window.config.title ? window.config.title : 'Multiparty meeting' }
diff --git a/app/src/components/JoinDialog.js b/app/src/components/JoinDialog.js index 85262b1..6b1d7ad 100644 --- a/app/src/components/JoinDialog.js +++ b/app/src/components/JoinDialog.js @@ -128,9 +128,9 @@ const DialogTitle = withStyles(styles)((props) => return ( - { window.config && window.config.logo && Logo } + { window.config.logo && Logo } {children} - { window.config && window.config.loginEnabled && + { window.config.loginEnabled && - { window.config && window.config.title ? window.config.title : 'Multiparty meeting' } + { window.config.title ? window.config.title : 'Multiparty meeting' }
diff --git a/app/src/components/Settings/Settings.js b/app/src/components/Settings/Settings.js index af46eb2..064aa2f 100644 --- a/app/src/components/Settings/Settings.js +++ b/app/src/components/Settings/Settings.js @@ -233,8 +233,7 @@ const Settings = ({ - { - 'audioOutputSupportedBrowsers' in window.config && + { 'audioOutputSupportedBrowsers' in window.config && window.config.audioOutputSupportedBrowsers.includes(me.browser.name) &&
@@ -355,7 +354,7 @@ const Settings = ({ /> { settings.advancedMode && - { window.config && !window.config.lockLastN && + { !window.config.lockLastN &&