« Ajouter BigBlueButton » à une conférence déjà existante
Ce plugin crée automatiquement une salle pour vous lorsque vous cliquez sur « Ajouter BigBlueButton ». Cependant, vous souhaiterez peut-être utiliser une salle déjà existante (créée avant que vous n’ayez installé ce plugin). Voici deux exemples de situations où cela peut être utile.
-
Vous avez déjà créé une salle (par exemple avec Greenlight) et vous souhaitez permettre aux personnes de rejoindre également depuis Discourse.
-
Permettre également aux personnes de rejoindre via un lien : lors de l’utilisation de Greenlight (l’interface par défaut), un lien partageable est généré pour rejoindre l’appel. Grâce à cela, les utilisateurs peuvent rejoindre soit via Discourse, soit via ce lien.
Il s’agit d’un processus assez intrusif, assurez-vous donc vraiment de comprendre ce que vous faites.
Instructions
Il est probable que l’interface que vous utilisez (Greenlight ?) ne vous fournisse pas d’informations de bas niveau comme l’ID de réunion ou attendeePW (qui est différent du code d’accès de la salle – je sais, c’est confus). Pour obtenir ces informations, nous devrons donc utiliser l’API de BBB afin de lister toutes les informations relatives aux réunions.
Remarque : il existe peut-être une meilleure méthode, mais je n’en ai pas connaissance. N’hésitez pas à me le faire savoir si c’est le cas.
Prérequis
- Accès au terminal du serveur BBB (via SSH, par exemple)
- Connaissances de base en Python (pour vérifier mon code)
- Compréhension des risques de sécurité liés à l’utilisation de l’API BBB
1. Obtenir le secret BBB et le point de terminaison de l’API
Accédez à un shell (via SSH) sur le serveur BBB en cours d’exécution et exécutez :
sudo bbb-conf --secret
Cela vous fournira une URL et un Secret. Ils vous seront utiles ultérieurement.
Toute personne disposant de ce secret peut effectuer des actions malveillantes sur votre serveur ! Gardez-le donc en sécurité.
2. Créer un script Python 3 pour obtenir les informations de la réunion
Ci-dessous se trouve un simple script Python 3 qui prend votre URL et votre Secret (obtenus à l’étape 1) et génère l’API permettant d’obtenir les informations sur les réunions :
Ne copiez pas aveuglément des scripts aléatoires trouvés sur Internet (celui-ci inclus !). Vérifiez-le pour vous assurer qu’il est logique et, si nécessaire, consultez la documentation de l’API.
import hashlib
from urllib.parse import urljoin
# Insérez vos variables ici
base_url = "COLLEZ_ICI_VOTRE_URL" + "api/"
secret = "COLLEZ_ICI_VOTRE_SECRET"
# Générer la somme de contrôle de sécurité
plaintext = "getMeetings" + secret
sha1 = hashlib.sha1()
sha1.update(plaintext.encode('utf-8'))
checksum = sha1.hexdigest()
# Obtenir l'URL de l'API pour lister les informations des réunions
url = urljoin(base_url, "getMeetings?checksum=" + checksum)
print("Ouvrez l'URL suivante pour voir les informations de la réunion")
print(url)
Remplacez COLLEZ_ICI_VOTRE_URL par l’URL de l’API obtenue précédemment et COLLEZ_ICI_VOTRE_SECRET par votre secret, puis exécutez le script.
À la fin, il devrait afficher une URL du type https://example.com/bigbluebutton/api/getMeetings?checksum=20e928e8928e8e9f919928e829d999df82882818.
Toute personne disposant de cette URL peut effectuer des actions malveillantes !
Elle peut voir toutes les réunions en cours, le nombre d’utilisateurs dans chacune d’elles, ainsi que récupérer les identifiants pour y participer.
3. Ouvrir l’URL
Ouvrez-la en mode navigation privée pour vous assurer que l’URL n’est pas enregistrée dans l’historique du navigateur, en raison de l’avertissement ci-dessus.
Démarrez simplement la réunion que vous souhaitez ajouter et actualisez la page contenant l’URL de l’API. Vous devriez alors voir quelque chose comme :
<response>
<returncode>SUCCESS</returncode>
<meetings>
<meeting>
<meetingName>Votre nom de salle</meetingName>
<meetingID>XXXXXXXXXXXXXXXXXXXXXXXXXXX</meetingID>
...
<attendeePW>YYYYYYY</attendeePW>
<moderatorPW>ZZZZZZZ</moderatorPW>
...
Repérez simplement les lignes situées sous la réunion que vous souhaitez et notez :
- meetingID
- attendeePW
- moderatorPW
Une fois ces informations obtenues, supprimez tous les fichiers et fermez tous les onglets ayant accès à l’API.
Nous ne voulons aucun incident de sécurité !
4. « Ajouter BigBlueButton » à votre publication
Au lieu d’utiliser l’interface habituelle « Ajouter BigBlueButton », collez simplement le suivant dans votre publication :
[wrap=discourse-bbb meetingID="XXXXX" attendeePW="YYYYY" moderatorPW="ZZZZZ" mobileIframe="false" desktopIframe="false"][/wrap]
Et remplacez les valeurs par celles obtenues à l’étape 3 :
- XXXXX par le contenu de
meetingID
- YYYYY par le contenu de
attendeePW
- ZZZZZZ par le contenu de
moderatorPW
Ensuite, enregistrez la publication.
6. Cela devrait maintenant fonctionner \o/
Vous devriez maintenant pouvoir rejoindre la réunion à la fois via Discourse et via l’autre interface que vous utilisiez. Si c’était Greenlight, vous pouvez également rejoindre via le lien désormais.