This repository has been archived on 2021-10-24. You can view files and clone it, but cannot push or open issues or pull requests.
greenlight/app/controllers/concerns/bbb_server.rb

122 lines
4.2 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
# BigBlueButton open source conferencing system - http://www.bigbluebutton.org/.
#
# Copyright (c) 2018 BigBlueButton Inc. and by respective authors (see below).
#
# This program is free software; you can redistribute it and/or modify it under the
# terms of the GNU Lesser General Public License as published by the Free Software
# Foundation; either version 3.0 of the License, or (at your option) any later
# version.
#
# BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License along
# with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
require 'bigbluebutton_api'
module BbbServer
extend ActiveSupport::Concern
include BbbApi
META_LISTED = "gl-listed"
# Checks if a room is running on the BigBlueButton server.
def room_running?(bbb_id)
bbb_server.is_meeting_running?(bbb_id)
end
# Returns a list of all running meetings
def all_running_meetings
bbb_server.get_meetings
end
def get_recordings(meeting_id)
bbb_server.get_recordings(meetingID: meeting_id)
end
def get_multiple_recordings(meeting_ids)
bbb_server.get_recordings(meetingID: meeting_ids)
end
# Returns a URL to join a user into a meeting.
def join_path(room, name, options = {}, uid = nil)
# Create the meeting, even if it's running
start_session(room, options)
# Determine the password to use when joining.
password = options[:user_is_moderator] ? room.moderator_pw : room.attendee_pw
# Generate the join URL.
join_opts = {}
join_opts[:userID] = uid if uid
join_opts[:join_via_html5] = true
join_opts[:createTime] = room.last_session.to_datetime.strftime("%Q")
bbb_server.join_meeting_url(room.bbb_id, name, password, join_opts)
end
# Creates a meeting on the BigBlueButton server.
def start_session(room, options = {})
create_options = {
Merge v2.7-alpha (#1951) * Fix wrong conditional (reported by LGTM) (#1477) Signed-off-by: Stefan Weil <sw@weilnetz.de> Co-authored-by: Ahmad Farhat <ahmad.af.farhat@gmail.com> * Bump rack from 2.2.2 to 2.2.3 (#1839) Bumps [rack](https://github.com/rack/rack) from 2.2.2 to 2.2.3. - [Release notes](https://github.com/rack/rack/releases) - [Changelog](https://github.com/rack/rack/blob/master/CHANGELOG.md) - [Commits](https://github.com/rack/rack/compare/v2.2.2...2.2.3) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * [FIX] Unable to edit long recording names #1776 (#1780) * Allow to set a filter for LDAP authentication * [FIX] Unable to edit long recording names #1776 Co-authored-by: François Ménabé <francois.menabe@unistra.fr> Co-authored-by: farhatahmad <ahmad.af.farhat@gmail.com> * Desgin for Manage Users Tabs (#1777) * Update _subtitle.html.erb * Update _manage_users_tags.html.erb * Update admins.scss * Update _primary_themes.scss * Update _manage_users_tags.html.erb * Minor style changes to manage users (#1845) * Maintenance banner moved to admin site (#1775) * initial * finish * travis fixes * travis again * not required * Co-authored-by: Tobias Fiebig <t.fiebig@tudelft.nl> (#1296) Co-authored-by: Ahmad Farhat <ahmad.af.farhat@gmail.com> * Enhance Room OpenGraph Metadata (#1601) * Revert "Enhance Room OpenGraph Metadata (#1601)" (#1852) This reverts commit 3b007c233ae12e0407f216ae269c63d6179f73b8. * GRN2-xx: Tab title now displays the current page name (#1853) * Tab title now displays the current page name * Added page title for the rest of the pages * Split Site Settings into 3 different tabs (#1858) * Split Site Settings into 3 different tabs * Fix copyright * Added redirect to correct tab * Make sure settings are displaying when they should * Update en.yml (#1857) * Build images for alpha branches (#1867) * Upgraded jquery to latest version (#1896) * Added favicon tag (#1898) * Fixed XSS issue with role name (#1899) * Update path for coloring redirect (#1908) * Added a fourth section to the room uid (#1910) * Fixed issue with insecure room sharing removal (#1914) * Fixes typo (#1917) Fixes typo: successfully was written incorrect. * Fixed order of rooms in server rooms (#1915) * Change default room sort to latest activity (#1919) * GRN2-xx: Small changes/improvements to the recording settings (#1851) * Small changes/improvements to the recording settings * Replaced room warning with info flash * Added global setting to enable/disable the recording consent feature * Replace Legal with Terms (#1931) * Added a more friendly OpenGraph description when invited to join a room (#1932) * Fixed issue causing maintenance banner not to hide correctly (#1933) * Hide recording menu and recording list when it is disabled (#1935) * Hide recording menu and recording list when it is disabled * Hide recording list when disabled * GRN2-xx: Added an auto-refresh after 2 mins while waiting for room to start (#1947) * Added an auto-refresh after 2 mins while waiting for room to start * Fixed random issue with test case * GRN2-xx: Added ability to preupload presentations to rooms (#1895) * Added ability to preupload presentations to rooms (#1868) * Added setting to site settings and allowed admins to change the presentation * Added AWS S3 and GCS Storage ENV variables * Added check to ensure file extension is correct * Added icon to remove presentation * Added testcases for preupload * Add nginx redirect to solve issue with relative root * Record title, instead of room name, in the popup (#1924) * Update _public_recording_row.html.erb * Update _recording_row.html.erb Co-authored-by: Stefan Weil <sw@weilnetz.de> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: beckerr-rzht <beckerr@hochschule-trier.de> Co-authored-by: François Ménabé <francois.menabe@unistra.fr> Co-authored-by: MrKeksi <mrkeksi@users.noreply.github.com> Co-authored-by: yanosz <yanosz@users.noreply.github.com> Co-authored-by: Moritz Schlarb <moschlar@metalabs.de> Co-authored-by: chronikum <34622984+chronikum@users.noreply.github.com> Co-authored-by: Mitsutaka Sato <miztaka@honestyworks.jp> Co-authored-by: hiroshisuga <45039819+hiroshisuga@users.noreply.github.com>
2020-07-29 11:03:22 -04:00
record: options[:record].to_s,
logoutURL: options[:meeting_logout_url] || '',
moderatorPW: room.moderator_pw,
attendeePW: room.attendee_pw,
moderatorOnlyMessage: options[:moderator_message],
"meta_#{META_LISTED}": options[:recording_default_visibility] || false,
"meta_bbb-origin-version": Greenlight::Application::VERSION,
"meta_bbb-origin": "Greenlight",
"meta_bbb-origin-server-name": options[:host]
}
create_options[:muteOnStart] = options[:mute_on_start] if options[:mute_on_start]
create_options[:guestPolicy] = "ASK_MODERATOR" if options[:require_moderator_approval]
# Send the create request.
begin
Merge v2.7-alpha (#1951) * Fix wrong conditional (reported by LGTM) (#1477) Signed-off-by: Stefan Weil <sw@weilnetz.de> Co-authored-by: Ahmad Farhat <ahmad.af.farhat@gmail.com> * Bump rack from 2.2.2 to 2.2.3 (#1839) Bumps [rack](https://github.com/rack/rack) from 2.2.2 to 2.2.3. - [Release notes](https://github.com/rack/rack/releases) - [Changelog](https://github.com/rack/rack/blob/master/CHANGELOG.md) - [Commits](https://github.com/rack/rack/compare/v2.2.2...2.2.3) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * [FIX] Unable to edit long recording names #1776 (#1780) * Allow to set a filter for LDAP authentication * [FIX] Unable to edit long recording names #1776 Co-authored-by: François Ménabé <francois.menabe@unistra.fr> Co-authored-by: farhatahmad <ahmad.af.farhat@gmail.com> * Desgin for Manage Users Tabs (#1777) * Update _subtitle.html.erb * Update _manage_users_tags.html.erb * Update admins.scss * Update _primary_themes.scss * Update _manage_users_tags.html.erb * Minor style changes to manage users (#1845) * Maintenance banner moved to admin site (#1775) * initial * finish * travis fixes * travis again * not required * Co-authored-by: Tobias Fiebig <t.fiebig@tudelft.nl> (#1296) Co-authored-by: Ahmad Farhat <ahmad.af.farhat@gmail.com> * Enhance Room OpenGraph Metadata (#1601) * Revert "Enhance Room OpenGraph Metadata (#1601)" (#1852) This reverts commit 3b007c233ae12e0407f216ae269c63d6179f73b8. * GRN2-xx: Tab title now displays the current page name (#1853) * Tab title now displays the current page name * Added page title for the rest of the pages * Split Site Settings into 3 different tabs (#1858) * Split Site Settings into 3 different tabs * Fix copyright * Added redirect to correct tab * Make sure settings are displaying when they should * Update en.yml (#1857) * Build images for alpha branches (#1867) * Upgraded jquery to latest version (#1896) * Added favicon tag (#1898) * Fixed XSS issue with role name (#1899) * Update path for coloring redirect (#1908) * Added a fourth section to the room uid (#1910) * Fixed issue with insecure room sharing removal (#1914) * Fixes typo (#1917) Fixes typo: successfully was written incorrect. * Fixed order of rooms in server rooms (#1915) * Change default room sort to latest activity (#1919) * GRN2-xx: Small changes/improvements to the recording settings (#1851) * Small changes/improvements to the recording settings * Replaced room warning with info flash * Added global setting to enable/disable the recording consent feature * Replace Legal with Terms (#1931) * Added a more friendly OpenGraph description when invited to join a room (#1932) * Fixed issue causing maintenance banner not to hide correctly (#1933) * Hide recording menu and recording list when it is disabled (#1935) * Hide recording menu and recording list when it is disabled * Hide recording list when disabled * GRN2-xx: Added an auto-refresh after 2 mins while waiting for room to start (#1947) * Added an auto-refresh after 2 mins while waiting for room to start * Fixed random issue with test case * GRN2-xx: Added ability to preupload presentations to rooms (#1895) * Added ability to preupload presentations to rooms (#1868) * Added setting to site settings and allowed admins to change the presentation * Added AWS S3 and GCS Storage ENV variables * Added check to ensure file extension is correct * Added icon to remove presentation * Added testcases for preupload * Add nginx redirect to solve issue with relative root * Record title, instead of room name, in the popup (#1924) * Update _public_recording_row.html.erb * Update _recording_row.html.erb Co-authored-by: Stefan Weil <sw@weilnetz.de> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: beckerr-rzht <beckerr@hochschule-trier.de> Co-authored-by: François Ménabé <francois.menabe@unistra.fr> Co-authored-by: MrKeksi <mrkeksi@users.noreply.github.com> Co-authored-by: yanosz <yanosz@users.noreply.github.com> Co-authored-by: Moritz Schlarb <moschlar@metalabs.de> Co-authored-by: chronikum <34622984+chronikum@users.noreply.github.com> Co-authored-by: Mitsutaka Sato <miztaka@honestyworks.jp> Co-authored-by: hiroshisuga <45039819+hiroshisuga@users.noreply.github.com>
2020-07-29 11:03:22 -04:00
meeting = if room.presentation.attached?
modules = BigBlueButton::BigBlueButtonModules.new
url = rails_blob_url(room.presentation).gsub("&", "%26")
logger.info("Support: Room #{room.uid} starting using presentation: #{url}")
modules.add_presentation(:url, url)
Merge v2.7-alpha (#1951) * Fix wrong conditional (reported by LGTM) (#1477) Signed-off-by: Stefan Weil <sw@weilnetz.de> Co-authored-by: Ahmad Farhat <ahmad.af.farhat@gmail.com> * Bump rack from 2.2.2 to 2.2.3 (#1839) Bumps [rack](https://github.com/rack/rack) from 2.2.2 to 2.2.3. - [Release notes](https://github.com/rack/rack/releases) - [Changelog](https://github.com/rack/rack/blob/master/CHANGELOG.md) - [Commits](https://github.com/rack/rack/compare/v2.2.2...2.2.3) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * [FIX] Unable to edit long recording names #1776 (#1780) * Allow to set a filter for LDAP authentication * [FIX] Unable to edit long recording names #1776 Co-authored-by: François Ménabé <francois.menabe@unistra.fr> Co-authored-by: farhatahmad <ahmad.af.farhat@gmail.com> * Desgin for Manage Users Tabs (#1777) * Update _subtitle.html.erb * Update _manage_users_tags.html.erb * Update admins.scss * Update _primary_themes.scss * Update _manage_users_tags.html.erb * Minor style changes to manage users (#1845) * Maintenance banner moved to admin site (#1775) * initial * finish * travis fixes * travis again * not required * Co-authored-by: Tobias Fiebig <t.fiebig@tudelft.nl> (#1296) Co-authored-by: Ahmad Farhat <ahmad.af.farhat@gmail.com> * Enhance Room OpenGraph Metadata (#1601) * Revert "Enhance Room OpenGraph Metadata (#1601)" (#1852) This reverts commit 3b007c233ae12e0407f216ae269c63d6179f73b8. * GRN2-xx: Tab title now displays the current page name (#1853) * Tab title now displays the current page name * Added page title for the rest of the pages * Split Site Settings into 3 different tabs (#1858) * Split Site Settings into 3 different tabs * Fix copyright * Added redirect to correct tab * Make sure settings are displaying when they should * Update en.yml (#1857) * Build images for alpha branches (#1867) * Upgraded jquery to latest version (#1896) * Added favicon tag (#1898) * Fixed XSS issue with role name (#1899) * Update path for coloring redirect (#1908) * Added a fourth section to the room uid (#1910) * Fixed issue with insecure room sharing removal (#1914) * Fixes typo (#1917) Fixes typo: successfully was written incorrect. * Fixed order of rooms in server rooms (#1915) * Change default room sort to latest activity (#1919) * GRN2-xx: Small changes/improvements to the recording settings (#1851) * Small changes/improvements to the recording settings * Replaced room warning with info flash * Added global setting to enable/disable the recording consent feature * Replace Legal with Terms (#1931) * Added a more friendly OpenGraph description when invited to join a room (#1932) * Fixed issue causing maintenance banner not to hide correctly (#1933) * Hide recording menu and recording list when it is disabled (#1935) * Hide recording menu and recording list when it is disabled * Hide recording list when disabled * GRN2-xx: Added an auto-refresh after 2 mins while waiting for room to start (#1947) * Added an auto-refresh after 2 mins while waiting for room to start * Fixed random issue with test case * GRN2-xx: Added ability to preupload presentations to rooms (#1895) * Added ability to preupload presentations to rooms (#1868) * Added setting to site settings and allowed admins to change the presentation * Added AWS S3 and GCS Storage ENV variables * Added check to ensure file extension is correct * Added icon to remove presentation * Added testcases for preupload * Add nginx redirect to solve issue with relative root * Record title, instead of room name, in the popup (#1924) * Update _public_recording_row.html.erb * Update _recording_row.html.erb Co-authored-by: Stefan Weil <sw@weilnetz.de> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: beckerr-rzht <beckerr@hochschule-trier.de> Co-authored-by: François Ménabé <francois.menabe@unistra.fr> Co-authored-by: MrKeksi <mrkeksi@users.noreply.github.com> Co-authored-by: yanosz <yanosz@users.noreply.github.com> Co-authored-by: Moritz Schlarb <moschlar@metalabs.de> Co-authored-by: chronikum <34622984+chronikum@users.noreply.github.com> Co-authored-by: Mitsutaka Sato <miztaka@honestyworks.jp> Co-authored-by: hiroshisuga <45039819+hiroshisuga@users.noreply.github.com>
2020-07-29 11:03:22 -04:00
bbb_server.create_meeting(room.name, room.bbb_id, create_options, modules)
else
bbb_server.create_meeting(room.name, room.bbb_id, create_options)
end
unless meeting[:messageKey] == 'duplicateWarning'
room.update_attributes(sessions: room.sessions + 1, last_session: DateTime.strptime(meeting[:createTime].to_s, "%Q"))
end
rescue BigBlueButton::BigBlueButtonException => e
puts "BigBlueButton failed on create: #{e.key}: #{e.message}"
raise e
end
end
# Gets the number of recordings for this room
def recording_count(bbb_id)
bbb_server.get_recordings(meetingID: bbb_id)[:recordings].length
end
# Update a recording from a room
def update_recording(record_id, meta)
meta[:recordID] = record_id
bbb_server.send_api_request("updateRecordings", meta)
end
# Deletes a recording from a room.
def delete_recording(record_id)
bbb_server.delete_recordings(record_id)
end
# Deletes all recordings associated with the room.
def delete_all_recordings(bbb_id)
record_ids = bbb_server.get_recordings(meetingID: bbb_id)[:recordings].pluck(:recordID)
bbb_server.delete_recordings(record_ids) unless record_ids.empty?
end
end