«Добавить BigBlueButton» к уже существующей конференции
Этот плагин автоматически создаёт для вас комнату, когда вы нажимаете «Добавить BigBlueButton». Однако вы можете захотеть использовать уже существующую комнату (созданную до установки этого плагина). Вот два примера, почему это может понадобиться.
-
Вы уже создали комнату — (например, в Greenlight) и хотите разрешить людям присоединяться также через Discourse.
-
Также разрешить присоединение по ссылке — При использовании Greenlight (стандартного фронтенда) генерируется общая ссылка для подключения к звонку. С помощью этого люди могут присоединяться как через Discourse, так и по ссылке.
Это довольно инвазивный процесс, поэтому убедитесь, что вы точно понимаете, что делаете.
Инструкция
Скорее всего, используемый вами фронтенд (Greenlight?) не предоставляет низкоуровневую информацию, такую как идентификатор встречи (meeting ID) или attendeePW (который отличается от кода доступа к комнате — знаю, это запутанно). Поэтому, чтобы получить эти данные, нам придётся использовать API BigBlueButton для получения всей информации о встречах.
Примечание: Возможно, существует более простой способ сделать это, но я о нём не знаю. Если это так, дайте мне знать.
Предварительные требования
- доступ к терминалу сервера BBB (например, через SSH);
- базовые знания Python (для проверки моего кода);
- понимание рисков безопасности при использовании API BBB.
1. Получение секретного ключа и конечной точки API BBB
Зайдите в оболочку (например, через SSH) на сервере, где запущен BBB, и выполните команду:
sudo bbb-conf --secret
Это выдаст вам URL и Secret. Они понадобятся позже.
Любой, кто знает этот секретный ключ, может совершить вредоносные действия на вашем сервере! Поэтому храните его в безопасности.
2. Создание скрипта на Python 3 для получения информации о встрече
Ниже представлен простой скрипт на Python 3, который принимает ваш URL и секретный ключ (полученные на шаге 1) и формирует API-запрос для получения информации о встречах:
Не просто вставляйте случайные скрипты, найденные в интернете (включая этот!). Проверьте их, убедитесь, что они имеют смысл, и при необходимости ознакомьтесь с документацией API.
import hashlib
from urllib.parse import urljoin
# Вставьте ваши переменные здесь
base_url = "ВСТАВЬТЕ_ЗДЕСЬ_ВАШ_URL" + "api/"
secret = "ВСТАВЬТЕ_ЗДЕСЬ_ВАШ_SECRET"
# генерация контрольной суммы безопасности
plaintext = "getMeetings" + secret
sha1 = hashlib.sha1()
sha1.update(plaintext.encode('utf-8'))
checksum = sha1.hexdigest()
# получение URL API для получения информации о встречах
url = urljoin(base_url, "getMeetings?checksum=" + checksum)
print("откройте следующий URL, чтобы увидеть информацию о встрече")
print(url)
Замените ВСТАВЬТЕ_ЗДЕСЬ_ВАШ_URL на полученный ранее URL API, а ВСТАВЬТЕ_ЗДЕСЬ_ВАШ_SECRET — на ваш секретный ключ, затем запустите скрипт.
После этого должен отобразиться URL вида https://example.com/bigbluebutton/api/getMeetings?checksum=20e928e8928e8e9f919928e829d999df82882818.
Любой, у кого есть этот URL, может совершить вредоносные действия!
Они смогут увидеть все текущие встречи, количество пользователей в каждой из них, а также получить учётные данные для подключения к ним.
3. Открытие URL
Откройте его в режиме инкогнито, чтобы убедиться, что URL не сохранится в истории браузера из-за предупреждения выше.
Просто запустите встречу, которую вы планируете добавить, и обновите страницу с API-URL. После этого вы должны увидеть что-то вроде:
<response>
<returncode>SUCCESS</returncode>
<meetings>
<meeting>
<meetingName>Название вашей комнаты</meetingName>
<meetingID>XXXXXXXXXXXXXXXXXXXXXXXXXXX</meetingID>
...
<attendeePW>YYYYYYY</attendeePW>
<moderatorPW>ZZZZZZZ</moderatorPW>
...
Просто найдите строки под нужной вам встречей и возьмите:
- meetingID
- attendeePW
- moderatorPW
После получения этих данных удалите все файлы и закройте все вкладки с доступом к API.
Мы не хотим никаких инцидентов безопасности!
4. «Добавить BigBlueButton» к вашему сообщению
Вместо добавления через обычный интерфейс «Добавить BigBlueButton», просто вставьте следующее в ваше сообщение:
[wrap=discourse-bbb meetingID="XXXXX" attendeePW="YYYYY" moderatorPW="ZZZZZ" mobileIframe="false" desktopIframe="false"][/wrap]
И замените значения на полученные на шаге 3:
- XXXXX — содержимое
meetingID
- YYYYY — содержимое
attendeePW
- ZZZZZZ — содержимое
moderatorPW
Затем сохраните сообщение.
6. Теперь всё должно работать \o/
Теперь вы сможете присоединяться как через Discourse, так и через используемый вами другой фронтенд. Если это был Greenlight, теперь вы также сможете присоединяться по ссылке.}