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:
- 10.7.7.1:5000:80
postgres:
image: postgres:12
image: postgres:12-alpine
restart: unless-stopped
environment:
POSTGRES_DB: greenlight

View File

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

View File

@ -88,7 +88,7 @@ services:
ipv4_address: 10.7.7.5
mongodb:
image: mongo:4.2
image: mongo:4.4
restart: unless-stopped
networks:
bbb-net:
@ -162,12 +162,16 @@ services:
fsesl-akka:
build: mod/fsesl-akka
depends_on:
- redis
networks:
bbb-net:
ipv4_address: 10.7.7.14
apps-akka:
build: mod/apps-akka
depends_on:
- redis
environment:
DOMAIN: ${DOMAIN}
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
# 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 \
&& 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 \
&& rm -rf /source/.svn

View File

@ -59,11 +59,6 @@ eventBus {
outBbbMsgMsgChannel = "OutBbbMsgChannel"
}
sharedNotes {
maxNumberOfNotes = 3
maxNumberOfUndos = 30
}
http {
interface = "10.7.7.2"
port = 9999
@ -76,6 +71,7 @@ services {
apps {
checkPermissions = true
ejectOnViolation = false
endMeetingWhenNoMoreAuthedUsers = false
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
# 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 \
&& rm -rf /bbb-common-message/.svn
@ -26,7 +26,7 @@ RUN cd /opt \
ENV PATH="/opt/gradle-6.7/bin:${PATH}"
# 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 \
&& rm -rf /bbb-common-message/.svn
@ -35,7 +35,7 @@ RUN cd /bbb-common-web \
&& ./deploy.sh
# 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 \
&& 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/run.sh /usr/share/prescheck/prescheck.sh
COPY mocked-ps /usr/bin/ps
# add entrypoint and templates
COPY entrypoint.sh /entrypoint.sh
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
# Default loglevel.
# Default loglevel.
appLogLevel=DEBUG
#----------------------------------------------------
@ -172,19 +172,10 @@ defaultMaxUsers=0
# Current default is 0 (meeting doesn't end).
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
# isn't responsive
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
# a period of time after meeting created.
meetingExpireIfNoUserJoinedInMinutes=5
@ -204,7 +195,7 @@ userInactivityThresholdInMinutes=30
# warning before being logged out.
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
# false - when record param is passed from api, override this default
{{ if isTrue .Env.ENABLE_RECORDING }}
@ -215,7 +206,7 @@ disableRecordingDefault=true
# Start recording when first user joins the meeting.
# For backward compatibility with 0.81 where whole meeting
# is recorded.
# is recorded.
autoStartRecording=false
# 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
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.
defaultClientUrl=${bigbluebutton.web.serverURL}/client/BigBlueButton.html
defaultHTML5ClientUrl=${bigbluebutton.web.serverURL}/html5client/%%INSTANCEID%%/join
# Allow requests without JSESSIONID to be handled (default = 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.
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)
# call. This avatar is displayed if the user isn't sharing the webcam and
# the option (displayAvatar) is enabled in config.xml
defaultAvatarURL=${bigbluebutton.web.serverURL}/client/avatar.png
# The default avatar image to display.
useDefaultAvatar=false
defaultAvatarURL=${bigbluebutton.web.serverURL}/html5client/resources/images/avatar.png
# The URL of the default configuration
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 &
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/
dockerize \
-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
# 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 \
&& 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 \
&& rm -rf /bbb-fsesl-client/.svn
@ -21,7 +21,7 @@ RUN cd /bbb-fsesl-client \
&& ./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 \
&& rm -rf /source/.svn

View File

@ -14,7 +14,7 @@ USER meteor
ENV METEOR_VERSION 1.10.2
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 ~ \
&& svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG/bigbluebutton-html5 \
&& mv ~/bigbluebutton-html5 ~/source \
@ -41,4 +41,4 @@ COPY settings.yml /app/programs/server/assets/app/config/settings.yml.tmpl
ENTRYPOINT ["/entrypoint.sh"]
# 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
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 NODE_ENV=production
export ENVIRONMENT_TYPE=production
export SERVER_WEBSOCKET_COMPRESSION=0
export PORT=3000
export BIND_IP=0.0.0.0
export LANG=en_US.UTF-8
export INSTANCE_MAX=1
if [ "$DEV_MODE" == true ]; then
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
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
dockerize \
-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 }}
clientTitle: {{ .Env.CLIENT_TITLE }}
appName: BigBlueButton HTML5 Client
bbbServerVersion: 2.3-dev
copyright: "©2020 BigBlueButton Inc."
html5ClientBuild: 1250
bbbServerVersion: 2.3-dev-docker
copyright: '©2020 BigBlueButton Inc.'
html5ClientBuild: "1311-docker"
helpLink: https://bigbluebutton.org/html5/
lockOnJoin: true
cdn: ""
basename: "/html5client"
cdn: ''
basename: '/html5client'
askForFeedbackOnLogout: false
# 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
@ -27,17 +27,18 @@ public:
enableTalkingIndicator: true
mirrorOwnWebcam: false
viewersInWebcam: 8
ipv4FallbackDomain: ""
ipv4FallbackDomain: ''
allowLogout: true
allowFullscreen: true
preloadNextSlides: 2
mutedAlert:
enabled: true
enabled: false
interval: 200
threshold: -50
duration: 4000
remainingTimeThreshold: 30
remainingTimeAlertThreshold: 1
enableDebugWindow: true
# Warning: increasing the limit of breakout rooms per meeting
# can generate excessive overhead to the server. We recommend
# this value to be kept under 12.
@ -89,6 +90,9 @@ public:
openActions:
accesskey: A
descId: openActions
openDebugWindow:
accesskey: K
descId: openDebugWindow
branding:
displayBrandingArea: true
connectionTimeout: 60000
@ -261,8 +265,8 @@ public:
captions:
enabled: true
enableDictation: false
backgroundColor: "#000000"
fontColor: "#FFFFFF"
backgroundColor: '#000000'
fontColor: '#FFFFFF'
fontFamily: Calibri
fontSize: 24px
takeOwnership: true
@ -301,13 +305,13 @@ public:
layout:
autoSwapLayout: false
hidePresentation: false
webcamsDefaultPlacement: "top"
webcamsDefaultPlacement: 'top'
media:
stunTurnServersFetchAddress: "/bigbluebutton/api/stuns"
stunTurnServersFetchAddress: '/bigbluebutton/api/stuns'
cacheStunTurnServers: true
fallbackStunServer: ''
fallbackStunServer: ''
recvonlyIceGatheringCheck: true
mediaTag: "#remote-media"
mediaTag: '#remote-media'
callTransferTimeout: 5000
callHangupTimeout: 2000
callHangupMaximumRetries: 10
@ -353,46 +357,46 @@ public:
defaultPresentationFile: default.pdf
panZoomThrottle: 32
restoreOnUpdate: false
uploadEndpoint: "/bigbluebutton/presentation/upload"
uploadEndpoint: '/bigbluebutton/presentation/upload'
uploadSizeMin: 0
uploadSizeMax: 50000000
uploadValidMimeTypes:
- extension: .pdf
mime: application/pdf
- extension: .doc
mime: application/msword
- extension: .docx
mime: application/vnd.openxmlformats-officedocument.wordprocessingml.document
- extension: .xls
mime: application/vnd.ms-excel
- extension: .xlsx
mime: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
- extension: .ppt
mime: application/vnd.ms-powerpoint
- extension: .pptx
mime: application/vnd.openxmlformats-officedocument.presentationml.presentation
- extension: .txt
mime: text/plain
- extension: .rtf
mime: application/rtf
- extension: .odt
mime: application/vnd.oasis.opendocument.text
- extension: .ods
mime: application/vnd.oasis.opendocument.spreadsheet
- extension: .odp
mime: application/vnd.oasis.opendocument.presentation
- extension: .odg
mime: application/vnd.oasis.opendocument.graphics
- extension: .odc
mime: application/vnd.oasis.opendocument.chart
- extension: .odi
mime: application/vnd.oasis.opendocument.image
- extension: .jpg
mime: image/jpeg
- extension: .jpeg
mime: image/jpeg
- extension: .png
mime: image/png
- extension: .pdf
mime: application/pdf
- extension: .doc
mime: application/msword
- extension: .docx
mime: application/vnd.openxmlformats-officedocument.wordprocessingml.document
- extension: .xls
mime: application/vnd.ms-excel
- extension: .xlsx
mime: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
- extension: .ppt
mime: application/vnd.ms-powerpoint
- extension: .pptx
mime: application/vnd.openxmlformats-officedocument.presentationml.presentation
- extension: .txt
mime: text/plain
- extension: .rtf
mime: application/rtf
- extension: .odt
mime: application/vnd.oasis.opendocument.text
- extension: .ods
mime: application/vnd.oasis.opendocument.spreadsheet
- extension: .odp
mime: application/vnd.oasis.opendocument.presentation
- extension: .odg
mime: application/vnd.oasis.opendocument.graphics
- extension: .odc
mime: application/vnd.oasis.opendocument.chart
- extension: .odi
mime: application/vnd.oasis.opendocument.image
- extension: .jpg
mime: image/jpeg
- extension: .jpeg
mime: image/jpeg
- extension: .png
mime: image/png
user:
role_moderator: MODERATOR
role_viewer: VIEWER
@ -405,77 +409,77 @@ public:
toolbar:
multiUserPenOnly: false
colors:
- label: black
value: "#000000"
- label: white
value: "#ffffff"
- label: red
value: "#ff0000"
- label: orange
value: "#ff8800"
- label: eletricLime
value: "#ccff00"
- label: Lime
value: "#00ff00"
- label: Cyan
value: "#00ffff"
- label: dodgerBlue
value: "#0088ff"
- label: blue
value: "#0000ff"
- label: violet
value: "#8800ff"
- label: magenta
value: "#ff00ff"
- label: silver
value: "#c0c0c0"
- label: black
value: '#000000'
- label: white
value: '#ffffff'
- label: red
value: '#ff0000'
- label: orange
value: '#ff8800'
- label: eletricLime
value: '#ccff00'
- label: Lime
value: '#00ff00'
- label: Cyan
value: '#00ffff'
- label: dodgerBlue
value: '#0088ff'
- label: blue
value: '#0000ff'
- label: violet
value: '#8800ff'
- label: magenta
value: '#ff00ff'
- label: silver
value: '#c0c0c0'
thickness:
- value: 14
- value: 12
- value: 10
- value: 8
- value: 6
- value: 4
- value: 2
- value: 1
- value: 14
- value: 12
- value: 10
- value: 8
- value: 6
- value: 4
- value: 2
- value: 1
font_sizes:
- value: 36
- value: 32
- value: 28
- value: 24
- value: 20
- value: 16
- value: 36
- value: 32
- value: 28
- value: 24
- value: 20
- value: 16
tools:
- icon: text_tool
value: text
- icon: line_tool
value: line
- icon: circle_tool
value: ellipse
- icon: triangle_tool
value: triangle
- icon: rectangle_tool
value: rectangle
- icon: pen_tool
value: pencil
- icon: hand
value: hand
- icon: text_tool
value: text
- icon: line_tool
value: line
- icon: circle_tool
value: ellipse
- icon: triangle_tool
value: triangle
- icon: rectangle_tool
value: rectangle
- icon: pen_tool
value: pencil
- icon: hand
value: hand
presenterTools:
- text
- line
- ellipse
- triangle
- rectangle
- pencil
- hand
- text
- line
- ellipse
- triangle
- rectangle
- pencil
- hand
multiUserTools:
- text
- line
- ellipse
- triangle
- rectangle
- pencil
- hand
- text
- line
- ellipse
- triangle
- rectangle
- pencil
- hand
clientLog:
server:
enabled: false
@ -490,11 +494,11 @@ public:
method: POST
throttleInterval: 400
flushOnClose: true
logTag: ""
logTag: ''
private:
app:
host: 0.0.0.0
port: 3000
port: 4000
localesUrl: /locales
pencilChunkLength: 100
loadSlidesFromHttpAlways: false
@ -518,15 +522,15 @@ private:
toAkkaApps: to-akka-apps-redis-channel
toThirdParty: to-third-party-redis-channel
subscribeTo:
- to-html5-redis-channel
- from-akka-apps-*
- from-third-party-redis-channel
- from-etherpad-redis-channel
- to-html5-redis-channel
- from-akka-apps-*
- from-third-party-redis-channel
- from-etherpad-redis-channel
async:
- from-akka-apps-wb-redis-channel
- from-akka-apps-wb-redis-channel
ignored:
- CheckAlivePongSysMsg
- DoLatencyTracerMsg
- CheckAlivePongSysMsg
- DoLatencyTracerMsg
serverLog:
level: info
streamerLog: false

