updates for v2.3-alpha-3

This commit is contained in:
chandi 2020-12-23 23:58:24 +01:00
parent d68cf44afc
commit 747f64e901
23 changed files with 288 additions and 364 deletions

@ -1 +1 @@
Subproject commit 400fe636e63563437fb112c2df0261d6be9f103e Subproject commit 54934c71cff96be1bfcff84c204b452b9529c208

View File

@ -17,7 +17,7 @@ services:
ports: ports:
- 10.7.7.1:5000:80 - 10.7.7.1:5000:80
postgres: postgres:
image: postgres:12 image: postgres:12-alpine
restart: unless-stopped restart: unless-stopped
environment: environment:
POSTGRES_DB: greenlight POSTGRES_DB: greenlight

View File

@ -10,6 +10,9 @@ services:
- bigbluebutton:/var/bigbluebutton - bigbluebutton:/var/bigbluebutton
- vol-freeswitch:/var/freeswitch/meetings - vol-freeswitch:/var/freeswitch/meetings
- vol-kurento:/var/kurento - vol-kurento:/var/kurento
tmpfs:
- /var/log/bigbluebutton
- /tmp
networks: networks:
bbb-net: bbb-net:
ipv4_address: 10.7.7.16 ipv4_address: 10.7.7.16

View File

@ -88,7 +88,7 @@ services:
ipv4_address: 10.7.7.5 ipv4_address: 10.7.7.5
mongodb: mongodb:
image: mongo:4.2 image: mongo:4.4
restart: unless-stopped restart: unless-stopped
networks: networks:
bbb-net: bbb-net:
@ -162,12 +162,16 @@ services:
fsesl-akka: fsesl-akka:
build: mod/fsesl-akka build: mod/fsesl-akka
depends_on:
- redis
networks: networks:
bbb-net: bbb-net:
ipv4_address: 10.7.7.14 ipv4_address: 10.7.7.14
apps-akka: apps-akka:
build: mod/apps-akka build: mod/apps-akka
depends_on:
- redis
environment: environment:
DOMAIN: ${DOMAIN} DOMAIN: ${DOMAIN}
SHARED_SECRET: ${SHARED_SECRET} SHARED_SECRET: ${SHARED_SECRET}

View File

@ -3,7 +3,7 @@ FROM mozilla/sbt:8u181_1.2.7 AS builder
RUN apt-get update && apt-get install -y subversion RUN apt-get update && apt-get install -y subversion
# download bbb-common-message # download bbb-common-message
ENV TAG_COMMON_MESSAGE v2.3-alpha-2 ENV TAG_COMMON_MESSAGE v2.3-alpha-3
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_COMMON_MESSAGE/bbb-common-message /bbb-common-message \ RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_COMMON_MESSAGE/bbb-common-message /bbb-common-message \
&& rm -rf /bbb-common-message/.svn && rm -rf /bbb-common-message/.svn
@ -14,7 +14,7 @@ RUN cd /bbb-common-message \
# =================================================== # ===================================================
ENV TAG v2.3-alpha-2 ENV TAG v2.3-alpha-3
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG/akka-bbb-apps /source \ RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG/akka-bbb-apps /source \
&& rm -rf /source/.svn && rm -rf /source/.svn

View File

