bigbluebutton-Github/bigbluebutton-web/grails-app/conf/spring/resources.xml

216 lines
14 KiB
XML
Raw Normal View History

<?xml version="1.0" encoding="UTF-8"?>
<!--
BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
Copyright (c) 2012 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/>.
-->
<beans xmlns="http://www.springframework.org/schema/beans"
2017-07-03 22:44:13 +08:00
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/util
2017-07-03 22:44:13 +08:00
http://www.springframework.org/schema/util/spring-util-2.0.xsd">
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>
<bean id="characterEncodingFilter" class="org.springframework.web.filter.CharacterEncodingFilter">
<property name="encoding">
<value>utf-8</value>
</property>
</bean>
Patch of improvements for bbb-web This patch includes two improvements made for bbb-web. It tries to better isolate the sessionToken's handling and session's validation, including logs for each one of these steps; and removes maxParticipats control from registered users (that are no longer removed from bbb-web collections) binding it to joined users or users that reached the enter API call. The following adds more details about this last one: User's regular flow to join a meeting goes around an API join call -> redis register event -> redirect to client page -> API enter call -> redis join event. When the guest policy is ASK_MODERATOR, non-moderators are registered and redirected to a guest lobby that polls for her/his guest status and only enters the meeting after a moderator approval. Using registered users as control to check how many participants are in a meeting is problematic because non-approved guests are counted as participants and bbb-web has to find out when to ditch registered users records to make a seat in a meeting available again. In other words, a meeting with maxParicipants of 5 can get it's joins locked with a moderator and 4 waiting guests or bbb-web can wrongly drop a registered user record on a reconnection inducing weird 401 responses from the API. This change proposes to control maxParticipants both at join and enter API calls monitoring the number of redis joined users. This also includes an extra buffer to capture users that called the enter API but still don't have an user joined event. User left events are now handled different holding the user data before removing from the joined users collection and only releasing after verifying that the user didn't reconnected. Both user left timeout `usersTimeout` and entered user timeout `enteredUsersTimeout` can be configured at properties.
2020-09-27 01:52:50 +08:00
<bean id="userCleanupTimerTask" class="org.bigbluebutton.web.services.UserCleanupTimerTask"/>
<bean id="enteredUserCleanupTimerTask" class="org.bigbluebutton.web.services.EnteredUserCleanupTimerTask"/>
2017-05-20 10:13:25 +08:00
<bean id="keepAliveService" class="org.bigbluebutton.web.services.KeepAliveService"
2017-07-03 22:44:13 +08:00
init-method="start" destroy-method="stop">
2017-05-20 10:13:25 +08:00
<property name="runEvery" value="${checkBBBServerEvery}"/>
2017-07-03 22:44:13 +08:00
<property name="gw" ref="bbbWebApiGWApp"/>
2017-05-20 10:13:25 +08:00
</bean>
<bean id="meetingService" class="org.bigbluebutton.api.MeetingService" init-method="start" destroy-method="stop">
2017-07-03 22:44:13 +08:00
<property name="redisStorageService" ref="redisStorageService"/>
<property name="learningDashboardService" ref="learningDashboardService"/>
<property name="recordingService" ref="recordingService"/>
2015-10-23 01:13:53 +08:00
<property name="presDownloadService" ref="presDownloadService"/>
<property name="paramsProcessorUtil" ref="paramsProcessorUtil"/>
<property name="stunTurnService" ref="stunTurnService"/>
Patch of improvements for bbb-web This patch includes two improvements made for bbb-web. It tries to better isolate the sessionToken's handling and session's validation, including logs for each one of these steps; and removes maxParticipats control from registered users (that are no longer removed from bbb-web collections) binding it to joined users or users that reached the enter API call. The following adds more details about this last one: User's regular flow to join a meeting goes around an API join call -> redis register event -> redirect to client page -> API enter call -> redis join event. When the guest policy is ASK_MODERATOR, non-moderators are registered and redirected to a guest lobby that polls for her/his guest status and only enters the meeting after a moderator approval. Using registered users as control to check how many participants are in a meeting is problematic because non-approved guests are counted as participants and bbb-web has to find out when to ditch registered users records to make a seat in a meeting available again. In other words, a meeting with maxParicipants of 5 can get it's joins locked with a moderator and 4 waiting guests or bbb-web can wrongly drop a registered user record on a reconnection inducing weird 401 responses from the API. This change proposes to control maxParticipants both at join and enter API calls monitoring the number of redis joined users. This also includes an extra buffer to capture users that called the enter API but still don't have an user joined event. User left events are now handled different holding the user data before removing from the joined users collection and only releasing after verifying that the user didn't reconnected. Both user left timeout `usersTimeout` and entered user timeout `enteredUsersTimeout` can be configured at properties.
2020-09-27 01:52:50 +08:00
<property name="userCleanupTimerTask" ref="userCleanupTimerTask"/>
<property name="sessionsCleanupDelayInMinutes" value="${sessionsCleanupDelayInMinutes}"/>
Patch of improvements for bbb-web This patch includes two improvements made for bbb-web. It tries to better isolate the sessionToken's handling and session's validation, including logs for each one of these steps; and removes maxParticipats control from registered users (that are no longer removed from bbb-web collections) binding it to joined users or users that reached the enter API call. The following adds more details about this last one: User's regular flow to join a meeting goes around an API join call -> redis register event -> redirect to client page -> API enter call -> redis join event. When the guest policy is ASK_MODERATOR, non-moderators are registered and redirected to a guest lobby that polls for her/his guest status and only enters the meeting after a moderator approval. Using registered users as control to check how many participants are in a meeting is problematic because non-approved guests are counted as participants and bbb-web has to find out when to ditch registered users records to make a seat in a meeting available again. In other words, a meeting with maxParicipants of 5 can get it's joins locked with a moderator and 4 waiting guests or bbb-web can wrongly drop a registered user record on a reconnection inducing weird 401 responses from the API. This change proposes to control maxParticipants both at join and enter API calls monitoring the number of redis joined users. This also includes an extra buffer to capture users that called the enter API but still don't have an user joined event. User left events are now handled different holding the user data before removing from the joined users collection and only releasing after verifying that the user didn't reconnected. Both user left timeout `usersTimeout` and entered user timeout `enteredUsersTimeout` can be configured at properties.
2020-09-27 01:52:50 +08:00
<property name="enteredUserCleanupTimerTask" ref="enteredUserCleanupTimerTask"/>
2017-07-03 22:44:13 +08:00
<property name="gw" ref="bbbWebApiGWApp"/>
2018-06-21 22:38:19 +08:00
<property name="callbackUrlService" ref="callbackUrlService"/>
Patch of improvements for bbb-web This patch includes two improvements made for bbb-web. It tries to better isolate the sessionToken's handling and session's validation, including logs for each one of these steps; and removes maxParticipats control from registered users (that are no longer removed from bbb-web collections) binding it to joined users or users that reached the enter API call. The following adds more details about this last one: User's regular flow to join a meeting goes around an API join call -> redis register event -> redirect to client page -> API enter call -> redis join event. When the guest policy is ASK_MODERATOR, non-moderators are registered and redirected to a guest lobby that polls for her/his guest status and only enters the meeting after a moderator approval. Using registered users as control to check how many participants are in a meeting is problematic because non-approved guests are counted as participants and bbb-web has to find out when to ditch registered users records to make a seat in a meeting available again. In other words, a meeting with maxParicipants of 5 can get it's joins locked with a moderator and 4 waiting guests or bbb-web can wrongly drop a registered user record on a reconnection inducing weird 401 responses from the API. This change proposes to control maxParticipants both at join and enter API calls monitoring the number of redis joined users. This also includes an extra buffer to capture users that called the enter API but still don't have an user joined event. User left events are now handled different holding the user data before removing from the joined users collection and only releasing after verifying that the user didn't reconnected. Both user left timeout `usersTimeout` and entered user timeout `enteredUsersTimeout` can be configured at properties.
2020-09-27 01:52:50 +08:00
<property name="usersTimeout" value="${usersTimeout}"/>
<property name="enteredUsersTimeout" value="${enteredUsersTimeout}"/>
<property name="slidesGenerationProgressNotifier" ref="slidesGenerationProgressNotifier"/>
2017-05-20 10:13:25 +08:00
</bean>
<bean id="oldMessageReceivedGW" class="org.bigbluebutton.api2.bus.OldMessageReceivedGW">
<constructor-arg index="0" ref="redisMessageHandler"/>
</bean>
2018-06-21 22:38:19 +08:00
<bean id="callbackUrlService" class="org.bigbluebutton.web.services.callback.CallbackUrlService"
init-method="start" destroy-method="stop">
</bean>
2017-07-03 22:44:13 +08:00
<bean id="bbbWebApiGWApp" class="org.bigbluebutton.api2.BbbWebApiGWApp">
<constructor-arg index="0" ref="oldMessageReceivedGW"/>
<constructor-arg index="1" value="${redisHost}"/>
<constructor-arg index="2" value="${redisPort}"/>
<constructor-arg index="3" value="${redisPassword}"/>
<constructor-arg index="4" value="${redisKeyExpiry}"/>
2017-07-03 22:44:13 +08:00
</bean>
2017-09-04 01:52:18 +08:00
<bean id="recordingServiceHelper" class="org.bigbluebutton.api.util.RecordingMetadataReaderHelper">
<property name="recordingServiceGW" ref="recordingServiceGW"/>
</bean>
2019-05-10 22:51:05 +08:00
<bean id="recordingServiceGW" class="org.bigbluebutton.api2.util.RecMetaXmlHelper">
<constructor-arg index="0" ref="bbbWebApiGWApp"/>
2017-09-04 01:52:18 +08:00
</bean>
2017-07-03 22:44:13 +08:00
<bean id="presDownloadService" class="org.bigbluebutton.presentation.PresentationUrlDownloadService"
destroy-method="stop">
<property name="presentationDir" value="${presentationDir}"/>
<property name="presentationBaseURL" value="${presentationBaseURL}"/>
<property name="pageExtractor" ref="pageExtractor"/>
<property name="documentConversionService" ref="documentConversionService"/>
<property name="blankPresentation" value="${BLANK_PRESENTATION}"/>
<property name="defaultUploadedPresentation" value="${beans.presentationService.defaultUploadedPresentation}"/>
<property name="insertDocumentSupportedProtocols" value="${insertDocumentSupportedProtocols}" />
<property name="insertDocumentBlockedHosts" value="${insertDocumentBlockedHosts}" />
2017-07-03 22:44:13 +08:00
</bean>
2022-04-12 03:50:33 +08:00
<bean id="xmlService" class="org.bigbluebutton.api.service.impl.XmlServiceImpl"/>
<bean id="recordingService" class="org.bigbluebutton.api.service.impl.RecordingServiceFileImpl">
2017-07-03 22:44:13 +08:00
<property name="recordingStatusDir" value="${recordStatusDir}"/>
<property name="publishedDir" value="${publishedDir}"/>
<property name="unpublishedDir" value="${unpublishedDir}"/>
2018-05-29 22:19:19 +08:00
<property name="captionsDir" value="${captionsDir}"/>
<property name="allowFetchAllRecordings" value="${allowFetchAllRecordings}"/>
2017-07-03 22:44:13 +08:00
<property name="recordingServiceHelper" ref="recordingServiceHelper"/>
2022-04-12 03:50:33 +08:00
<property name="xmlService" ref="xmlService" />
2018-06-08 03:13:00 +08:00
<property name="presentationBaseDir" value="${presentationDir}"/>
2019-05-01 23:14:10 +08:00
<property name="defaultServerUrl" value="${bigbluebutton.web.serverURL}"/>
<property name="defaultTextTrackUrl" value="${defaultTextTrackUrl}"/>
2017-07-03 22:44:13 +08:00
</bean>
<bean id="learningDashboardService" class="org.bigbluebutton.api.LearningDashboardService">
<property name="learningDashboardFilesDir" value="${learningDashboardFilesDir}"/>
</bean>
<bean id="validationService" class="org.bigbluebutton.api.service.ValidationService">
<property name="securitySalt" value="${securitySalt}"/>
2022-10-21 14:50:23 +08:00
<property name="supportedChecksumAlgorithms" value="${supportedChecksumAlgorithms}"/>
<property name="allowRequestsWithoutSession" value="${allowRequestsWithoutSession}"/>
</bean>
<bean id="serviceUtils" class="org.bigbluebutton.api.service.ServiceUtils">
<property name="meetingService" ref="meetingService" />
<property name="validationService" ref="validationService" />
</bean>
2017-07-03 22:44:13 +08:00
<bean id="paramsProcessorUtil" class="org.bigbluebutton.api.ParamsProcessorUtil">
<property name="apiVersion" value="${apiVersion}"/>
<property name="serviceEnabled" value="${serviceEnabled}"/>
<property name="securitySalt" value="${securitySalt}"/>
2022-10-21 14:50:23 +08:00
<property name="supportedChecksumAlgorithms" value="${supportedChecksumAlgorithms}"/>
2017-07-03 22:44:13 +08:00
<property name="defaultMaxUsers" value="${defaultMaxUsers}"/>
<property name="defaultWelcomeMessage" value="${defaultWelcomeMessage}"/>
<property name="defaultWelcomeMessageFooter" value="${defaultWelcomeMessageFooter}"/>
<property name="defaultDialAccessNumber" value="${defaultDialAccessNumber}"/>
<property name="testVoiceBridge" value="${testVoiceBridge}"/>
<property name="testConferenceMock" value="${testConferenceMock}"/>
<property name="defaultLogoutUrl" value="${bigbluebutton.web.logoutURL}"/>
<property name="defaultServerUrl" value="${bigbluebutton.web.serverURL}"/>
<property name="defaultNumDigitsForTelVoice" value="${defaultNumDigitsForTelVoice}"/>
<property name="defaultHTML5ClientUrl" value="${defaultHTML5ClientUrl}"/>
<property name="graphqlWebsocketUrl" value="${graphqlWebsocketUrl}"/>
<property name="useDefaultLogo" value="${useDefaultLogo}"/>
<property name="defaultLogoURL" value="${defaultLogoURL}"/>
<property name="allowRequestsWithoutSession" value="${allowRequestsWithoutSession}"/>
<property name="defaultHttpSessionTimeout" value="${defaultHttpSessionTimeout}"/>
2017-07-03 22:44:13 +08:00
<property name="defaultMeetingDuration" value="${defaultMeetingDuration}"/>
<property name="disableRecordingDefault" value="${disableRecordingDefault}"/>
<property name="autoStartRecording" value="${autoStartRecording}"/>
<property name="allowStartStopRecording" value="${allowStartStopRecording}"/>
<property name="recordFullDurationMedia" value="${recordFullDurationMedia}"/>
2023-01-10 01:51:01 +08:00
<property name="learningDashboardEnabled" value="${learningDashboardEnabled}"/>
<property name="learningDashboardCleanupDelayInMinutes" value="${learningDashboardCleanupDelayInMinutes}"/>
2017-07-03 22:44:13 +08:00
<property name="webcamsOnlyForModerator" value="${webcamsOnlyForModerator}"/>
<property name="defaultMeetingCameraCap" value="${meetingCameraCap}"/>
<property name="defaultUserCameraCap" value="${userCameraCap}"/>
<property name="defaultMaxPinnedCameras" value="${maxPinnedCameras}"/>
<property name="useDefaultAvatar" value="${useDefaultAvatar}"/>
2017-07-03 22:44:13 +08:00
<property name="defaultAvatarURL" value="${defaultAvatarURL}"/>
<property name="defaultGuestPolicy" value="${defaultGuestPolicy}"/>
<property name="authenticatedGuest" value="${authenticatedGuest}"/>
<property name="waitingGuestUsersTimeout" value="${waitingGuestUsersTimeout}"/>
<property name="defaultMeetingLayout" value="${defaultMeetingLayout}"/>
2017-07-16 10:10:04 +08:00
<property name="meetingExpireIfNoUserJoinedInMinutes" value="${meetingExpireIfNoUserJoinedInMinutes}"/>
<property name="meetingExpireWhenLastUserLeftInMinutes" value="${meetingExpireWhenLastUserLeftInMinutes}"/>
<property name="userInactivityInspectTimerInMinutes" value="${userInactivityInspectTimerInMinutes}"/>
<property name="userInactivityThresholdInMinutes" value="${userInactivityThresholdInMinutes}"/>
<property name="userActivitySignResponseDelayInMinutes" value="${userActivitySignResponseDelayInMinutes}"/>
2017-11-28 06:03:50 +08:00
<property name="maxPresentationFileUpload" value="${maxFileSizeUpload}"/>
<property name="clientLogoutTimerInMinutes" value="${clientLogoutTimerInMinutes}"/>
<property name="muteOnStart" value="${muteOnStart}"/>
<property name="allowModsToUnmuteUsers" value="${allowModsToUnmuteUsers}"/>
<property name="allowModsToEjectCameras" value="${allowModsToEjectCameras}"/>
2023-01-10 01:51:01 +08:00
<property name="breakoutRoomsEnabled" value="${breakoutRoomsEnabled}"/>
<property name="breakoutRoomsRecord" value="${breakoutRoomsRecord}"/>
<property name="breakoutRoomsPrivateChatEnabled" value="${breakoutRoomsPrivateChatEnabled}"/>
<property name="lockSettingsDisableCam" value="${lockSettingsDisableCam}"/>
<property name="lockSettingsDisableMic" value="${lockSettingsDisableMic}"/>
<property name="lockSettingsDisablePrivateChat" value="${lockSettingsDisablePrivateChat}"/>
<property name="lockSettingsDisablePublicChat" value="${lockSettingsDisablePublicChat}"/>
<property name="lockSettingsDisableNotes" value="${lockSettingsDisableNotes}"/>
<property name="lockSettingsHideUserList" value="${lockSettingsHideUserList}"/>
<property name="lockSettingsLockOnJoin" value="${lockSettingsLockOnJoin}"/>
<property name="lockSettingsLockOnJoinConfigurable" value="${lockSettingsLockOnJoinConfigurable}"/>
<property name="lockSettingsHideViewersCursor" value="${lockSettingsHideViewersCursor}"/>
<property name="lockSettingsHideViewersAnnotation" value="${lockSettingsHideViewersAnnotation}"/>
<property name="allowDuplicateExtUserid" value="${allowDuplicateExtUserid}"/>
<property name="maxUserConcurrentAccesses" value="${maxUserConcurrentAccesses}"/>
<property name="endWhenNoModerator" value="${endWhenNoModerator}"/>
2021-05-18 04:52:59 +08:00
<property name="endWhenNoModeratorDelayInMinutes" value="${endWhenNoModeratorDelayInMinutes}"/>
2022-02-07 21:22:52 +08:00
<property name="disabledFeatures" value="${disabledFeatures}"/>
2022-03-11 04:17:57 +08:00
<property name="notifyRecordingIsOn" value="${notifyRecordingIsOn}"/>
<property name="defaultKeepEvents" value="${defaultKeepEvents}"/>
2021-10-30 04:20:19 +08:00
<property name="allowRevealOfBBBVersion" value="${allowRevealOfBBBVersion}"/>
<property name="allowOverrideClientSettingsOnCreateCall" value="${allowOverrideClientSettingsOnCreateCall}"/>
2017-07-03 22:44:13 +08:00
</bean>
2022-07-30 03:03:25 +08:00
<bean id="presentationService" class="org.bigbluebutton.web.services.PresentationService">
<property name="presentationDir" value="${presentationDir}"/>
<property name="testConferenceMock" value="${testConferenceMock}"/>
2022-09-08 22:59:56 +08:00
<property name="testRoomMock" value="${beans.presentationService.testRoomMock}"/>
<property name="testPresentationName" value="${beans.presentationService.testPresentationName}"/>
<property name="testUploadedPresentation" value="${beans.presentationService.testUploadedPresentation}"/>
<property name="defaultUploadedPresentation" value="${beans.presentationService.defaultUploadedPresentation}"/>
2022-07-30 03:03:25 +08:00
<property name="presentationBaseUrl" value="${presentationBaseURL}"/>
2022-09-08 22:59:56 +08:00
<property name="preUploadedPresentationOverrideDefault" value="${beans.presentationService.preUploadedPresentationOverrideDefault}"/>
2022-07-30 03:03:25 +08:00
</bean>
2017-07-03 22:44:13 +08:00
<import resource="doc-conversion.xml"/>
<import resource="bbb-redis-messaging.xml"/>
<!-- moved the following import statement for turn-stun-servers.xml to resources.groovy to be able to use overlay config for turn/stun servers -->
<!-- <import resource="turn-stun-servers.xml"/>-->
Merge branch 'master' into merge-bbb-1.1-dev-java8-with-master Conflicts: akka-bbb-apps/build.sbt akka-bbb-apps/src/main/java/org/bigbluebutton/core/api/IBigBlueButtonInGW.java akka-bbb-apps/src/main/resources/application.conf akka-bbb-apps/src/main/scala/org/bigbluebutton/Boot.scala akka-bbb-apps/src/main/scala/org/bigbluebutton/core/BigBlueButtonActor.scala akka-bbb-apps/src/main/scala/org/bigbluebutton/core/BigBlueButtonInGW.scala akka-bbb-apps/src/main/scala/org/bigbluebutton/core/MeetingActor.scala akka-bbb-apps/src/main/scala/org/bigbluebutton/core/MeetingModel.scala akka-bbb-apps/src/main/scala/org/bigbluebutton/core/MessageSenderActor.scala akka-bbb-apps/src/main/scala/org/bigbluebutton/core/RecorderActor.scala akka-bbb-apps/src/main/scala/org/bigbluebutton/core/api/InMessages.scala akka-bbb-apps/src/main/scala/org/bigbluebutton/core/api/OutMessages.scala akka-bbb-apps/src/main/scala/org/bigbluebutton/core/api/ValueObjects.scala akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/WhiteboardApp.scala akka-bbb-fsesl/build.sbt akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/pubsub/receivers/RedisMessageReceiver.java akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/freeswitch/ConnectionManager.java akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/freeswitch/FreeswitchApplication.java bbb-common-message/build.sbt bbb-common-message/src/main/java/org/bigbluebutton/common/messages/Constants.java bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MessagingConstants.java bbb-common-message/src/main/java/org/bigbluebutton/common/messages/Util.java bigbluebutton-apps/build.gradle bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/pubsub/redis/RedisPubSubMessageHandler.java bigbluebutton-apps/src/main/webapp/WEB-INF/red5-web.xml bigbluebutton-client/build.xml bigbluebutton-client/resources/config.xml.template bigbluebutton-client/resources/prod/BigBlueButton.html bigbluebutton-client/src/org/bigbluebutton/common/Images.as bigbluebutton-client/src/org/bigbluebutton/main/maps/ApplicationEventMap.mxml bigbluebutton-client/src/org/bigbluebutton/main/model/users/Conference.as bigbluebutton-client/src/org/bigbluebutton/modules/deskshare/utils/JavaCheck.as bigbluebutton-client/src/org/bigbluebutton/modules/users/services/MessageReceiver.as bigbluebutton-web/build.gradle bigbluebutton-web/grails-app/conf/spring/resources.xml bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/ApiController.groovy bigbluebutton-web/src/java/org/bigbluebutton/api/MeetingService.java bigbluebutton-web/src/java/org/bigbluebutton/api/domain/Meeting.java bigbluebutton-web/src/java/org/bigbluebutton/api/messaging/MeetingMessageHandler.java bigbluebutton-web/src/java/org/bigbluebutton/api/messaging/RedisMessagingService.java record-and-playback/core/scripts/bigbluebutton.yml
2016-05-16 23:35:36 +08:00
</beans>