From f7b16ac973dd8c7b7108b4cad703238c9ed86677 Mon Sep 17 00:00:00 2001 From: Tim Bird Date: Tue, 3 Oct 2023 10:57:33 -0600 Subject: [PATCH 01/13] Update bbb-conf.md - fix typo in word 'easi' Change 'easi' to 'easy' --- docs/docs/administration/bbb-conf.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/administration/bbb-conf.md b/docs/docs/administration/bbb-conf.md index 2e533c0f70..6b8c9e8bb4 100644 --- a/docs/docs/administration/bbb-conf.md +++ b/docs/docs/administration/bbb-conf.md @@ -10,7 +10,7 @@ keywords: ## Introduction -`bbb-conf` is BigBlueButton's configuration tool. It makes it easi for you to modify parts of BigBlueButton's configuration, manage the BigBlueButton system (start/stop/reset), and troubleshoot potential problems with your setup. +`bbb-conf` is BigBlueButton's configuration tool. It makes it easy for you to modify parts of BigBlueButton's configuration, manage the BigBlueButton system (start/stop/reset), and troubleshoot potential problems with your setup. As a historical note, this tool was created early in the development of BigBlueButton. The core developers wrote this tool to quickly update BigBlueButton's configuration files for setup and testing. From c7149c931b7349e8063f037544567e3cf76c9c0f Mon Sep 17 00:00:00 2001 From: KDSBrowne Date: Wed, 8 Nov 2023 00:20:59 +0000 Subject: [PATCH 02/13] add transitions to cursors for smoothing --- .../ui/components/whiteboard/cursors/cursor/component.jsx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/bigbluebutton-html5/imports/ui/components/whiteboard/cursors/cursor/component.jsx b/bigbluebutton-html5/imports/ui/components/whiteboard/cursors/cursor/component.jsx index a4711d4d45..7db9283d3d 100644 --- a/bigbluebutton-html5/imports/ui/components/whiteboard/cursors/cursor/component.jsx +++ b/bigbluebutton-html5/imports/ui/components/whiteboard/cursors/cursor/component.jsx @@ -25,19 +25,22 @@ const Cursor = (props) => { _y = (y + tldrawCamera?.point[1]) * tldrawCamera?.zoom; } + const transitionStyle = owner ? { transition: 'left 0.3s ease-out, top 0.3s ease-out' } : {}; + return ( <>
@@ -57,6 +60,7 @@ const Cursor = (props) => { color: '#FFF', backgroundColor: color, border: `1px solid ${color}`, + ...transitionStyle, }} data-test="whiteboardCursorIndicator" > From 5063cb5dfa08091da6a1b50f790a492458f81b03 Mon Sep 17 00:00:00 2001 From: "transifex-integration[bot]" <43880903+transifex-integration[bot]@users.noreply.github.com> Date: Tue, 21 Nov 2023 15:18:16 +0000 Subject: [PATCH 03/13] Translate en.json in fr 100% translated source file: 'en.json' on 'fr'. --- bigbluebutton-html5/public/locales/fr.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/bigbluebutton-html5/public/locales/fr.json b/bigbluebutton-html5/public/locales/fr.json index fe54e0417e..4ba789ef07 100644 --- a/bigbluebutton-html5/public/locales/fr.json +++ b/bigbluebutton-html5/public/locales/fr.json @@ -76,8 +76,8 @@ "app.timer.hours": "heures", "app.timer.minutes": "minutes", "app.timer.seconds": "secondes", - "app.timer.songs": "Chansons", - "app.timer.noTrack": "Pas de chansons", + "app.timer.music": "Musique", + "app.timer.noTrack": "Aucune musique", "app.timer.track1": "Détente", "app.timer.track2": "Calme", "app.timer.track3": "Heureux", @@ -436,6 +436,7 @@ "app.muteWarning.label": "Cliquez sur {0} pour réactiver votre micro.", "app.muteWarning.disableMessage": "Les alertes de micro éteint sont désactivées jusqu'à la réactivation du micro.", "app.muteWarning.tooltip": "Cliquez pour fermer et désactiver les alertes jusqu'à la prochaine activation du micro", + "app.navBar.leaveMeetingBtnLabel": "Quitter", "app.navBar.settingsDropdown.optionsLabel": "Options", "app.navBar.settingsDropdown.fullscreenLabel": "Application en plein écran", "app.navBar.settingsDropdown.settingsLabel": "Paramètres", @@ -1167,6 +1168,7 @@ "app.videoDock.webcamDisableLabelAllCams": "Désactiver l'affichage de soi (toutes les caméras)", "app.videoDock.webcamEnableLabel": "Activer la vision de soi", "app.videoDock.webcamDisableDesc": "Vision de soi désactivée", + "app.videoDock.webcamDisableWarning": "Votre webcam est toujours visible des autres! Son affichage est désactivé seulement localement.", "app.videoDock.webcamPinLabel": "Épingler", "app.videoDock.webcamPinDesc": "Épingler la caméra sélectionnée", "app.videoDock.webcamFullscreenLabel": "Webcam en plein écran", From cfa15e8b60c629b41e73f7d8d7bc638572f32a3f Mon Sep 17 00:00:00 2001 From: "transifex-integration[bot]" <43880903+transifex-integration[bot]@users.noreply.github.com> Date: Wed, 22 Nov 2023 15:49:41 -0500 Subject: [PATCH 04/13] Translate en.json in tr (#19198) 100% translated source file: 'en.json' on 'tr'. Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com> --- bigbluebutton-html5/public/locales/tr.json | 32 ++++++++++++++-------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/bigbluebutton-html5/public/locales/tr.json b/bigbluebutton-html5/public/locales/tr.json index 86fe32607a..4690844bd8 100644 --- a/bigbluebutton-html5/public/locales/tr.json +++ b/bigbluebutton-html5/public/locales/tr.json @@ -34,6 +34,14 @@ "app.chat.two.typing": "{0} ve {1} yazıyor...", "app.chat.copySuccess": "Sohbet yazışmaları kopyalandı", "app.chat.copyErr": "Sohbet yazışmaları kopyalanamadı", + "app.timer.toolTipTimerStopped": "Zamanlayıcı durduruldu.", + "app.timer.toolTipTimerRunning": "Zamanlayıcı çalışıyor.", + "app.timer.toolTipStopwatchStopped": "Kronometre durduruldu.", + "app.timer.toolTipStopwatchRunning": "Kronometre çalışıyor.", + "app.timer.toolTipTimerStoppedMod": "Zamanlayıcıyı sürdürmek için basın.", + "app.timer.toolTipTimerRunningMod": "Zamanlayıcıyı duraklatmak için basın.", + "app.timer.toolTipStopwatchStoppedMod": "Kronometreyi sürdürmek için basın.", + "app.timer.toolTipStopwatchRunningMod": "Kronometreyi duraklatmak için basın.", "app.emojiPicker.search": "Arama", "app.emojiPicker.notFound": "Herhangi bir emoji bulunamadı", "app.emojiPicker.skintext": "Varsayılan ten renginizi seçin", @@ -68,8 +76,8 @@ "app.timer.hours": "saat", "app.timer.minutes": "dakika", "app.timer.seconds": "saniye", - "app.timer.songs": "Şarkılar", - "app.timer.noTrack": "Şarkı yok", + "app.timer.music": "Müzik", + "app.timer.noTrack": "Müzik yok", "app.timer.track1": "Rahatlatıcı", "app.timer.track2": "Sakin", "app.timer.track3": "Mutlu", @@ -287,15 +295,15 @@ "app.presentationUploader.sent": "Gönderildi", "app.presentationUploader.exportingTimeout": "Dışa aktarma işlemi çok uzun sürüyor...", "app.presentationUploader.export": "Sohbete gönder", - "app.presentationUploader.exportCurrentStatePresentation": "Sunumun geçerli durumundaki indirme bağlantısını gönder", - "app.presentationUploader.enableOriginalPresentationDownload": "Özgün sunum indirilebilsin", - "app.presentationUploader.disableOriginalPresentationDownload": "Özgün sunum indirilemesin", + "app.presentationUploader.exportCurrentStatePresentation": "Sunumun tahta notlarının da bulunduğu indirme bağlantısını gönder", + "app.presentationUploader.enableOriginalPresentationDownload": "Sunum ({0}) indirilebilsin", + "app.presentationUploader.disableOriginalPresentationDownload": "Özgün sunum ({0}) indirilemesin", "app.presentationUploader.dropdownExportOptions": "Dışa aktarma seçenekleri", "app.presentationUploader.export.linkAvailable": "{0} indirmek için bağlantıyı herkese açık sohbette bulabilirsiniz.", "app.presentationUploader.export.downloadButtonAvailable": "{0} sunumu için indirme düğmesi kullanılabilir.", "app.presentationUploader.export.notAccessibleWarning": "erişilebilirlik uyumluluğu olmayabilir", "app.presentationUploader.export.originalLabel": "Özgün", - "app.presentationUploader.export.withWhiteboardAnnotations": "Geçerli durumda", + "app.presentationUploader.export.withWhiteboardAnnotations": "tahta notları ile birlikte", "app.presentationUploader.currentPresentationLabel": "Geçerli sunum", "app.presentationUploder.extraHint": "ÖNEMLİ: Her bir dosya {0} MB boyutundan ve {1} sayfadan küçük olmalıdır.", "app.presentationUploder.uploadLabel": "Yükle", @@ -421,13 +429,14 @@ "app.polling.pollAnswerLabel": "Oylama yanıtı {0}", "app.polling.pollAnswerDesc": "Bu seçeneği kullanarak {0} için oy verin", "app.failedMessage": "Özür dileriz, sunucu ile bağlantı kurma sorunu var.", - "app.downloadPresentationButton.label": "Özgün sunumu indir", + "app.downloadPresentationButton.label": "Sunumu indir", "app.connectingMessage": "Bağlantı kuruluyor...", "app.waitingMessage": "Bağlantı kesildi. {0} saniye içinde yeniden bağlantı kurulmaya çalışılacak...", "app.retryNow": "Şimdi yeniden dene", "app.muteWarning.label": "Sesinizi açmak için {0} üzerine tıklayın.", "app.muteWarning.disableMessage": "Ses açılıncaya kadar uyarı sesini kapatma devre dışı bırakıldı", "app.muteWarning.tooltip": "Kapatmak için tıklayın ve ses yeniden açılana kadar uyarıyı devre dışı bırakın", + "app.navBar.leaveMeetingBtnLabel": "Ayrıl", "app.navBar.settingsDropdown.optionsLabel": "Seçenekler", "app.navBar.settingsDropdown.fullscreenLabel": "Uygulamayı tam ekran görüntüle", "app.navBar.settingsDropdown.settingsLabel": "Ayarlar", @@ -641,6 +650,7 @@ "app.actionsBar.reactions.reactionsButtonLabel": "Tepki çubuğu", "app.actionsBar.reactions.raiseHand": "El kaldır", "app.actionsBar.reactions.lowHand": "Eli indir", + "app.actionsBar.reactions.autoCloseReactionsBarLabel": "Tepki çubuğu otomatik kapatılsın", "app.actionsBar.emojiMenu.statusTriggerLabel": "Durumu ayarla", "app.actionsBar.emojiMenu.awayLabel": "Uzakta", "app.actionsBar.emojiMenu.awayDesc": "Durumunuzu uzakta yapar", @@ -869,11 +879,10 @@ "app.toast.meetingMuteOn.label": "Tüm kullanıcıların sesi kapatıldı", "app.toast.meetingMuteOnViewers.label": "Tüm izleyicilerin sesi kapatıldı", "app.toast.meetingMuteOff.label": "Toplantının sesi açıldı", - "app.toast.wakeLock.offerTitle": "Toplantı süresince aygıtınızın ekranı açık kalsın mı?", - "app.toast.wakeLock.offerAccept": "Evet!", - "app.toast.wakeLock.offerDecline": "Şimdi değil", "app.toast.wakeLock.acquireSuccess": "Uyandurma kilidi açık! Ayarlar menüsünden kapatabilirsiniz.", - "app.toast.wakeLock.acquireFailed": "Uyandırma kilidi açılırken sorun çıktı.", + "app.toast.wakeLock.acquireFailed": "Uyanma kilidi açılırken sorun çıktı", + "app.toast.wakeLock.notSupported": "Tarayıcınız uyanma kilidini desteklemiyor", + "app.toast.wakeLock.disclaimer": "{0}. Ekranınız kapandıktan sonra çağrıdan çıkarılacaksınız.", "app.toast.setEmoji.raiseHand": "Elinizi kaldırdınız", "app.toast.setEmoji.lowerHand": "Eliniz indirildi", "app.toast.setEmoji.away": "Durumunuzu uzakta olarak ayarladınız", @@ -1159,6 +1168,7 @@ "app.videoDock.webcamDisableLabelAllCams": "Kendini görmeyi kapat (tüm kameralar)", "app.videoDock.webcamEnableLabel": "Kendini görmeyi aç", "app.videoDock.webcamDisableDesc": "Kendini görme kapalı", + "app.videoDock.webcamDisableWarning": "Başkaları kamera görüntünüzü görmeyi sürdürebilir! Yalnızca yerel görünümünüz kapatılır.", "app.videoDock.webcamPinLabel": "Sabitle", "app.videoDock.webcamPinDesc": "Seçilmiş kamera görüntüsünü sabitler", "app.videoDock.webcamFullscreenLabel": "Kamerayı tam ekran görüntüle", From b61ceb288330229a88fbc1b5d321a08b66cdece9 Mon Sep 17 00:00:00 2001 From: "transifex-integration[bot]" <43880903+transifex-integration[bot]@users.noreply.github.com> Date: Thu, 23 Nov 2023 09:15:26 -0500 Subject: [PATCH 05/13] Translate en.json in eu (#19202) 100% translated source file: 'en.json' on 'eu'. Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com> --- bigbluebutton-html5/public/locales/eu.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/bigbluebutton-html5/public/locales/eu.json b/bigbluebutton-html5/public/locales/eu.json index 5e74fd1aa7..ad44bdbd33 100644 --- a/bigbluebutton-html5/public/locales/eu.json +++ b/bigbluebutton-html5/public/locales/eu.json @@ -76,8 +76,8 @@ "app.timer.hours": "ordu", "app.timer.minutes": "minutu", "app.timer.seconds": "segundo", - "app.timer.songs": "Soinuak", - "app.timer.noTrack": "Soinurik gabe", + "app.timer.music": "Musika", + "app.timer.noTrack": "Musikarik ez", "app.timer.track1": "Erlaxazioa", "app.timer.track2": "Lasaitasuna", "app.timer.track3": "Zoriontasuna", @@ -436,6 +436,7 @@ "app.muteWarning.label": "Klikatu {0} zure ahotsa aktibatzeko", "app.muteWarning.disableMessage": "Abisuen isiltzea inaktiboa egongo da zure ahotsa aktibatu arte", "app.muteWarning.tooltip": "Egin klik abisuak ixteko eta desgaitzeko zure ahotsa berriro aktibatu arte", + "app.navBar.leaveMeetingBtnLabel": "Irten", "app.navBar.settingsDropdown.optionsLabel": "Aukerak", "app.navBar.settingsDropdown.fullscreenLabel": "Pantaila osoko aplikazioa", "app.navBar.settingsDropdown.settingsLabel": "Ezarpenak", @@ -1167,6 +1168,7 @@ "app.videoDock.webcamDisableLabelAllCams": "Desgaitu norberaren ikuspegia (kamera guztiak)", "app.videoDock.webcamEnableLabel": "Gaitu norberaren ikuspegia", "app.videoDock.webcamDisableDesc": "Norberaren ikuspegia desaktibatu da", + "app.videoDock.webcamDisableWarning": "Zure webcam-a oraindik ikusgai dago besteentzat! Zure tokiko ikuspegia soilik dago desgaituta.", "app.videoDock.webcamPinLabel": "Ainguratu", "app.videoDock.webcamPinDesc": "Ainguratu hautatutako webkamera", "app.videoDock.webcamFullscreenLabel": "Pantaila osoko web-kamera", From 374ad5045dc2b1719c7429ab706bd8bb7193e454 Mon Sep 17 00:00:00 2001 From: Paul Trudel <35616208+paultrudel@users.noreply.github.com> Date: Thu, 23 Nov 2023 09:45:45 -0500 Subject: [PATCH 06/13] chore: Upgrade Grails to 6.1 (#19193) --- bigbluebutton-web/build.gradle | 16 +++++++++------- bigbluebutton-web/gradle.properties | 6 +++--- .../gradle/wrapper/gradle-wrapper.properties | 2 +- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/bigbluebutton-web/build.gradle b/bigbluebutton-web/build.gradle index 38aa753703..778aeb1ab3 100755 --- a/bigbluebutton-web/build.gradle +++ b/bigbluebutton-web/build.gradle @@ -9,7 +9,7 @@ buildscript { dependencies { classpath "org.grails:grails-gradle-plugin:${grailsGradlePluginVersion}" classpath "org.grails.plugins:hibernate5:${gormVersion}" - classpath "com.bertramlabs.plugins:asset-pipeline-gradle:4.0.0" + classpath "com.bertramlabs.plugins:asset-pipeline-gradle:4.3.0" classpath "gradle.plugin.com.github.erdi.webdriver-binaries:webdriver-binaries-gradle-plugin:2.6" classpath "org.grails.plugins:views-gradle:2.1.1" classpath "org.grails.plugins:views-json:2.1.1" @@ -53,10 +53,10 @@ repositories { } dependencies { - runtimeOnly "com.bertramlabs.plugins:asset-pipeline-grails:4.0.0" + runtimeOnly "com.bertramlabs.plugins:asset-pipeline-grails:4.3.0" - implementation "org.springframework:spring-core:5.3.21" - implementation "org.springframework:spring-context:5.3.27" + implementation "org.springframework:spring-core:5.3.31" + implementation "org.springframework:spring-context:5.3.31" implementation "org.springframework.boot:spring-boot:${springVersion}" implementation "org.springframework.boot:spring-boot-starter-logging:${springVersion}" implementation "org.springframework.boot:spring-boot-autoconfigure:${springVersion}" @@ -65,7 +65,7 @@ dependencies { implementation "org.springframework.boot:spring-boot-starter-tomcat:${springVersion}" implementation "org.grails:grails-web-boot:5.2.5" - implementation "org.springframework:spring-webmvc:5.3.27" + implementation "org.springframework:spring-webmvc:5.3.31" implementation "org.grails:grails-logging" implementation "org.grails:grails-plugin-rest:5.2.5" @@ -79,7 +79,7 @@ dependencies { implementation "org.grails.plugins:views-json:2.1.1" implementation "org.grails.plugins:cache" implementation "org.apache.xmlbeans:xmlbeans:5.0.3" - implementation "org.grails:grails-gradle-plugin:5.1.4" + implementation "org.grails:grails-gradle-plugin:${grailsGradlePluginVersion}" implementation "org.grails.plugins:async" implementation "org.grails.plugins:scaffolding" implementation "org.grails.plugins:events" @@ -109,7 +109,7 @@ dependencies { //--- BigBlueButton Dependencies End console "org.grails:grails-console:5.2.0" profile "org.grails.profiles:web" - runtimeOnly "com.bertramlabs.plugins:asset-pipeline-grails:4.0.0" + runtimeOnly "com.bertramlabs.plugins:asset-pipeline-grails:4.3.0" testImplementation "org.grails:grails-gorm-testing-support" testImplementation "org.grails.plugins:geb" testImplementation "org.grails:grails-web-testing-support" @@ -127,6 +127,8 @@ configurations.implementation { exclude group: 'io.micronaut', module: 'micronaut-aop' exclude group: 'com.h2database', module: 'h2' exclude group: 'org.graalvm.sdk', module: 'graal-sdk' + exclude group: 'io.github.gradle-nexus', module: 'publish-plugin' + exclude group: 'org.grails', module: 'grails-shell' } configurations { diff --git a/bigbluebutton-web/gradle.properties b/bigbluebutton-web/gradle.properties index 5fb620fd75..214d2e9d0a 100644 --- a/bigbluebutton-web/gradle.properties +++ b/bigbluebutton-web/gradle.properties @@ -1,7 +1,7 @@ -grailsVersion=5.3.3 +grailsVersion=6.1.0 gormVersion=7.3.1 -gradleWrapperVersion=7.3.1 -grailsGradlePluginVersion=5.0.0 +gradleWrapperVersion=7.6.3 +grailsGradlePluginVersion=6.1.0 groovyVersion=3.0.19 tomcatEmbedVersion=9.0.82 springVersion=2.7.17 diff --git a/bigbluebutton-web/gradle/wrapper/gradle-wrapper.properties b/bigbluebutton-web/gradle/wrapper/gradle-wrapper.properties index fd636e6c98..3cb5fe56a3 100644 --- a/bigbluebutton-web/gradle/wrapper/gradle-wrapper.properties +++ b/bigbluebutton-web/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.1-bin.zip \ No newline at end of file +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.3-bin.zip \ No newline at end of file From 2282b6220ac630847d922f0052ab0f0abc645939 Mon Sep 17 00:00:00 2001 From: farhatahmad Date: Tue, 21 Nov 2023 14:35:28 -0500 Subject: [PATCH 07/13] Greenlight v3 Docs: Add information for migrating local accounts --- docs/docs/greenlight/v3/migration.md | 114 +++++++++++---------------- 1 file changed, 44 insertions(+), 70 deletions(-) diff --git a/docs/docs/greenlight/v3/migration.md b/docs/docs/greenlight/v3/migration.md index 9fb4af4c05..a23a760cd6 100644 --- a/docs/docs/greenlight/v3/migration.md +++ b/docs/docs/greenlight/v3/migration.md @@ -39,6 +39,19 @@ The migration system consists of multiples **rake tasks** and **a restful API**: Before the migration process, make sure that the Greenlight v3 server is running and accessible through your network. +### Updating v2 to the latest version + +Before begin your upgrade, it is crucial that you update Greenlight v2 to the latest version. This ensures that you are using the latest version of the migration scripts. + +To do so, run the following commands on your v2 machine: + +```bash +cd ~/greenlight +docker-compose pull +docker-compose down +docker-compose up -d +``` + ### Configuring the Environment In Greenlight v2 **.env** file, add the following variables: @@ -47,47 +60,9 @@ In Greenlight v2 **.env** file, add the following variables: ![env_migration_endpoints.png](/img/greenlight/v3/migration/env_migration_endpoints.png) -### The rake migration task file - -**If your Greenlight v2 deployment is up to date with the official latest release, you can skip to [Migration Steps](#migration-steps).** - -Else, you will need to to load the rake migration task file into your directory. - -To do so, follow the steps below: - -1) Navigate to your Greenlight v2 directory - -2) Download the migration rake tasks with the following command: - -```bash -wget -P lib/tasks/migrations https://raw.githubusercontent.com/bigbluebutton/greenlight/v2/lib/tasks/migrations/migrations.rake -``` - -The file **migrations.rake** should now be present in your **/lib/tasks/migrations** directory. - -**To include our changes directly in the Docker container:** - -3) Edit the volumes partition in the **docker-compose.yaml** to add the new migration file as follow: - -```yaml -services: - app: - volumes: - - ./log:/usr/src/app/log - - ./storage:/usr/src/app/storage - - ./lib/tasks/migrations:/usr/src/app/lib/tasks/migrations -``` - - -4) Save the changes and restart Greenlight v2 by running: - -```bash -sudo docker-compose down && sudo docker-compose up -d -``` - ## Migration Steps -**It is required to run the migrations in the following order: roles, users, rooms, settings.** +**The migrations must be run in the following order: roles, users, rooms, settings.** The logs will indicate the status of the migrated resources in real-time, in the console. @@ -125,9 +100,36 @@ sudo docker exec -it greenlight-v2 bundle exec rake migrations:roles The Users will be migrated with their corresponding role. Important notes: -- **The accounts passwords can't be migrated from Greenlight v2. A rake task that sends an email to all the users and prompts them to reset their password is provided for Greenlight v3. When the migration is completed, please jump to [After the Migration](#after-the-migration). Please note that if you are using external accounts, like Google or Microsoft, this is not applicable.**- Pending, denied and deleted users will not be migrated to Greenlight v3. - Both local and external users will be migrated. +#### Local Accounts +When migrating local accounts from GLv2 to GLv3, the password_digest field will be securely transferred from v2 to v3. This ensures that local customers can seamlessly sign in using the exact same password as in v2. + +To enable this, it's crucial that both GLv2 and GLv3 share the same value for the SECRET_KEY_BASE environment variable, which is set in the .env file. + +Follow these steps: + +1. **Retrieve GLv2's `SECRET_KEY_BASE`:** + +On your GLv2 machine, execute the following command in the terminal: +```bash +cd ~/greenlight +cat .env | grep SECRET_KEY_BASE +``` +Copy the value that is returned. + +2. **Update GLv2 `.env` file:** + +Edit the .env file on your GLv2 machine and replace the value of `V3_SECRET_KEY_BASE` with the copied value. + +3. **Update GLv3 `.env` file:** + +On your GLv3 machine, replace the `SECRET_KEY_BASE` in your .env file with the same value that you copied from GLv2. + +Ensure that the `SECRET_KEY_BASE` values for GLv2, GLv3, and the `V3_SECRET_KEY_BASE` variable in GLv2's `.env` file are now synchronized. + +#### Migrating Users + **To migrate all of your v2 users to v3, run the following command:** ```bash sudo docker exec -it greenlight-v2 bundle exec rake migrations:users @@ -135,12 +137,6 @@ sudo docker exec -it greenlight-v2 bundle exec rake migrations:users **To migrate only a portion of the users starting from *FIRST_USER_ID* to *LAST_USER_ID*, run this command instead:** -```bash -sudo docker exec -it greenlight-v2 bundle exec rake migrations:users\[,] -``` - -*Administrators can use the last command to migrate resources in parallel, the same migration task can be run in separate processes each migrating a portion of the resources class simultaneously.* - **If you have an error, try re-running the migration task to resolve any failed resources migration.** **Also, make sure that the Roles migration has been successful.** @@ -159,16 +155,6 @@ Important notes: sudo docker exec -it greenlight-v2 bundle exec rake migrations:rooms ``` -**To migrate only a portion of users starting from **FIRST_ROOM_ID** to **LAST_ROOM_ID**, run this command instead**:** - -```bash -sudo docker exec -it greenlight-v2 bundle exec rake migrations:rooms\[,] -``` - -*Note: The partitioning is based on resources id value and not there position in the database, so calling **rake migrations:rooms[1, 100]** will not migrate the first 100 active users rooms but rather active users rooms having an id of 1 to 100 if existed.* - -*Administrators can use the last command to migrate resources in parallel, the same migration task can be run in separate processes each migrating a portion of the resources class simultaneously.* - **If you have an error, try re-running the migration task to resolve any failed resources migration.** **Also, make sure that the Users migration has been successful.** @@ -192,21 +178,9 @@ sudo docker exec -it greenlight-v2 bundle exec rake migrations:settings **If you have an error, try re-running the migration task to resolve any failed resources migration.** ## After the Migration -Having completed the migration successfully, it is now imperative to inform users of the need to reset their Greenlight account passwords. -This can be achieved through the utilization of the rake task available in Greenlight v3. -**It is important to note, however, that this is not applicable for users who utilize external accounts such as Google or Microsoft.** +Having completed the migration successfully, the final step is to import the recordings into v3. -To send a reset password email to all your users, run the following command: - -```bash -sudo docker exec -it greenlight-v3 bundle exec rake migration:reset_password_email\[] -``` - -The <BASE URL> in the command above should be replaced with your Greenlight domain name. - -Also, please note that the BigBlueButton recordings list will now be empty. - -To re-sync the list of recordings, run the following command: +To re-sync the list of recordings, run the following command **on the v3 machine**: ```bash sudo docker exec -it greenlight-v3 bundle exec rake server_recordings_sync From d041fe660b194eef1c03fc80c3e8fadd006ab854 Mon Sep 17 00:00:00 2001 From: farhatahmad Date: Wed, 22 Nov 2023 10:02:57 -0500 Subject: [PATCH 08/13] Added entry for OPENID_CONNECT_UID_FIELD --- docs/docs/greenlight/v3/install.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/docs/docs/greenlight/v3/install.md b/docs/docs/greenlight/v3/install.md index b061c4c5db..380dba2b93 100644 --- a/docs/docs/greenlight/v3/install.md +++ b/docs/docs/greenlight/v3/install.md @@ -138,12 +138,13 @@ SMTP configuration requires following the guidelines provided by your SMTP serve ### OpenID Connect Setup -| Variable Name | Description | Default Value | -|---------------|---------------------------------------------------------------------------------------------------------------------------------------|---------------| -| OPENID_CONNECT_CLIENT_ID | The client ID of the OpenID issuer | - | -| OPENID_CONNECT_CLIENT_SECRET | The secret to use to authenticate to the OpenID issuer | - | -| OPENID_CONNECT_ISSUER | The URL for the OpenID issuer. It is required to be HTTPS URL using the default HTTPS port (TCP 443) | - | -| OPENID_CONNECT_REDIRECT | The Redirect URI after successful authentication. It should be the URL to Greenlight | - | +| Variable Name | Description | Default Value | +|---------------|-----------------------------------------------------------------------------------------------------|--------------| +| OPENID_CONNECT_CLIENT_ID | The client ID of the OpenID issuer | - | +| OPENID_CONNECT_CLIENT_SECRET | The secret to use to authenticate to the OpenID issuer | - | +| OPENID_CONNECT_ISSUER | The URL for the OpenID issuer. It is required to be HTTPS URL using the default HTTPS port (TCP 443) | - | +| OPENID_CONNECT_REDIRECT | The Redirect URI after successful authentication. It should be the URL to Greenlight | - | +| OPENID_CONNECT_UID_FIELD | The field of the user info response to be used as the unique identifier in Greenlight | 'sub' | ### HCaptcha Setup From 8b7cfdb54faec8aaf9727904c1a90fce89ac8c68 Mon Sep 17 00:00:00 2001 From: mbm_1607 Date: Wed, 18 Oct 2023 17:14:26 +0500 Subject: [PATCH 09/13] :pencil: Update typo in install.md --- docs/docs/administration/install.md | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/docs/docs/administration/install.md b/docs/docs/administration/install.md index a09c462ac6..cee13f2bf0 100644 --- a/docs/docs/administration/install.md +++ b/docs/docs/administration/install.md @@ -41,7 +41,7 @@ If you are setting up BigBlueButton for local development on your workstation, y - 50G of disk space - IPV4 address only -Regardless of your environment, the setup steps will include configuring a SSL certificate on the nginx server. Why? All browsers now require a valid SSL certificate from the web server when a page requests access to the user's webcam or microphone via web real-time communications (WebRTC). If you try to access a BigBlueButton server with an IP address only, the browsers will block BigBlueButton client from accessing your webcam or microhone. +Regardless of your environment, the setup steps will include configuring a SSL certificate on the nginx server. Why? All browsers now require a valid SSL certificate from the web server when a page requests access to the user's webcam or microphone via web real-time communications (WebRTC). If you try to access a BigBlueButton server with an IP address only, the browsers will block BigBlueButton client from accessing your webcam or microphone. ### Pre-installation checks @@ -59,8 +59,8 @@ LANG="en_US.UTF-8" If you don't see `LANG="en_US.UTF-8"`, enter the following commands to set the local to `en_US.UTF-8`. ```bash -$ sudo apt-get install -y language-pack-en -$ sudo update-locale LANG=en_US.UTF-8 +sudo apt-get install -y language-pack-en +sudo update-locale LANG=en_US.UTF-8 ``` and then log out and log in again to your SSH session -- this will reload the locale configuration for your session. Run the above command `cat /etc/default/locale` again. Verify you see only the single line `LANG="en_US.UTF-8"`. @@ -145,10 +145,12 @@ $ sudo ufw status ``` If you don't see these lines, you need to open them by + ```bash sudo ufw allow 80 sudo ufw allow 443 ``` + Sometimes we get asked "Why are you only supporting Ubuntu 20.04 64-bit?". The answer is based on choosing quality over quantity. Long ago we concluded that its better for the project to have solid, well-tested, well-documented installation for a specific version of Linux that works really, really well than to try and support may variants of Linux and have none of them work well. At the moment, the requirement for docker may preclude running 2.7 within some virtualized environments; however, it ensures libreoffice runs within a restricted sandbox for document conversion. We are exploring if we can run libreoffice within systemd (such as systemd-nspawn). @@ -332,8 +334,8 @@ You can upgrade in a few steps: Make sure you don't have `bbb-demo` installed `sudo apt purge bbb-demo` Then run the `bbb-install.sh` script -- it will download and install the latest release of BigBlueButton 2.7 on top of your old 2.5 version. - - Make sure you read through the "what's new in 2.7" document https://docs.bigbluebutton.org/2.7/new and specifically https://docs.bigbluebutton.org/2.7/new#other-notable-changes + + Make sure you read through the "what's new in 2.7" document and specifically ### Upgrading from BigBlueButton 2.4 @@ -344,8 +346,8 @@ If you are upgrading BigBlueButton 2.4 or 2.3 we recommend you set up a new Ubun You can restart and check your BigBlueButton server at any time using the commands ```bash -$ sudo bbb-conf --restart -$ sudo bbb-conf --check +sudo bbb-conf --restart +sudo bbb-conf --check ``` The `bbb-conf --check` scans some of the log files for error messages. Again, any output that followed `Potential problems` **may** indicate configuration errors or installation errors. In many cases, the messages will give you recommendations on how to resolve the issue. @@ -401,10 +403,10 @@ Large scale deployments must include several other components in addition to the ## Customizations -See the [Server customization page](/administration/customize) for things you can do to adapt BigBlueButton to your environment or enable optional features after installation. For example +See the [Server customization page](/administration/customize) for things you can do to adapt BigBlueButton to your environment or enable optional features after installation. For example -* [Install additional recording processing formats](/administration/customize#install-additional-recording-processing-formats) -* [Enable generating mp4 (H.264) video output](/administration/customize#enable-generating-mp4-h264-video-output) +- [Install additional recording processing formats](/administration/customize#install-additional-recording-processing-formats) +- [Enable generating mp4 (H.264) video output](/administration/customize#enable-generating-mp4-h264-video-output) ## Troubleshooting From 5a24e9a52079cbc47853a97a6cfb74f016e99e8d Mon Sep 17 00:00:00 2001 From: mbm_1607 Date: Wed, 18 Oct 2023 17:51:12 +0500 Subject: [PATCH 10/13] :pencil2: Fix typo in docs issue template --- .github/ISSUE_TEMPLATE/docs-issue.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/docs-issue.md b/.github/ISSUE_TEMPLATE/docs-issue.md index 6e7cc7db7c..b066d543b7 100644 --- a/.github/ISSUE_TEMPLATE/docs-issue.md +++ b/.github/ISSUE_TEMPLATE/docs-issue.md @@ -13,7 +13,7 @@ This issue tracker is only for bbb development or docs related issues.--> **Link to the portion of the docs that is out of date** If applicable, link to the section of the docs that is out of date. -**Describe what you belive the correct version should be** +**Describe what you believe the correct version should be** **Screenshots** If applicable, add screenshots to help explain your concern. From ae2fb8ba78a6518e756438f566f6d69596d2c318 Mon Sep 17 00:00:00 2001 From: Louis-Michel Couture Date: Wed, 18 Oct 2023 17:47:16 -0400 Subject: [PATCH 11/13] Update outdated reference to index.html path --- docs/docs/administration/customize.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/administration/customize.md b/docs/docs/administration/customize.md index 776d502fdb..fd956b5dff 100644 --- a/docs/docs/administration/customize.md +++ b/docs/docs/administration/customize.md @@ -1074,7 +1074,7 @@ $ sudo apt-get purge bbb-demo The default HTML landing page is located in ```bash -/var/www/bigbluebutton-default/index.html +/var/www/bigbluebutton-default/assets/index.html ``` Change this page to create your own landing page (and keep a back-up copy of it as it will be overwritten during package updates to `bbb-conf`). From c541c2fdc26c6c0fa695db04865d238985d3d0c6 Mon Sep 17 00:00:00 2001 From: farhatahmad Date: Thu, 23 Nov 2023 14:22:11 -0500 Subject: [PATCH 12/13] Greenlight v3 more docs updates --- docs/docs/greenlight/v3/migration.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/docs/greenlight/v3/migration.md b/docs/docs/greenlight/v3/migration.md index a23a760cd6..18131aef89 100644 --- a/docs/docs/greenlight/v3/migration.md +++ b/docs/docs/greenlight/v3/migration.md @@ -60,7 +60,7 @@ In Greenlight v2 **.env** file, add the following variables: ![env_migration_endpoints.png](/img/greenlight/v3/migration/env_migration_endpoints.png) -## Migration Steps +### Understanding the Migrations **The migrations must be run in the following order: roles, users, rooms, settings.** @@ -80,7 +80,7 @@ However, a failed migration resource should not hinder the whole migration proce **If re-running the migration does not solve the issue, the error message should give you a clue of what went wrong.** -### Roles Migration +## Roles Migration The custom Roles and the corresponding Role Permissions will be migrated. @@ -96,13 +96,15 @@ sudo docker exec -it greenlight-v2 bundle exec rake migrations:roles **If you have an error, try re-running the migration task to resolve any failed resources migration.** **Also, make sure that the Greenlight v3 server is running and accessible through your network.** -### Users Migration +## Users Migration The Users will be migrated with their corresponding role. Important notes: - Both local and external users will be migrated. -#### Local Accounts +### Local Accounts +** If you only have external users (google, office365, LDAP, SAML, etc..), please skip to the next section.** + When migrating local accounts from GLv2 to GLv3, the password_digest field will be securely transferred from v2 to v3. This ensures that local customers can seamlessly sign in using the exact same password as in v2. To enable this, it's crucial that both GLv2 and GLv3 share the same value for the SECRET_KEY_BASE environment variable, which is set in the .env file. @@ -128,19 +130,17 @@ On your GLv3 machine, replace the `SECRET_KEY_BASE` in your .env file with the s Ensure that the `SECRET_KEY_BASE` values for GLv2, GLv3, and the `V3_SECRET_KEY_BASE` variable in GLv2's `.env` file are now synchronized. -#### Migrating Users +### Migrating Users **To migrate all of your v2 users to v3, run the following command:** ```bash sudo docker exec -it greenlight-v2 bundle exec rake migrations:users ``` -**To migrate only a portion of the users starting from *FIRST_USER_ID* to *LAST_USER_ID*, run this command instead:** - **If you have an error, try re-running the migration task to resolve any failed resources migration.** **Also, make sure that the Roles migration has been successful.** -### Rooms Migration +## Rooms Migration The Rooms will be migrated with their corresponding Room Settings. Also, the Shared Accesses will be migrated. Important notes: @@ -158,7 +158,7 @@ sudo docker exec -it greenlight-v2 bundle exec rake migrations:rooms **If you have an error, try re-running the migration task to resolve any failed resources migration.** **Also, make sure that the Users migration has been successful.** -### Settings Migration +## Settings Migration The Site Settings and the Rooms Configuration will be migrated. - The *Site Settings* are customisable settings related to the Greenlight application, such as the Brand colors, the Brand image, the Registration method, the Terms & Conditions. From cd21fffaaa5fc6190f80a8eceba88f68d44fd0db Mon Sep 17 00:00:00 2001 From: Gustavo Trott Date: Fri, 24 Nov 2023 10:19:40 -0300 Subject: [PATCH 13/13] fix: Button 'Open Tablet app' breaks when the meeting name contains white space --- .../imports/ui/components/mobile-app-modal/component.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bigbluebutton-html5/imports/ui/components/mobile-app-modal/component.jsx b/bigbluebutton-html5/imports/ui/components/mobile-app-modal/component.jsx index 45fece05cd..f04d86ea20 100644 --- a/bigbluebutton-html5/imports/ui/components/mobile-app-modal/component.jsx +++ b/bigbluebutton-html5/imports/ui/components/mobile-app-modal/component.jsx @@ -121,7 +121,7 @@ class MobileAppModal extends Component { color="primary" disabled={url === ''} label={intl.formatMessage(intlMessages.openApp)} - onClick={() => window.open(`${BBB_TABLET_APP_CONFIG.iosAppUrlScheme}://${meetingName}/${encodeURIComponent(url)}`, '_blank')} + onClick={() => window.open(`${BBB_TABLET_APP_CONFIG.iosAppUrlScheme}://${encodeURIComponent(meetingName)}/${encodeURIComponent(url)}`, '_blank')} role="button" size="lg" />