@ -59,11 +59,6 @@ eventBus {
outBbbMsgMsgChannel = "OutBbbMsgChannel" outBbbMsgMsgChannel = "OutBbbMsgChannel"
} }
sharedNotes {
maxNumberOfNotes = 3
maxNumberOfUndos = 30
}
http { http {
interface = "10.7.7.2" interface = "10.7.7.2"
port = 9999 port = 9999
@ -76,6 +71,7 @@ services {
apps { apps {
checkPermissions = true checkPermissions = true
ejectOnViolation = false
endMeetingWhenNoMoreAuthedUsers = false endMeetingWhenNoMoreAuthedUsers = false
endMeetingWhenNoMoreAuthedUsersAfterMinutes = 2 endMeetingWhenNoMoreAuthedUsersAfterMinutes = 2
} }

View File

@ -3,7 +3,7 @@ FROM mozilla/sbt:8u181_1.2.7 AS builder
RUN apt-get update && apt-get install -y subversion RUN apt-get update && apt-get install -y subversion
# download bbb-common-message # download bbb-common-message
ENV TAG_COMMON_MESSAGE v2.3-alpha-2 ENV TAG_COMMON_MESSAGE v2.3-alpha-3
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_COMMON_MESSAGE/bbb-common-message /bbb-common-message \ RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_COMMON_MESSAGE/bbb-common-message /bbb-common-message \
&& rm -rf /bbb-common-message/.svn && rm -rf /bbb-common-message/.svn
@ -26,7 +26,7 @@ RUN cd /opt \
ENV PATH="/opt/gradle-6.7/bin:${PATH}" ENV PATH="/opt/gradle-6.7/bin:${PATH}"
# download bbb-common-web # download bbb-common-web
ENV TAG_COMMON_WEB v2.3-alpha-2 ENV TAG_COMMON_WEB v2.3-alpha-3
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_COMMON_WEB/bbb-common-web /bbb-common-web \ RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_COMMON_WEB/bbb-common-web /bbb-common-web \
&& rm -rf /bbb-common-message/.svn && rm -rf /bbb-common-message/.svn
@ -35,7 +35,7 @@ RUN cd /bbb-common-web \
&& ./deploy.sh && ./deploy.sh
# download bbb-web # download bbb-web
ENV TAG_WEB v2.3-alpha-2 ENV TAG_WEB v2.3-alpha-3
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_WEB/bigbluebutton-web /bbb-web \ RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_WEB/bigbluebutton-web /bbb-web \
&& rm -rf /bbb-web/.svn && rm -rf /bbb-web/.svn
@ -90,6 +90,8 @@ COPY --from=builder /dist /usr/share/bbb-web
COPY --from=builder /bbb-web/pres-checker/lib /usr/share/prescheck/lib COPY --from=builder /bbb-web/pres-checker/lib /usr/share/prescheck/lib
COPY --from=builder /bbb-web/pres-checker/run.sh /usr/share/prescheck/prescheck.sh COPY --from=builder /bbb-web/pres-checker/run.sh /usr/share/prescheck/prescheck.sh
COPY mocked-ps /usr/bin/ps
# add entrypoint and templates # add entrypoint and templates
COPY entrypoint.sh /entrypoint.sh COPY entrypoint.sh /entrypoint.sh
COPY bigbluebutton.properties /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties.tmpl COPY bigbluebutton.properties /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties.tmpl

View File

@ -19,7 +19,7 @@
# #
# These are the default properites for BigBlueButton Web application # These are the default properites for BigBlueButton Web application
# Default loglevel. # Default loglevel.
appLogLevel=DEBUG appLogLevel=DEBUG
#---------------------------------------------------- #----------------------------------------------------
@ -172,19 +172,10 @@ defaultMaxUsers=0
# Current default is 0 (meeting doesn't end). # Current default is 0 (meeting doesn't end).
defaultMeetingDuration=0 defaultMeetingDuration=0
# Number of minutes elapse of no activity before
# ending the meeting. Default zero (0) to disable
# check.
maxInactivityTimeoutMinutes=0
# Number of minutes to logout client if user # Number of minutes to logout client if user
# isn't responsive # isn't responsive
clientLogoutTimerInMinutes=0 clientLogoutTimerInMinutes=0
# Send warning to moderators to warn that
# meeting would be ended due to inactivity
warnMinutesBeforeMax=5
# End meeting if no user joined within # End meeting if no user joined within
# a period of time after meeting created. # a period of time after meeting created.
meetingExpireIfNoUserJoinedInMinutes=5 meetingExpireIfNoUserJoinedInMinutes=5
@ -204,7 +195,7 @@ userInactivityThresholdInMinutes=30
# warning before being logged out. # warning before being logged out.
userActivitySignResponseDelayInMinutes=5 userActivitySignResponseDelayInMinutes=5
# Disable recording by default. # Disable recording by default.
# true - don't record even if record param in the api call is set to record # true - don't record even if record param in the api call is set to record
# false - when record param is passed from api, override this default # false - when record param is passed from api, override this default
{{ if isTrue .Env.ENABLE_RECORDING }} {{ if isTrue .Env.ENABLE_RECORDING }}
@ -215,7 +206,7 @@ disableRecordingDefault=true
# Start recording when first user joins the meeting. # Start recording when first user joins the meeting.
# For backward compatibility with 0.81 where whole meeting # For backward compatibility with 0.81 where whole meeting
# is recorded. # is recorded.
autoStartRecording=false autoStartRecording=false
# Allow the user to start/stop recording. # Allow the user to start/stop recording.
@ -256,31 +247,19 @@ bigbluebutton.web.serverURL=https://{{ .Env.DOMAIN }}
# If "default", it returns to bigbluebutton.web.serverURL # If "default", it returns to bigbluebutton.web.serverURL
bigbluebutton.web.logoutURL=default bigbluebutton.web.logoutURL=default
# The url of the BigBlueButton client. Users will be redirected here when # The url of the BigBlueButton HTML5 client. Users will be redirected here when
# successfully joining the meeting. # successfully joining the meeting.
defaultClientUrl=${bigbluebutton.web.serverURL}/client/BigBlueButton.html defaultHTML5ClientUrl=${bigbluebutton.web.serverURL}/html5client/%%INSTANCEID%%/join
# Allow requests without JSESSIONID to be handled (default = false) # Allow requests without JSESSIONID to be handled (default = false)
allowRequestsWithoutSession=false allowRequestsWithoutSession=false
# Force all attendees to join the meeting using the HTML5 client
attendeesJoinViaHTML5Client=true
# Force all moderators to join the meeting using the HTML5 client
moderatorsJoinViaHTML5Client=true
# The url of the BigBlueButton HTML5 client. Users will be redirected here when
# successfully joining the meeting.
html5ClientUrl=${bigbluebutton.web.serverURL}/html5client/join
# The url for where the guest will poll if approved to join or not. # The url for where the guest will poll if approved to join or not.
defaultGuestWaitURL=${bigbluebutton.web.serverURL}/client/guest-wait.html defaultGuestWaitURL=${bigbluebutton.web.serverURL}/html5client/guestWait
# The default avatar image to display if nothing is passed on the JOIN API (avatarURL) # The default avatar image to display.
# call. This avatar is displayed if the user isn't sharing the webcam and useDefaultAvatar=false
# the option (displayAvatar) is enabled in config.xml defaultAvatarURL=${bigbluebutton.web.serverURL}/html5client/resources/images/avatar.png
defaultAvatarURL=${bigbluebutton.web.serverURL}/client/avatar.png
# The URL of the default configuration # The URL of the default configuration
defaultConfigURL=${bigbluebutton.web.serverURL}/client/conf/config.xml defaultConfigURL=${bigbluebutton.web.serverURL}/client/conf/config.xml

View File

@ -8,6 +8,22 @@ for i in `seq 1 4` ; do
socat TCP-LISTEN:$PORT,fork TCP:10.7.7.7:$PORT & socat TCP-LISTEN:$PORT,fork TCP:10.7.7.7:$PORT &
done done
# create recording directory structure if it doesn't exist yet
mkdir -p /var/bigbluebutton/recording/raw
mkdir -p /var/bigbluebutton/recording/process
mkdir -p /var/bigbluebutton/recording/publish
mkdir -p /var/bigbluebutton/recording/status/recorded
mkdir -p /var/bigbluebutton/recording/status/archived
mkdir -p /var/bigbluebutton/recording/status/processed
mkdir -p /var/bigbluebutton/recording/status/sanity
mkdir -p /var/bigbluebutton/recording/status/ended
mkdir -p /var/bigbluebutton/recording/status/published
mkdir -p /var/bigbluebutton/captions/inbox
mkdir -p /var/bigbluebutton/published
mkdir -p /var/bigbluebutton/deleted
mkdir -p /var/bigbluebutton/unpublished
chown -R bigbluebutton:bigbluebutton /var/bigbluebutton
cd /usr/share/bbb-web/ cd /usr/share/bbb-web/
dockerize \ dockerize \
-template /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties.tmpl:/usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties \ -template /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties.tmpl:/usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties \

3
mod/bbb-web/mocked-ps Executable file
View File

@ -0,0 +1,3 @@
#!/bin/bash
echo "(mocked-ps for HTML5LoadBalancingService.java)"
echo " 0.1 /usr/share/node-v12.16.1-linux-x64/bin/node main.js INFO_INSTANCE_ID=1"

View File

@ -3,7 +3,7 @@ FROM mozilla/sbt:8u181_1.2.7 AS builder
RUN apt-get update && apt-get install -y subversion RUN apt-get update && apt-get install -y subversion
# download bbb-common-message # download bbb-common-message
ENV TAG_COMMON_MESSAGE v2.3-alpha-2 ENV TAG_COMMON_MESSAGE v2.3-alpha-3
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_COMMON_MESSAGE/bbb-common-message /bbb-common-message \ RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_COMMON_MESSAGE/bbb-common-message /bbb-common-message \
&& rm -rf /bbb-common-message/.svn && rm -rf /bbb-common-message/.svn
@ -13,7 +13,7 @@ RUN cd /bbb-common-message \
# =================================================== # ===================================================
ENV TAG_FSESL v2.3-alpha-2 ENV TAG_FSESL v2.3-alpha-3
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_FSESL/bbb-fsesl-client /bbb-fsesl-client \ RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_FSESL/bbb-fsesl-client /bbb-fsesl-client \
&& rm -rf /bbb-fsesl-client/.svn && rm -rf /bbb-fsesl-client/.svn
@ -21,7 +21,7 @@ RUN cd /bbb-fsesl-client \
&& ./deploy.sh && ./deploy.sh
ENV TAG v2.3-alpha-2 ENV TAG v2.3-alpha-3
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG/akka-bbb-fsesl /source \ RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG/akka-bbb-fsesl /source \
&& rm -rf /source/.svn && rm -rf /source/.svn

View File

@ -14,7 +14,7 @@ USER meteor
ENV METEOR_VERSION 1.10.2 ENV METEOR_VERSION 1.10.2
RUN curl -sL https://install.meteor.com?release=$METEOR_VERSION | sed s/--progress-bar/-sL/g | /bin/sh RUN curl -sL https://install.meteor.com?release=$METEOR_VERSION | sed s/--progress-bar/-sL/g | /bin/sh
ENV TAG v2.3-alpha-2 ENV TAG v2.3-alpha-3
RUN cd ~ \ RUN cd ~ \
&& svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG/bigbluebutton-html5 \ && svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG/bigbluebutton-html5 \
&& mv ~/bigbluebutton-html5 ~/source \ && mv ~/bigbluebutton-html5 ~/source \
@ -41,4 +41,4 @@ COPY settings.yml /app/programs/server/assets/app/config/settings.yml.tmpl
ENTRYPOINT ["/entrypoint.sh"] ENTRYPOINT ["/entrypoint.sh"]
# lets set the tag again, so that it is include in the image for later version retrieval # lets set the tag again, so that it is include in the image for later version retrieval
ENV TAG v2.3-alpha-2 ENV TAG v2.3-alpha-3

View File

@ -2,13 +2,13 @@
set -e set -e
cd /app cd /app
export ROOT_URL=http://127.0.0.1/html5client # export MONGO_OPLOG_URL=mongodb://10.7.7.6/local
export MONGO_URL=mongodb://10.7.7.6/meteor export MONGO_URL=mongodb://10.7.7.6/meteor
export NODE_ENV=production export NODE_ENV=production
export ENVIRONMENT_TYPE=production
export SERVER_WEBSOCKET_COMPRESSION=0 export SERVER_WEBSOCKET_COMPRESSION=0
export PORT=3000 export BIND_IP=0.0.0.0
export LANG=en_US.UTF-8 export LANG=en_US.UTF-8
export INSTANCE_MAX=1
if [ "$DEV_MODE" == true ]; then if [ "$DEV_MODE" == true ]; then
echo "DEV_MODE=true, disable TLS certificate rejecting" echo "DEV_MODE=true, disable TLS certificate rejecting"
@ -22,6 +22,14 @@ if [ -d "/html5-static" ]; then
cp -r /app/programs/web.browser/* /html5-static cp -r /app/programs/web.browser/* /html5-static
fi fi
# TODO: start multiple instances (introduced with v2.3-alpha-3)
# https://github.com/bigbluebutton/bigbluebutton/releases/tag/v2.3-alpha-3
export INSTANCE_ID=1
export ROOT_URL=http://127.0.0.1/html5client/$INSTANCE_ID
export PORT=4000
rm -f /app/programs/server/assets/app/config/settings.yml rm -f /app/programs/server/assets/app/config/settings.yml
dockerize \ dockerize \
-template /app/programs/server/assets/app/config/settings.yml.tmpl:/app/programs/server/assets/app/config/settings.yml \ -template /app/programs/server/assets/app/config/settings.yml.tmpl:/app/programs/server/assets/app/config/settings.yml \

View File

@ -9,13 +9,13 @@ public:
skipCheck: {{ .Env.DISABLE_ECHO_TEST }} skipCheck: {{ .Env.DISABLE_ECHO_TEST }}
clientTitle: {{ .Env.CLIENT_TITLE }} clientTitle: {{ .Env.CLIENT_TITLE }}
appName: BigBlueButton HTML5 Client appName: BigBlueButton HTML5 Client
bbbServerVersion: 2.3-dev bbbServerVersion: 2.3-dev-docker
copyright: "©2020 BigBlueButton Inc." copyright: '©2020 BigBlueButton Inc.'
html5ClientBuild: 1250 html5ClientBuild: "1311-docker"
helpLink: https://bigbluebutton.org/html5/ helpLink: https://bigbluebutton.org/html5/
lockOnJoin: true lockOnJoin: true
cdn: "" cdn: ''
basename: "/html5client" basename: '/html5client'
askForFeedbackOnLogout: false askForFeedbackOnLogout: false
# the default logoutUrl matches window.location.origin i.e. bigbluebutton.org for demo.bigbluebutton.org # the default logoutUrl matches window.location.origin i.e. bigbluebutton.org for demo.bigbluebutton.org
# in some cases we want only custom logoutUrl to be used when provided on meeting create. Default value: true # in some cases we want only custom logoutUrl to be used when provided on meeting create. Default value: true
@ -27,17 +27,18 @@ public:
enableTalkingIndicator: true enableTalkingIndicator: true
mirrorOwnWebcam: false mirrorOwnWebcam: false
viewersInWebcam: 8 viewersInWebcam: 8
ipv4FallbackDomain: "" ipv4FallbackDomain: ''
allowLogout: true allowLogout: true
allowFullscreen: true allowFullscreen: true
preloadNextSlides: 2 preloadNextSlides: 2
mutedAlert: mutedAlert:
enabled: true enabled: false
interval: 200 interval: 200
threshold: -50 threshold: -50
duration: 4000 duration: 4000
remainingTimeThreshold: 30 remainingTimeThreshold: 30
remainingTimeAlertThreshold: 1 remainingTimeAlertThreshold: 1
enableDebugWindow: true
# Warning: increasing the limit of breakout rooms per meeting # Warning: increasing the limit of breakout rooms per meeting
# can generate excessive overhead to the server. We recommend # can generate excessive overhead to the server. We recommend
# this value to be kept under 12. # this value to be kept under 12.
@ -89,6 +90,9 @@ public:
openActions: openActions:
accesskey: A accesskey: A
descId: openActions descId: openActions
openDebugWindow:
accesskey: K
descId: openDebugWindow
branding: branding:
displayBrandingArea: true displayBrandingArea: true
connectionTimeout: 60000 connectionTimeout: 60000
@ -261,8 +265,8 @@ public:
captions: captions:
enabled: true enabled: true
enableDictation: false enableDictation: false
backgroundColor: "#000000" backgroundColor: '#000000'
fontColor: "#FFFFFF" fontColor: '#FFFFFF'
fontFamily: Calibri fontFamily: Calibri
fontSize: 24px fontSize: 24px
takeOwnership: true takeOwnership: true
@ -301,13 +305,13 @@ public:
layout: layout:
autoSwapLayout: false autoSwapLayout: false
hidePresentation: false hidePresentation: false
webcamsDefaultPlacement: "top" webcamsDefaultPlacement: 'top'
media: media:
stunTurnServersFetchAddress: "/bigbluebutton/api/stuns" stunTurnServersFetchAddress: '/bigbluebutton/api/stuns'
cacheStunTurnServers: true cacheStunTurnServers: true
fallbackStunServer: '' fallbackStunServer: ''
recvonlyIceGatheringCheck: true recvonlyIceGatheringCheck: true
mediaTag: "#remote-media" mediaTag: '#remote-media'
callTransferTimeout: 5000 callTransferTimeout: 5000
callHangupTimeout: 2000 callHangupTimeout: 2000
callHangupMaximumRetries: 10 callHangupMaximumRetries: 10
@ -353,46 +357,46 @@ public:
defaultPresentationFile: default.pdf defaultPresentationFile: default.pdf
panZoomThrottle: 32 panZoomThrottle: 32
restoreOnUpdate: false restoreOnUpdate: false
uploadEndpoint: "/bigbluebutton/presentation/upload" uploadEndpoint: '/bigbluebutton/presentation/upload'
uploadSizeMin: 0 uploadSizeMin: 0
uploadSizeMax: 50000000 uploadSizeMax: 50000000
uploadValidMimeTypes: uploadValidMimeTypes:
- extension: .pdf - extension: .pdf
mime: application/pdf mime: application/pdf
- extension: .doc - extension: .doc
mime: application/msword mime: application/msword
- extension: .docx - extension: .docx
mime: application/vnd.openxmlformats-officedocument.wordprocessingml.document mime: application/vnd.openxmlformats-officedocument.wordprocessingml.document
- extension: .xls - extension: .xls
mime: application/vnd.ms-excel mime: application/vnd.ms-excel
- extension: .xlsx - extension: .xlsx
mime: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet mime: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
- extension: .ppt - extension: .ppt
mime: application/vnd.ms-powerpoint mime: application/vnd.ms-powerpoint
- extension: .pptx - extension: .pptx
mime: application/vnd.openxmlformats-officedocument.presentationml.presentation mime: application/vnd.openxmlformats-officedocument.presentationml.presentation
- extension: .txt - extension: .txt
mime: text/plain mime: text/plain
- extension: .rtf - extension: .rtf
mime: application/rtf mime: application/rtf
- extension: .odt - extension: .odt
mime: application/vnd.oasis.opendocument.text mime: application/vnd.oasis.opendocument.text
- extension: .ods - extension: .ods
mime: application/vnd.oasis.opendocument.spreadsheet mime: application/vnd.oasis.opendocument.spreadsheet
- extension: .odp - extension: .odp
mime: application/vnd.oasis.opendocument.presentation mime: application/vnd.oasis.opendocument.presentation
- extension: .odg - extension: .odg
mime: application/vnd.oasis.opendocument.graphics mime: application/vnd.oasis.opendocument.graphics
- extension: .odc - extension: .odc
mime: application/vnd.oasis.opendocument.chart mime: application/vnd.oasis.opendocument.chart
- extension: .odi - extension: .odi
mime: application/vnd.oasis.opendocument.image mime: application/vnd.oasis.opendocument.image
- extension: .jpg - extension: .jpg
mime: image/jpeg mime: image/jpeg
- extension: .jpeg - extension: .jpeg
mime: image/jpeg mime: image/jpeg
- extension: .png - extension: .png
mime: image/png mime: image/png
user: user:
role_moderator: MODERATOR role_moderator: MODERATOR
role_viewer: VIEWER role_viewer: VIEWER
@ -405,77 +409,77 @@ public:
toolbar: toolbar:
multiUserPenOnly: false multiUserPenOnly: false
colors: colors:
- label: black - label: black
value: "#000000" value: '#000000'
- label: white - label: white
value: "#ffffff" value: '#ffffff'
- label: red - label: red
value: "#ff0000" value: '#ff0000'
- label: orange - label: orange
value: "#ff8800" value: '#ff8800'
- label: eletricLime - label: eletricLime
value: "#ccff00" value: '#ccff00'
- label: Lime - label: Lime
value: "#00ff00" value: '#00ff00'
- label: Cyan - label: Cyan
value: "#00ffff" value: '#00ffff'
- label: dodgerBlue - label: dodgerBlue
value: "#0088ff" value: '#0088ff'
- label: blue - label: blue
value: "#0000ff" value: '#0000ff'
- label: violet - label: violet
value: "#8800ff" value: '#8800ff'
- label: magenta - label: magenta
value: "#ff00ff" value: '#ff00ff'
- label: silver - label: silver
value: "#c0c0c0" value: '#c0c0c0'
thickness: thickness:
- value: 14 - value: 14
- value: 12 - value: 12
- value: 10 - value: 10
- value: 8 - value: 8
- value: 6 - value: 6
- value: 4 - value: 4
- value: 2 - value: 2
- value: 1 - value: 1
font_sizes: font_sizes:
- value: 36 - value: 36
- value: 32 - value: 32
- value: 28 - value: 28
- value: 24 - value: 24
- value: 20 - value: 20
- value: 16 - value: 16
tools: tools:
- icon: text_tool - icon: text_tool
value: text value: text
- icon: line_tool - icon: line_tool
value: line value: line
- icon: circle_tool - icon: circle_tool
value: ellipse value: ellipse
- icon: triangle_tool - icon: triangle_tool
value: triangle value: triangle
- icon: rectangle_tool - icon: rectangle_tool
value: rectangle value: rectangle
- icon: pen_tool - icon: pen_tool
value: pencil value: pencil
- icon: hand - icon: hand
value: hand value: hand
presenterTools: presenterTools:
- text - text
- line - line
- ellipse - ellipse
- triangle - triangle
- rectangle - rectangle
- pencil - pencil
- hand - hand
multiUserTools: multiUserTools:
- text - text
- line - line
- ellipse - ellipse
- triangle - triangle
- rectangle - rectangle
- pencil - pencil
- hand - hand
clientLog: clientLog:
server: server:
enabled: false enabled: false
@ -490,11 +494,11 @@ public:
method: POST method: POST
throttleInterval: 400 throttleInterval: 400
flushOnClose: true flushOnClose: true
logTag: "" logTag: ''
private: private:
app: app:
host: 0.0.0.0 host: 0.0.0.0
port: 3000 port: 4000
localesUrl: /locales localesUrl: /locales
pencilChunkLength: 100 pencilChunkLength: 100
loadSlidesFromHttpAlways: false loadSlidesFromHttpAlways: false
@ -518,15 +522,15 @@ private:
toAkkaApps: to-akka-apps-redis-channel toAkkaApps: to-akka-apps-redis-channel
toThirdParty: to-third-party-redis-channel toThirdParty: to-third-party-redis-channel
subscribeTo: subscribeTo:
- to-html5-redis-channel - to-html5-redis-channel
- from-akka-apps-* - from-akka-apps-*
- from-third-party-redis-channel - from-third-party-redis-channel
- from-etherpad-redis-channel - from-etherpad-redis-channel
async: async:
- from-akka-apps-wb-redis-channel - from-akka-apps-wb-redis-channel
ignored: ignored:
- CheckAlivePongSysMsg - CheckAlivePongSysMsg
- DoLatencyTracerMsg - DoLatencyTracerMsg
serverLog: serverLog:
level: info level: info
streamerLog: false streamerLog: false

View File

@ -2,7 +2,7 @@ FROM nginx:1.19-alpine
RUN apk add subversion RUN apk add subversion
ENV TAG v2.3-alpha-2 ENV TAG v2.3-alpha-3
# get bbb-playback-presentation web files # get bbb-playback-presentation web files
RUN mkdir /www \ RUN mkdir /www \

View File

@ -1,28 +1,33 @@
location @html5client { location @html5client {
proxy_pass http://html5:3000; proxy_pass http://html5:4000;
proxy_http_version 1.1; proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade; proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade"; proxy_set_header Connection "Upgrade";
} }
location /html5client/compatibility { location /html5client/1/compatibility {
alias /html5-static/app/compatibility; alias /html5-static/app/compatibility;
} }
location /html5client/fonts { location /html5client/1/fonts {
alias /html5-static/app/fonts; alias /html5-static/app/fonts;
} }
location /html5client/resources { location /html5client/1/resources {
alias /html5-static/app/resources; alias /html5-static/app/resources;
} }
location /html5client/svgs { location /html5client/1/svgs {
alias /html5-static/app/svgs; alias /html5-static/app/svgs;
} }
location /html5client { location /html5client/1 {
alias /html5-static;
try_files $uri @html5client;
}
location /html5client/ {
alias /html5-static; alias /html5-static;
try_files $uri @html5client; try_files $uri @html5client;
} }
location /_timesync { location /_timesync {
proxy_pass http://html5:3000; proxy_pass http://html5:4000;
} }

View File

@ -1,4 +0,0 @@
location = /client/guest-wait.html {
alias /etc/nginx/bbb/guest-wait.html;
}

View File

@ -1,81 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>Guest Lobby</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style></style>
<script type="text/javascript">
function updateMessage(message) {
document.querySelector('#content > p').innerHTML = message;
}
function findSessionToken() {
return location.search
.substr(1)
.split('&')
.find(function(item) {
return item.split('=')[0] === 'sessionToken'
});
};
function fetchGuestWait(sessionToken) {
const GUEST_WAIT_ENDPOINT = '/bigbluebutton/api/guestWait';
return window.fetch(GUEST_WAIT_ENDPOINT+'?'+sessionToken+'&redirect=false')
.then(res => res.json())
};
function pollGuestStatus(token, attempt, limit, everyMs) {
setTimeout(function() {
var REDIRECT_STATUSES = ['ALLOW', 'DENY'];
if (attempt >= limit) {
updateMessage('TIMEOUT_MESSAGE_HERE');
return;
}
fetchGuestWait(token).then(function(data) {
console.log("data=" + JSON.stringify(data));
var status = data.response.guestStatus;
if (REDIRECT_STATUSES.includes(status)) {
window.location = data.response.url;
return;
}
return pollGuestStatus(token, attempt + 1, limit, everyMs);
})
}, everyMs);
};
window.onload = function() {
try {
var ATTEMPT_EVERY_MS = 5000;
var ATTEMPT_LIMIT = 100;
var sessionToken = findSessionToken();
if(!sessionToken) {
updateMessage('NO_SESSION_TOKEN_MESSAGE');
return;
}
pollGuestStatus(sessionToken, 0, ATTEMPT_LIMIT, ATTEMPT_EVERY_MS);
} catch (e) {
console.error(e);
updateMessage('GENERIC_ERROR_MESSAGE');
}
};
</script>
</head>
<body>
<div id="banner"></div>
<div id="content">
<p>Please wait for a moderator to approve you joining the meeting.</p>
</div>
</body>
</html>

View File

@ -14,7 +14,8 @@ RUN apt-get update && apt-get install -y \
python3-icu \ python3-icu \
ffmpeg \ ffmpeg \
poppler-utils \ poppler-utils \
imagemagick imagemagick \
supervisor
# compile and install mkclean # compile and install mkclean
RUN cd /tmp \ RUN cd /tmp \
@ -25,7 +26,7 @@ RUN cd /tmp \
&& ./mkclean/configure.compiled \ && ./mkclean/configure.compiled \
&& make -C mkclean \ && make -C mkclean \
&& cp ./release/gcc_linux_x64/mkclean /usr/bin/mkclean \ && cp ./release/gcc_linux_x64/mkclean /usr/bin/mkclean \
&& rm -r /tmp/mkclean-0.8.10 && rm -r /tmp/mkclean-*
# add dockerize # add dockerize
ENV DOCKERIZE_VERSION v0.6.1 ENV DOCKERIZE_VERSION v0.6.1
@ -36,11 +37,9 @@ RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSI
RUN mkdir -p \ RUN mkdir -p \
/usr/local/bigbluebutton \ /usr/local/bigbluebutton \
/usr/local/bigbluebutton/core \ /usr/local/bigbluebutton/core \
/etc/bigbluebutton \ /etc/bigbluebutton
/var/log/bigbluebutton \
/var/log/bigbluebutton/presentation
ENV TAG v2.3-alpha-2 ENV TAG v2.3-alpha-3
# add bbb-record-core (lib, scripts and Gemfile) # add bbb-record-core (lib, scripts and Gemfile)
RUN cd /usr/local/bigbluebutton/core \ RUN cd /usr/local/bigbluebutton/core \
@ -48,8 +47,8 @@ RUN cd /usr/local/bigbluebutton/core \
&& svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG/record-and-playback/core/scripts \ && svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG/record-and-playback/core/scripts \
&& rm -rf /usr/local/bigbluebutton/core/*/.svn \ && rm -rf /usr/local/bigbluebutton/core/*/.svn \
&& wget https://raw.githubusercontent.com/bigbluebutton/bigbluebutton/$TAG/record-and-playback/core/Gemfile.lock \ && wget https://raw.githubusercontent.com/bigbluebutton/bigbluebutton/$TAG/record-and-playback/core/Gemfile.lock \
&& wget https://raw.githubusercontent.com/bigbluebutton/bigbluebutton/$TAG/record-and-playback/core/Gemfile && wget https://raw.githubusercontent.com/bigbluebutton/bigbluebutton/$TAG/record-and-playback/core/Gemfile \
&& wget https://raw.githubusercontent.com/bigbluebutton/bigbluebutton/$TAG/record-and-playback/core/Rakefile
# add bbb-playback-presentation scripts # add bbb-playback-presentation scripts
RUN cd /tmp \ RUN cd /tmp \
@ -60,33 +59,36 @@ RUN cd /tmp \
# install ruby dependencies # install ruby dependencies
RUN cd /usr/local/bigbluebutton/core \ RUN cd /usr/local/bigbluebutton/core \
&& gem install builder \ && gem install builder \
&& gem install bundler \ && gem install bundler -v 2.1.4 \
&& /usr/local/bin/bundle && /usr/local/bin/bundle
# log to file instead of journald
RUN sed -i 's|Journald::Logger\.new.*|Logger.new("/var/log/bigbluebutton/recording.log")|g' /usr/local/bigbluebutton/core/lib/recordandplayback.rb && \
sed -i 's|Journald::Logger\.new.*|Logger.new("/var/log/bigbluebutton/recording.log")|g' /usr/local/bigbluebutton/core/scripts/rap-caption-inbox.rb && \
sed -i 's|Logger\.new.*|Logger.new("/var/log/bigbluebutton/recording.log")|g' /usr/local/bigbluebutton/core/scripts/rap-process-worker.rb
# fix syntax error in v2.3-alpha-3
# https://github.com/bigbluebutton/bigbluebutton/pull/11060
RUN sed -i 's|File\.exist(|File.exist?(|' /usr/local/bigbluebutton/core/lib/recordandplayback/workers/events_worker.rb
# add bbb-record with some adjustments so bbb-record works in this environment # add bbb-record with some adjustments so bbb-record works in this environment
RUN cd /usr/bin \ RUN cd /usr/bin \
&& wget https://raw.githubusercontent.com/bigbluebutton/bigbluebutton/$TAG/bigbluebutton-config/bin/bbb-record \ && wget https://raw.githubusercontent.com/bigbluebutton/bigbluebutton/$TAG/bigbluebutton-config/bin/bbb-record \
&& chmod +x /usr/bin/bbb-record \ && chmod +x /usr/bin/bbb-record \
&& sed -i 's/^BBB_WEB.*/BBB_WEB=""/' /usr/bin/bbb-record \ && sed -i 's/^BBB_WEB.*/BBB_WEB=""/' /usr/bin/bbb-record \
&& sed -i 's/systemctl.*//' /usr/bin/bbb-record \ && sed -i 's/systemctl.*//' /usr/bin/bbb-record \
&& echo "BIGBLUEBUTTON_RELEASE=$TAG" > /etc/bigbluebutton/bigbluebutton-release \ && echo "BIGBLUEBUTTON_RELEASE=$TAG" > /etc/bigbluebutton/bigbluebutton-release
&& touch /var/log/bigbluebutton/bbb-web.log
# create user # create user
# the ID should match the one creating the files in `core` # the ID should match the one creating the files in `core`
RUN groupadd -g 998 bigbluebutton && useradd -m -u 998 -g bigbluebutton bigbluebutton RUN groupadd -g 998 bigbluebutton && useradd -m -u 998 -g bigbluebutton bigbluebutton
# change owner # change owner
# https://github.com/alangecker/bigbluebutton-docker/issues/63 # https://github.com/alangecker/bigbluebutton-docker/issues/63
RUN chown -R 998:998 /usr/local/bigbluebutton /var/log/bigbluebutton RUN chown -R 998:998 /usr/local/bigbluebutton
COPY bigbluebutton.yml /usr/local/bigbluebutton/core/scripts/bigbluebutton.yml.tmpl COPY bigbluebutton.yml /usr/local/bigbluebutton/core/scripts/bigbluebutton.yml.tmpl
ADD log-collector.py /log-collector.py COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
ADD entrypoint.sh /entrypoint.sh COPY entrypoint.sh /entrypoint.sh
# change user before entrypoint ENTRYPOINT /entrypoint.sh
# to set user rights for all generated videos
USER bigbluebutton
ENTRYPOINT dockerize \
-template /usr/local/bigbluebutton/core/scripts/bigbluebutton.yml.tmpl:/usr/local/bigbluebutton/core/scripts/bigbluebutton.yml \
/entrypoint.sh

View File

@ -1,4 +1,4 @@
bbb_version: '2.2.30' bbb_version: '2.1.0'
raw_audio_src: /var/freeswitch/meetings raw_audio_src: /var/freeswitch/meetings
raw_video_src: /usr/share/red5/webapps/video/streams raw_video_src: /usr/share/red5/webapps/video/streams
kurento_video_src: /var/kurento/recordings kurento_video_src: /var/kurento/recordings
@ -11,14 +11,30 @@ notes_endpoint: http://etherpad:9001/p
# Specify the notes formats we archive # Specify the notes formats we archive
# txt, doc and odt are also supported # txt, doc and odt are also supported
notes_formats: notes_formats:
- etherpad - etherpad
- html - html
- pdf - pdf
redis_host: redis redis_host: redis
redis_port: 6379 redis_port: 6379
# Uncomment and set password if redis require it. # Uncomment and set password if redis require it.
# redis_password: changeme # redis_password: changeme
# redis_workers_host: 127.0.0.1
# redis_workers_port: 6379
# Sequence of recording steps. Keys are the current step, values
# are the next step(s). Examples:
# current_step: next_step
# "current_step-format": "next_step-format"
# current_step:
# - next_step
# - another_step-format
steps:
archive: "sanity"
sanity: "captions"
captions: "process:presentation"
"process:presentation": "publish:presentation"
# For PRODUCTION # For PRODUCTION
log_dir: /var/log/bigbluebutton log_dir: /var/log/bigbluebutton
events_dir: /var/bigbluebutton/events events_dir: /var/bigbluebutton/events
@ -34,4 +50,4 @@ playback_protocol: https
#log_dir: /home/ubuntu/temp/log #log_dir: /home/ubuntu/temp/log
#recording_dir: /home/ubuntu/temp/recording #recording_dir: /home/ubuntu/temp/recording
#published_dir: /home/ubuntu/temp/published #published_dir: /home/ubuntu/temp/published
#playback_host: meet.livingutopia.org #playback_host: 127.0.0.1

View File

@ -1,27 +1,11 @@
#!/bin/bash #!/bin/bash
# print all logs to stdout touch /var/log/bigbluebutton/recording.log
python3 -u /log-collector.py & touch /var/log/bigbluebutton/bbb-web.log
mkdir -p /var/log/bigbluebutton/presentation
chown -R bigbluebutton:bigbluebutton /var/log/bigbluebutton
cd /usr/local/bigbluebutton/core/scripts dockerize \
PATH_CHECK="/var/bigbluebutton/recording/status" -template /usr/local/bigbluebutton/core/scripts/bigbluebutton.yml.tmpl:/usr/local/bigbluebutton/core/scripts/bigbluebutton.yml \
while true; do -stdout /var/log/bigbluebutton/recording.log \
echo "execute workers..." /usr/bin/supervisord --nodaemon
if [[ $(compgen -G "$PATH_CHECK/recorded/*.done") ]];then
bundle exec ruby rap-archive-worker.rb
fi
if [[ $(compgen -G "$PATH_CHECK/archived/*.done") ]];then
bundle exec ruby rap-sanity-worker.rb
fi
if [[ $(compgen -G "$PATH_CHECK/sanity/*.done") ]];then
bundle exec ruby rap-process-worker.rb
fi
if [[ $(compgen -G "$PATH_CHECK/processed/*.done") ]];then
bundle exec ruby rap-publish-worker.rb
fi
#bundle exec ruby rap-caption-inbox.rb
if [[ $(compgen -G "$PATH_CHECK/ended/*.done") ]];then
bundle exec ruby rap-events-worker.rb
fi
sleep 30s
done

View File

@ -1,45 +0,0 @@
# this script sends all entries from different logfiles
# to stdout, so that they appear in the docker logs
import threading
import subprocess
import time
import pyinotify
import os
import re
import sys
log_dir = '/var/log/bigbluebutton'
def thread_function(name, filename):
f = subprocess.Popen(['tail','-F', '-n', '0', filename],\
stdout=subprocess.PIPE,stderr=subprocess.PIPE)
while True:
line = f.stdout.readline().decode('utf-8').strip()
if len(line):
print(name.ljust(10)+' |', line)
sys.stdout.flush()
def tail_file(name, filename):
x = threading.Thread(target=thread_function, args=(name, filename,))
x.start()
tail_file('rap-worker', log_dir+'/bbb-rap-worker.log')
tail_file('sanity', log_dir+'/sanity.log')
tail_file('publish', log_dir+'/post_publish.log')
class EventHandler(pyinotify.ProcessEvent):
def process_IN_CREATE(self, event):
filename = os.path.basename(event.pathname)
if re.match('^archive-.*\.log$', filename):
tail_file('archive', event.pathname)
elif re.match('^process-.*\.log$', filename):
tail_file('process', event.pathname)
wm = pyinotify.WatchManager()
handler = EventHandler()
notifier = pyinotify.Notifier(wm, handler)
wdd = wm.add_watch(log_dir, pyinotify.IN_CREATE, rec=True)
notifier.loop()

View File

@ -0,0 +1,32 @@
[supervisord]
user=root
[program:rasque_workers]
command=rake resque:workers
directory=/usr/local/bigbluebutton/core/scripts
environment=QUEUE="rap:archive,rap:publish,rap:process,rap:sanity,rap:captions",COUNT="1",VVERBOSE="1"
user=bigbluebutton
stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0
stderr_logfile=/dev/fd/2
stderr_logfile_maxbytes=0
[program:rap_starter]
command=bundle exec ruby /usr/local/bigbluebutton/core/scripts/rap-starter.rb
directory=/usr/local/bigbluebutton/core/scripts
user=bigbluebutton
stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0
stderr_logfile=/dev/fd/2
stderr_logfile_maxbytes=0
[program:rap_caption_inbox]
command=bundle exec ruby /usr/local/bigbluebutton/core/scripts/rap-caption-inbox.rb
directory=/usr/local/bigbluebutton/core/scripts
user=bigbluebutton
stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0
stderr_logfile=/dev/fd/2
stderr_logfile_maxbytes=0