View File

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

View File

@ -1,28 +1,33 @@
location @html5client {
proxy_pass http://html5:3000;
proxy_pass http://html5:4000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
}
location /html5client/compatibility {
location /html5client/1/compatibility {
alias /html5-static/app/compatibility;
}
location /html5client/fonts {
location /html5client/1/fonts {
alias /html5-static/app/fonts;
}
location /html5client/resources {
location /html5client/1/resources {
alias /html5-static/app/resources;
}
location /html5client/svgs {
location /html5client/1/svgs {
alias /html5-static/app/svgs;
}
location /html5client {
location /html5client/1 {
alias /html5-static;
try_files $uri @html5client;
}
location /html5client/ {
alias /html5-static;
try_files $uri @html5client;
}
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 \
ffmpeg \
poppler-utils \
imagemagick
imagemagick \
supervisor
# compile and install mkclean
RUN cd /tmp \
@ -25,7 +26,7 @@ RUN cd /tmp \
&& ./mkclean/configure.compiled \
&& make -C mkclean \
&& cp ./release/gcc_linux_x64/mkclean /usr/bin/mkclean \
&& rm -r /tmp/mkclean-0.8.10
&& rm -r /tmp/mkclean-*
# add dockerize
ENV DOCKERIZE_VERSION v0.6.1
@ -36,11 +37,9 @@ RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSI
RUN mkdir -p \
/usr/local/bigbluebutton \
/usr/local/bigbluebutton/core \
/etc/bigbluebutton \
/var/log/bigbluebutton \
/var/log/bigbluebutton/presentation
/etc/bigbluebutton
ENV TAG v2.3-alpha-2
ENV TAG v2.3-alpha-3
# add bbb-record-core (lib, scripts and Gemfile)
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 \
&& 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
&& 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
RUN cd /tmp \
@ -60,33 +59,36 @@ RUN cd /tmp \
# install ruby dependencies
RUN cd /usr/local/bigbluebutton/core \
&& gem install builder \
&& gem install bundler \
&& gem install bundler -v 2.1.4 \
&& /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
RUN cd /usr/bin \
&& wget https://raw.githubusercontent.com/bigbluebutton/bigbluebutton/$TAG/bigbluebutton-config/bin/bbb-record \
&& chmod +x /usr/bin/bbb-record \
&& sed -i 's/^BBB_WEB.*/BBB_WEB=""/' /usr/bin/bbb-record \
&& sed -i 's/systemctl.*//' /usr/bin/bbb-record \
&& echo "BIGBLUEBUTTON_RELEASE=$TAG" > /etc/bigbluebutton/bigbluebutton-release \
&& touch /var/log/bigbluebutton/bbb-web.log
&& echo "BIGBLUEBUTTON_RELEASE=$TAG" > /etc/bigbluebutton/bigbluebutton-release
# create user
# the ID should match the one creating the files in `core`
RUN groupadd -g 998 bigbluebutton && useradd -m -u 998 -g bigbluebutton bigbluebutton
# change owner
# 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
ADD log-collector.py /log-collector.py
ADD entrypoint.sh /entrypoint.sh
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
COPY entrypoint.sh /entrypoint.sh
# change user before entrypoint
# 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
ENTRYPOINT /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_video_src: /usr/share/red5/webapps/video/streams
kurento_video_src: /var/kurento/recordings
@ -11,14 +11,30 @@ notes_endpoint: http://etherpad:9001/p
# Specify the notes formats we archive
# txt, doc and odt are also supported
notes_formats:
- etherpad
- html
- pdf
- etherpad
- html
- pdf
redis_host: redis
redis_port: 6379
# Uncomment and set password if redis require it.
# 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
log_dir: /var/log/bigbluebutton
events_dir: /var/bigbluebutton/events
@ -34,4 +50,4 @@ playback_protocol: https
#log_dir: /home/ubuntu/temp/log
#recording_dir: /home/ubuntu/temp/recording
#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
# print all logs to stdout
python3 -u /log-collector.py &
touch /var/log/bigbluebutton/recording.log
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
PATH_CHECK="/var/bigbluebutton/recording/status"
while true; do
echo "execute workers..."
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
dockerize \
-template /usr/local/bigbluebutton/core/scripts/bigbluebutton.yml.tmpl:/usr/local/bigbluebutton/core/scripts/bigbluebutton.yml \
-stdout /var/log/bigbluebutton/recording.log \
/usr/bin/supervisord --nodaemon

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