기존 회의에 “BigBlueButton 추가”
이 플러그인은 “BigBlueButton 추가” 버튼을 클릭하면 자동으로 방을 생성해 줍니다. 하지만 이 플러그인을 설치하기 전에 미리 생성해 둔 기존 방을 사용하고 싶을 수 있습니다. 그렇게 하고 싶은 두 가지 예시를 소개합니다.
-
이미 방을 생성한 경우 - (예: greenlight를 사용하여) 방을 만들었고, 사람들이 discourse에서도 참여할 수 있도록 허용하고 싶은 경우
-
링크를 통한 참여도 허용하는 경우 - greenlight(기본 프론트엔드)를 사용하면 통화에 참여할 수 있는 공유 링크가 생성됩니다. 이를 통해 사람들은 discourse를 통해서든 링크를 통해서든 참여할 수 있습니다.
이 과정은 시스템에 상당한 영향을 미치므로, 자신이 무엇을 하고 있는지 반드시 정확히 이해했는지 확인하십시오
설명서
사용 중인 프론트엔드(greenlight?)는 회의 ID나 attendeePW와 같은 낮은 수준의 정보를 제공하지 않을 가능성이 높습니다. (참고: attendeePW는 방의 액세스 코드와 다릅니다. 혼동하기 쉽지만요.) 따라서 이러한 정보를 얻기 위해 BBB API를 사용하여 모든 회의 정보를 나열해야 합니다.
참고: 더 나은 방법이 있을 수 있지만, 저에게는 알려져 있지 않습니다. 만약 더 나은 방법이 있다면 알려 주십시오.
선행 조건
- BBB 서버에 터미널 접근 권한 (예: ssh를 통해)
- 기본적인 python 지식 (제 코드를 검증하기 위해)
- BBB API 사용 시 보안 위험에 대한 이해
1. BBB 시크릿과 API 엔드포인트 획득
BBB 서버가 실행 중인 셸(ssh를 통해)에 접근하여 다음을 실행합니다.
sudo bbb-conf --secret
이렇게 하면 URL과 Secret이 표시됩니다. 이 값들은 나중에 유용하게 사용됩니다.
이 시크릿을 가진 사람은 서버에 해로운 행위를 할 수 있습니다. 따라서 안전하게 보관하십시오.
2. 회의 정보를 가져오기 위한 python3 스크립트 생성
아래는 1단계에서 제공된 URL과 Secret을 받아 회의 정보를 가져오기 위한 API를 생성하는 간단한 python 3 스크립트입니다:
인터넷에서 찾은 임의의 스크립트(이 스크립트도 포함)를 그대로 붙여 넣지 마십시오. 내용을 확인하고 합리적으로 보이는지, 필요할 경우 API 문서를 참고하십시오.
import hashlib
from urllib.parse import urljoin
# 여기에 변수를 입력하세요
base_url = "PASTE_HERE_YOUR_URL" + "api/"
secret = "PASTE_HERE_YOUR_SECRET"
# 보안 체크섬 생성
plaintext = "getMeetings" + secret
sha1 = hashlib.sha1()
sha1.update(plaintext.encode('utf-8'))
checksum = sha1.hexdigest()
# 회의 정보 나열을 위한 API url 획득
url = urljoin(base_url, "getMeetings?checksum=" + checksum)
print("open the following URL to see the meeting's information")
print(url)
PASTE_HERE_YOUR_URL을 이전에 획득한 API URL로, PASTE_HERE_YOUR_SECRET을 시크릿으로 교체한 후 스크립트를 실행합니다.
실행 후 다음과 같은 url이 출력되어야 합니다: https://example.com/bigbluebutton/api/getMeetings?checksum=20e928e8928e8e9f919928e829d999df82882818
이 URL을 가진 사람은 해로운 행위를 할 수 있습니다!
그들은 현재 진행 중인 모든 회의, 각 회의에 있는 사용자 수, 그리고 회의에 참여하기 위한 자격 증명을 확인할 수 있습니다.
3. URL 열기
위 경고에 따라 브라우저 히스토리에 URL이 저장되지 않도록 비공개 브라우저 모드에서 열어야 합니다.
추가하려는 회의를 시작하고 API URL이 포함된 페이지를 새로고침하십시오. 그러면 다음과 같은 내용을 볼 수 있어야 합니다.
<response>
<returncode>SUCCESS</returncode>
<meetings>
<meeting>
<meetingName>Your room name</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는
atendeePW 내용으로
- ZZZZZZ는
moderatorPW 내용으로
그리고 게시글을 저장하십시오.
6. 이제 작동해야 합니다 \o/
이제 discourse와 이전에 사용하던 다른 프론트엔드 모두에서 참여할 수 있어야 합니다. greenlight를 사용했다면, 이제 링크를 통해서도 참여할 수 있습니다.