Merge branch 'v2.7.x-release' into v2.7.x-release
This commit is contained in:
commit
3daf0ba7d3
2
.github/ISSUE_TEMPLATE/docs-issue.md
vendored
2
.github/ISSUE_TEMPLATE/docs-issue.md
vendored
@ -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**
|
**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.
|
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**
|
**Screenshots**
|
||||||
If applicable, add screenshots to help explain your concern.
|
If applicable, add screenshots to help explain your concern.
|
||||||
|
@ -121,7 +121,7 @@ class MobileAppModal extends Component {
|
|||||||
color="primary"
|
color="primary"
|
||||||
disabled={url === ''}
|
disabled={url === ''}
|
||||||
label={intl.formatMessage(intlMessages.openApp)}
|
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"
|
role="button"
|
||||||
size="lg"
|
size="lg"
|
||||||
/>
|
/>
|
||||||
|
@ -25,19 +25,22 @@ const Cursor = (props) => {
|
|||||||
_y = (y + tldrawCamera?.point[1]) * tldrawCamera?.zoom;
|
_y = (y + tldrawCamera?.point[1]) * tldrawCamera?.zoom;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const transitionStyle = owner ? { transition: 'left 0.3s ease-out, top 0.3s ease-out' } : {};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<div
|
<div
|
||||||
style={{
|
style={{
|
||||||
zIndex: z,
|
zIndex: z,
|
||||||
position: 'absolute',
|
position: 'absolute',
|
||||||
left: (_x || x) - pointerDiameter/2,
|
left: (_x || x) - pointerDiameter / 2,
|
||||||
top: (_y || y) - pointerDiameter/2,
|
top: (_y || y) - pointerDiameter / 2,
|
||||||
width: pointerDiameter,
|
width: pointerDiameter,
|
||||||
height: pointerDiameter,
|
height: pointerDiameter,
|
||||||
borderRadius: '50%',
|
borderRadius: '50%',
|
||||||
background: `${color}`,
|
background: `${color}`,
|
||||||
pointerEvents: 'none',
|
pointerEvents: 'none',
|
||||||
|
...transitionStyle,
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
@ -57,6 +60,7 @@ const Cursor = (props) => {
|
|||||||
color: '#FFF',
|
color: '#FFF',
|
||||||
backgroundColor: color,
|
backgroundColor: color,
|
||||||
border: `1px solid ${color}`,
|
border: `1px solid ${color}`,
|
||||||
|
...transitionStyle,
|
||||||
}}
|
}}
|
||||||
data-test="whiteboardCursorIndicator"
|
data-test="whiteboardCursorIndicator"
|
||||||
>
|
>
|
||||||
|
@ -76,8 +76,8 @@
|
|||||||
"app.timer.hours": "ordu",
|
"app.timer.hours": "ordu",
|
||||||
"app.timer.minutes": "minutu",
|
"app.timer.minutes": "minutu",
|
||||||
"app.timer.seconds": "segundo",
|
"app.timer.seconds": "segundo",
|
||||||
"app.timer.songs": "Soinuak",
|
"app.timer.music": "Musika",
|
||||||
"app.timer.noTrack": "Soinurik gabe",
|
"app.timer.noTrack": "Musikarik ez",
|
||||||
"app.timer.track1": "Erlaxazioa",
|
"app.timer.track1": "Erlaxazioa",
|
||||||
"app.timer.track2": "Lasaitasuna",
|
"app.timer.track2": "Lasaitasuna",
|
||||||
"app.timer.track3": "Zoriontasuna",
|
"app.timer.track3": "Zoriontasuna",
|
||||||
@ -436,6 +436,7 @@
|
|||||||
"app.muteWarning.label": "Klikatu {0} zure ahotsa aktibatzeko",
|
"app.muteWarning.label": "Klikatu {0} zure ahotsa aktibatzeko",
|
||||||
"app.muteWarning.disableMessage": "Abisuen isiltzea inaktiboa egongo da zure ahotsa aktibatu arte",
|
"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.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.optionsLabel": "Aukerak",
|
||||||
"app.navBar.settingsDropdown.fullscreenLabel": "Pantaila osoko aplikazioa",
|
"app.navBar.settingsDropdown.fullscreenLabel": "Pantaila osoko aplikazioa",
|
||||||
"app.navBar.settingsDropdown.settingsLabel": "Ezarpenak",
|
"app.navBar.settingsDropdown.settingsLabel": "Ezarpenak",
|
||||||
@ -1167,6 +1168,7 @@
|
|||||||
"app.videoDock.webcamDisableLabelAllCams": "Desgaitu norberaren ikuspegia (kamera guztiak)",
|
"app.videoDock.webcamDisableLabelAllCams": "Desgaitu norberaren ikuspegia (kamera guztiak)",
|
||||||
"app.videoDock.webcamEnableLabel": "Gaitu norberaren ikuspegia",
|
"app.videoDock.webcamEnableLabel": "Gaitu norberaren ikuspegia",
|
||||||
"app.videoDock.webcamDisableDesc": "Norberaren ikuspegia desaktibatu da",
|
"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.webcamPinLabel": "Ainguratu",
|
||||||
"app.videoDock.webcamPinDesc": "Ainguratu hautatutako webkamera",
|
"app.videoDock.webcamPinDesc": "Ainguratu hautatutako webkamera",
|
||||||
"app.videoDock.webcamFullscreenLabel": "Pantaila osoko web-kamera",
|
"app.videoDock.webcamFullscreenLabel": "Pantaila osoko web-kamera",
|
||||||
|
@ -76,8 +76,8 @@
|
|||||||
"app.timer.hours": "heures",
|
"app.timer.hours": "heures",
|
||||||
"app.timer.minutes": "minutes",
|
"app.timer.minutes": "minutes",
|
||||||
"app.timer.seconds": "secondes",
|
"app.timer.seconds": "secondes",
|
||||||
"app.timer.songs": "Chansons",
|
"app.timer.music": "Musique",
|
||||||
"app.timer.noTrack": "Pas de chansons",
|
"app.timer.noTrack": "Aucune musique",
|
||||||
"app.timer.track1": "Détente",
|
"app.timer.track1": "Détente",
|
||||||
"app.timer.track2": "Calme",
|
"app.timer.track2": "Calme",
|
||||||
"app.timer.track3": "Heureux",
|
"app.timer.track3": "Heureux",
|
||||||
@ -436,6 +436,7 @@
|
|||||||
"app.muteWarning.label": "Cliquez sur {0} pour réactiver votre micro.",
|
"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.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.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.optionsLabel": "Options",
|
||||||
"app.navBar.settingsDropdown.fullscreenLabel": "Application en plein écran",
|
"app.navBar.settingsDropdown.fullscreenLabel": "Application en plein écran",
|
||||||
"app.navBar.settingsDropdown.settingsLabel": "Paramètres",
|
"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.webcamDisableLabelAllCams": "Désactiver l'affichage de soi (toutes les caméras)",
|
||||||
"app.videoDock.webcamEnableLabel": "Activer la vision de soi",
|
"app.videoDock.webcamEnableLabel": "Activer la vision de soi",
|
||||||
"app.videoDock.webcamDisableDesc": "Vision de soi désactivée",
|
"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.webcamPinLabel": "Épingler",
|
||||||
"app.videoDock.webcamPinDesc": "Épingler la caméra sélectionnée",
|
"app.videoDock.webcamPinDesc": "Épingler la caméra sélectionnée",
|
||||||
"app.videoDock.webcamFullscreenLabel": "Webcam en plein écran",
|
"app.videoDock.webcamFullscreenLabel": "Webcam en plein écran",
|
||||||
|
@ -34,6 +34,14 @@
|
|||||||
"app.chat.two.typing": "{0} ve {1} yazıyor...",
|
"app.chat.two.typing": "{0} ve {1} yazıyor...",
|
||||||
"app.chat.copySuccess": "Sohbet yazışmaları kopyalandı",
|
"app.chat.copySuccess": "Sohbet yazışmaları kopyalandı",
|
||||||
"app.chat.copyErr": "Sohbet yazışmaları kopyalanamadı",
|
"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.search": "Arama",
|
||||||
"app.emojiPicker.notFound": "Herhangi bir emoji bulunamadı",
|
"app.emojiPicker.notFound": "Herhangi bir emoji bulunamadı",
|
||||||
"app.emojiPicker.skintext": "Varsayılan ten renginizi seçin",
|
"app.emojiPicker.skintext": "Varsayılan ten renginizi seçin",
|
||||||
@ -68,8 +76,8 @@
|
|||||||
"app.timer.hours": "saat",
|
"app.timer.hours": "saat",
|
||||||
"app.timer.minutes": "dakika",
|
"app.timer.minutes": "dakika",
|
||||||
"app.timer.seconds": "saniye",
|
"app.timer.seconds": "saniye",
|
||||||
"app.timer.songs": "Şarkılar",
|
"app.timer.music": "Müzik",
|
||||||
"app.timer.noTrack": "Şarkı yok",
|
"app.timer.noTrack": "Müzik yok",
|
||||||
"app.timer.track1": "Rahatlatıcı",
|
"app.timer.track1": "Rahatlatıcı",
|
||||||
"app.timer.track2": "Sakin",
|
"app.timer.track2": "Sakin",
|
||||||
"app.timer.track3": "Mutlu",
|
"app.timer.track3": "Mutlu",
|
||||||
@ -287,15 +295,15 @@
|
|||||||
"app.presentationUploader.sent": "Gönderildi",
|
"app.presentationUploader.sent": "Gönderildi",
|
||||||
"app.presentationUploader.exportingTimeout": "Dışa aktarma işlemi çok uzun sürüyor...",
|
"app.presentationUploader.exportingTimeout": "Dışa aktarma işlemi çok uzun sürüyor...",
|
||||||
"app.presentationUploader.export": "Sohbete gönder",
|
"app.presentationUploader.export": "Sohbete gönder",
|
||||||
"app.presentationUploader.exportCurrentStatePresentation": "Sunumun geçerli durumundaki indirme bağlantısını gönder",
|
"app.presentationUploader.exportCurrentStatePresentation": "Sunumun tahta notlarının da bulunduğu indirme bağlantısını gönder",
|
||||||
"app.presentationUploader.enableOriginalPresentationDownload": "Özgün sunum indirilebilsin",
|
"app.presentationUploader.enableOriginalPresentationDownload": "Sunum ({0}) indirilebilsin",
|
||||||
"app.presentationUploader.disableOriginalPresentationDownload": "Özgün sunum indirilemesin",
|
"app.presentationUploader.disableOriginalPresentationDownload": "Özgün sunum ({0}) indirilemesin",
|
||||||
"app.presentationUploader.dropdownExportOptions": "Dışa aktarma seçenekleri",
|
"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.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.downloadButtonAvailable": "{0} sunumu için indirme düğmesi kullanılabilir.",
|
||||||
"app.presentationUploader.export.notAccessibleWarning": "erişilebilirlik uyumluluğu olmayabilir",
|
"app.presentationUploader.export.notAccessibleWarning": "erişilebilirlik uyumluluğu olmayabilir",
|
||||||
"app.presentationUploader.export.originalLabel": "Özgün",
|
"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.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.extraHint": "ÖNEMLİ: Her bir dosya {0} MB boyutundan ve {1} sayfadan küçük olmalıdır.",
|
||||||
"app.presentationUploder.uploadLabel": "Yükle",
|
"app.presentationUploder.uploadLabel": "Yükle",
|
||||||
@ -421,13 +429,14 @@
|
|||||||
"app.polling.pollAnswerLabel": "Oylama yanıtı {0}",
|
"app.polling.pollAnswerLabel": "Oylama yanıtı {0}",
|
||||||
"app.polling.pollAnswerDesc": "Bu seçeneği kullanarak {0} için oy verin",
|
"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.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.connectingMessage": "Bağlantı kuruluyor...",
|
||||||
"app.waitingMessage": "Bağlantı kesildi. {0} saniye içinde yeniden bağlantı kurulmaya çalışılacak...",
|
"app.waitingMessage": "Bağlantı kesildi. {0} saniye içinde yeniden bağlantı kurulmaya çalışılacak...",
|
||||||
"app.retryNow": "Şimdi yeniden dene",
|
"app.retryNow": "Şimdi yeniden dene",
|
||||||
"app.muteWarning.label": "Sesinizi açmak için {0} üzerine tıklayın.",
|
"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.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.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.optionsLabel": "Seçenekler",
|
||||||
"app.navBar.settingsDropdown.fullscreenLabel": "Uygulamayı tam ekran görüntüle",
|
"app.navBar.settingsDropdown.fullscreenLabel": "Uygulamayı tam ekran görüntüle",
|
||||||
"app.navBar.settingsDropdown.settingsLabel": "Ayarlar",
|
"app.navBar.settingsDropdown.settingsLabel": "Ayarlar",
|
||||||
@ -641,6 +650,7 @@
|
|||||||
"app.actionsBar.reactions.reactionsButtonLabel": "Tepki çubuğu",
|
"app.actionsBar.reactions.reactionsButtonLabel": "Tepki çubuğu",
|
||||||
"app.actionsBar.reactions.raiseHand": "El kaldır",
|
"app.actionsBar.reactions.raiseHand": "El kaldır",
|
||||||
"app.actionsBar.reactions.lowHand": "Eli indir",
|
"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.statusTriggerLabel": "Durumu ayarla",
|
||||||
"app.actionsBar.emojiMenu.awayLabel": "Uzakta",
|
"app.actionsBar.emojiMenu.awayLabel": "Uzakta",
|
||||||
"app.actionsBar.emojiMenu.awayDesc": "Durumunuzu uzakta yapar",
|
"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.meetingMuteOn.label": "Tüm kullanıcıların sesi kapatıldı",
|
||||||
"app.toast.meetingMuteOnViewers.label": "Tüm izleyicilerin 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.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.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.raiseHand": "Elinizi kaldırdınız",
|
||||||
"app.toast.setEmoji.lowerHand": "Eliniz indirildi",
|
"app.toast.setEmoji.lowerHand": "Eliniz indirildi",
|
||||||
"app.toast.setEmoji.away": "Durumunuzu uzakta olarak ayarladınız",
|
"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.webcamDisableLabelAllCams": "Kendini görmeyi kapat (tüm kameralar)",
|
||||||
"app.videoDock.webcamEnableLabel": "Kendini görmeyi aç",
|
"app.videoDock.webcamEnableLabel": "Kendini görmeyi aç",
|
||||||
"app.videoDock.webcamDisableDesc": "Kendini görme kapalı",
|
"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.webcamPinLabel": "Sabitle",
|
||||||
"app.videoDock.webcamPinDesc": "Seçilmiş kamera görüntüsünü sabitler",
|
"app.videoDock.webcamPinDesc": "Seçilmiş kamera görüntüsünü sabitler",
|
||||||
"app.videoDock.webcamFullscreenLabel": "Kamerayı tam ekran görüntüle",
|
"app.videoDock.webcamFullscreenLabel": "Kamerayı tam ekran görüntüle",
|
||||||
|
@ -9,7 +9,7 @@ buildscript {
|
|||||||
dependencies {
|
dependencies {
|
||||||
classpath "org.grails:grails-gradle-plugin:${grailsGradlePluginVersion}"
|
classpath "org.grails:grails-gradle-plugin:${grailsGradlePluginVersion}"
|
||||||
classpath "org.grails.plugins:hibernate5:${gormVersion}"
|
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 "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-gradle:2.1.1"
|
||||||
classpath "org.grails.plugins:views-json:2.1.1"
|
classpath "org.grails.plugins:views-json:2.1.1"
|
||||||
@ -53,10 +53,10 @@ repositories {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
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-core:5.3.31"
|
||||||
implementation "org.springframework:spring-context:5.3.27"
|
implementation "org.springframework:spring-context:5.3.31"
|
||||||
implementation "org.springframework.boot:spring-boot:${springVersion}"
|
implementation "org.springframework.boot:spring-boot:${springVersion}"
|
||||||
implementation "org.springframework.boot:spring-boot-starter-logging:${springVersion}"
|
implementation "org.springframework.boot:spring-boot-starter-logging:${springVersion}"
|
||||||
implementation "org.springframework.boot:spring-boot-autoconfigure:${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.springframework.boot:spring-boot-starter-tomcat:${springVersion}"
|
||||||
|
|
||||||
implementation "org.grails:grails-web-boot:5.2.5"
|
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-logging"
|
||||||
implementation "org.grails:grails-plugin-rest:5.2.5"
|
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:views-json:2.1.1"
|
||||||
implementation "org.grails.plugins:cache"
|
implementation "org.grails.plugins:cache"
|
||||||
implementation "org.apache.xmlbeans:xmlbeans:5.0.3"
|
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:async"
|
||||||
implementation "org.grails.plugins:scaffolding"
|
implementation "org.grails.plugins:scaffolding"
|
||||||
implementation "org.grails.plugins:events"
|
implementation "org.grails.plugins:events"
|
||||||
@ -109,7 +109,7 @@ dependencies {
|
|||||||
//--- BigBlueButton Dependencies End
|
//--- BigBlueButton Dependencies End
|
||||||
console "org.grails:grails-console:5.2.0"
|
console "org.grails:grails-console:5.2.0"
|
||||||
profile "org.grails.profiles:web"
|
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:grails-gorm-testing-support"
|
||||||
testImplementation "org.grails.plugins:geb"
|
testImplementation "org.grails.plugins:geb"
|
||||||
testImplementation "org.grails:grails-web-testing-support"
|
testImplementation "org.grails:grails-web-testing-support"
|
||||||
@ -127,6 +127,8 @@ configurations.implementation {
|
|||||||
exclude group: 'io.micronaut', module: 'micronaut-aop'
|
exclude group: 'io.micronaut', module: 'micronaut-aop'
|
||||||
exclude group: 'com.h2database', module: 'h2'
|
exclude group: 'com.h2database', module: 'h2'
|
||||||
exclude group: 'org.graalvm.sdk', module: 'graal-sdk'
|
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 {
|
configurations {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
grailsVersion=5.3.3
|
grailsVersion=6.1.0
|
||||||
gormVersion=7.3.1
|
gormVersion=7.3.1
|
||||||
gradleWrapperVersion=7.3.1
|
gradleWrapperVersion=7.6.3
|
||||||
grailsGradlePluginVersion=5.0.0
|
grailsGradlePluginVersion=6.1.0
|
||||||
groovyVersion=3.0.19
|
groovyVersion=3.0.19
|
||||||
tomcatEmbedVersion=9.0.82
|
tomcatEmbedVersion=9.0.82
|
||||||
springVersion=2.7.17
|
springVersion=2.7.17
|
||||||
|
@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
|
|||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.1-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.3-bin.zip
|
@ -10,7 +10,7 @@ keywords:
|
|||||||
|
|
||||||
## Introduction
|
## 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.
|
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.
|
||||||
|
|
||||||
|
@ -1074,7 +1074,7 @@ $ sudo apt-get purge bbb-demo
|
|||||||
The default HTML landing page is located in
|
The default HTML landing page is located in
|
||||||
|
|
||||||
```bash
|
```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`).
|
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`).
|
||||||
|
@ -41,7 +41,7 @@ If you are setting up BigBlueButton for local development on your workstation, y
|
|||||||
- 50G of disk space
|
- 50G of disk space
|
||||||
- IPV4 address only
|
- 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
|
### 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`.
|
If you don't see `LANG="en_US.UTF-8"`, enter the following commands to set the local to `en_US.UTF-8`.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ sudo apt-get install -y language-pack-en
|
sudo apt-get install -y language-pack-en
|
||||||
$ sudo update-locale LANG=en_US.UTF-8
|
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"`.
|
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
|
If you don't see these lines, you need to open them by
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo ufw allow 80
|
sudo ufw allow 80
|
||||||
sudo ufw allow 443
|
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.
|
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).
|
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).
|
||||||
@ -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
|
You can restart and check your BigBlueButton server at any time using the commands
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ sudo bbb-conf --restart
|
sudo bbb-conf --restart
|
||||||
$ sudo bbb-conf --check
|
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.
|
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.
|
||||||
@ -403,8 +405,8 @@ Large scale deployments must include several other components in addition to the
|
|||||||
|
|
||||||
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)
|
- [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)
|
- [Enable generating mp4 (H.264) video output](/administration/customize#enable-generating-mp4-h264-video-output)
|
||||||
|
|
||||||
## Troubleshooting
|
## Troubleshooting
|
||||||
|
|
||||||
|
@ -139,11 +139,12 @@ SMTP configuration requires following the guidelines provided by your SMTP serve
|
|||||||
### OpenID Connect Setup
|
### OpenID Connect Setup
|
||||||
|
|
||||||
| Variable Name | Description | Default Value |
|
| Variable Name | Description | Default Value |
|
||||||
|---------------|---------------------------------------------------------------------------------------------------------------------------------------|---------------|
|
|---------------|-----------------------------------------------------------------------------------------------------|--------------|
|
||||||
| OPENID_CONNECT_CLIENT_ID | The client ID of the OpenID issuer | - |
|
| 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_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_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_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
|
### HCaptcha Setup
|
||||||
|
|
||||||
|
@ -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.
|
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
|
### Configuring the Environment
|
||||||
|
|
||||||
In Greenlight v2 **.env** file, add the following variables:
|
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)
|
![env_migration_endpoints.png](/img/greenlight/v3/migration/env_migration_endpoints.png)
|
||||||
|
|
||||||
### The rake migration task file
|
### Understanding the Migrations
|
||||||
|
|
||||||
**If your Greenlight v2 deployment is up to date with the official latest release, you can skip to [Migration Steps](#migration-steps).**
|
**The migrations must be run in the following order: roles, users, rooms, settings.**
|
||||||
|
|
||||||
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 logs will indicate the status of the migrated resources in real-time, in the console.
|
The logs will indicate the status of the migrated resources in real-time, in the console.
|
||||||
|
|
||||||
@ -105,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.**
|
**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.
|
The custom Roles and the corresponding Role Permissions will be migrated.
|
||||||
|
|
||||||
@ -121,30 +96,51 @@ 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.**
|
**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.**
|
**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.
|
The Users will be migrated with their corresponding role.
|
||||||
|
|
||||||
Important notes:
|
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.
|
- Both local and external users will be migrated.
|
||||||
|
|
||||||
|
### 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.
|
||||||
|
|
||||||
|
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:**
|
**To migrate all of your v2 users to v3, run the following command:**
|
||||||
```bash
|
```bash
|
||||||
sudo docker exec -it greenlight-v2 bundle exec rake migrations:users
|
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\[<FIRST_USER_ID>,<LAST_USER_ID>]
|
|
||||||
```
|
|
||||||
|
|
||||||
*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.**
|
**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.**
|
**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.
|
The Rooms will be migrated with their corresponding Room Settings. Also, the Shared Accesses will be migrated.
|
||||||
|
|
||||||
Important notes:
|
Important notes:
|
||||||
@ -159,20 +155,10 @@ Important notes:
|
|||||||
sudo docker exec -it greenlight-v2 bundle exec rake migrations:rooms
|
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\[<FIRST_ROOM_ID>,<LAST_ROOM_ID>]
|
|
||||||
```
|
|
||||||
|
|
||||||
*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.**
|
**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.**
|
**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 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.
|
- 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.
|
||||||
@ -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.**
|
**If you have an error, try re-running the migration task to resolve any failed resources migration.**
|
||||||
|
|
||||||
## After the 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.
|
Having completed the migration successfully, the final step is to import the recordings into v3.
|
||||||
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.**
|
|
||||||
|
|
||||||
To send a reset password email to all your users, 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 migration:reset_password_email\[<BASE URL>]
|
|
||||||
```
|
|
||||||
|
|
||||||
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:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo docker exec -it greenlight-v3 bundle exec rake server_recordings_sync
|
sudo docker exec -it greenlight-v3 bundle exec rake server_recordings_sync
|
||||||
|
Loading…
Reference in New Issue
Block a user