Skip to content

Commit

Permalink
Merge branch 'v2.6.x-release' into default-nginx-config
Browse files Browse the repository at this point in the history
  • Loading branch information
antobinary authored Aug 20, 2022
2 parents fd5d3cb + 4b8b216 commit 2d7ac73
Show file tree
Hide file tree
Showing 977 changed files with 37,821 additions and 54,058 deletions.
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,4 @@ contact_links:
about: Issue tracker for the Greenlight frontend
- name: Commercial Support
url: https://bigbluebutton.org/commercial-support
abount: List of companies offering commercial BigBlueButton support
about: List of companies offering commercial BigBlueButton support
26 changes: 26 additions & 0 deletions .github/ISSUE_TEMPLATE/test-scenario.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
---
name: New Test Case
about: Specify a [HTML5 client] test scenario to be added to the automated test coverage suite
title: ''
labels: 'type: test'
assignees: ''

---

<!--PLEASE DO NOT FILE ISSUES FOR GENERAL SUPPORT QUESTIONS.
This issue tracker is only for bbb development related issues.-->

**Describe the test scenario, be specific**
A clear and concise description of what the test case is.

Steps to reproduce:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error

**Edge cases**
Any specific edge cases to keep in mind?

**Additional context**
Add any other context about the problem here.
144 changes: 144 additions & 0 deletions .github/workflows/automated-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
name: 'Automated tests'
on:
push:
branches:
- 'develop'
- 'v2.[5-9].x-release'
- 'v[3-9].*.x-release'
pull_request:
types: [opened, synchronize, reopened]
permissions:
contents: read
jobs:
build-install-and-test:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- run: ./build/get_external_dependencies.sh
- run: ./build/setup.sh bbb-apps-akka
- run: ./build/setup.sh bbb-config
- run: ./build/setup.sh bbb-etherpad
- run: ./build/setup.sh bbb-export-annotations
- run: ./build/setup.sh bbb-freeswitch-core
- run: ./build/setup.sh bbb-freeswitch-sounds
- run: ./build/setup.sh bbb-fsesl-akka
- run: ./build/setup.sh bbb-html5-nodejs
- run: ./build/setup.sh bbb-html5
- run: ./build/setup.sh bbb-learning-dashboard
- run: ./build/setup.sh bbb-libreoffice-docker
- run: ./build/setup.sh bbb-mkclean
- run: ./build/setup.sh bbb-pads
- run: ./build/setup.sh bbb-playback
- run: ./build/setup.sh bbb-playback-notes
- run: ./build/setup.sh bbb-playback-podcast
- run: ./build/setup.sh bbb-playback-presentation
- run: ./build/setup.sh bbb-playback-screenshare
- run: ./build/setup.sh bbb-record-core
- run: ./build/setup.sh bbb-web
- run: ./build/setup.sh bbb-webrtc-sfu
- run: ./build/setup.sh bigbluebutton
- run: tar cvf artifacts.tar artifacts/
- name: Archive packages
uses: actions/upload-artifact@v3
with:
name: artifacts.tar
path: |
artifacts.tar
# - name: Fake package build
# run: |
# sudo sh -c '
# echo "Faking a package build (to speed up installation test)"
# cd /
# wget -q "http://ci.bbbvm.imdt.com.br/artifacts.tar"
# tar xf artifacts.tar
# '
- name: Generate CA
run: |
sudo sh -c '
mkdir /root/bbb-ci-ssl/
cd /root/bbb-ci-ssl/
openssl rand -base64 48 > /root/bbb-ci-ssl/bbb-dev-ca.pass ;
chmod 600 /root/bbb-ci-ssl/bbb-dev-ca.pass ;
openssl genrsa -des3 -out bbb-dev-ca.key -passout file:/root/bbb-ci-ssl/bbb-dev-ca.pass 2048 ;
openssl req -x509 -new -nodes -key bbb-dev-ca.key -sha256 -days 1460 -passin file:/root/bbb-ci-ssl/bbb-dev-ca.pass -out bbb-dev-ca.crt -subj "/C=CA/ST=BBB/L=BBB/O=BBB/OU=BBB/CN=BBB-DEV" ;
'
- name: Trust CA
run: |
sudo sh -c '
sudo mkdir /usr/local/share/ca-certificates/bbb-dev/
sudo cp /root/bbb-ci-ssl/bbb-dev-ca.crt /usr/local/share/ca-certificates/bbb-dev/
sudo chmod 644 /usr/local/share/ca-certificates/bbb-dev/bbb-dev-ca.crt
sudo update-ca-certificates
'
- name: Generate certificate
run: |
sudo sh -c '
cd /root/bbb-ci-ssl/
echo "127.0.0.1 bbb-ci.test" >> /etc/hosts
openssl genrsa -out bbb-ci.test.key 2048
rm bbb-ci.test.csr bbb-ci.test.crt bbb-ci.test.key
cat > bbb-ci.test.ext << EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = bbb-ci.test
EOF
openssl req -nodes -newkey rsa:2048 -keyout bbb-ci.test.key -out bbb-ci.test.csr -subj "/C=CA/ST=BBB/L=BBB/O=BBB/OU=BBB/CN=bbb-ci.test" -addext "subjectAltName = DNS:bbb-ci.test"
openssl x509 -req -in bbb-ci.test.csr -CA bbb-dev-ca.crt -CAkey bbb-dev-ca.key -CAcreateserial -out bbb-ci.test.crt -days 825 -sha256 -passin file:/root/bbb-ci-ssl/bbb-dev-ca.pass -extfile bbb-ci.test.ext
cd
mkdir -p /local/certs/
cp /root/bbb-ci-ssl/bbb-dev-ca.crt /local/certs/
cat /root/bbb-ci-ssl/bbb-ci.test.crt > /local/certs/fullchain.pem
cat /root/bbb-ci-ssl/bbb-dev-ca.crt >> /local/certs/fullchain.pem
cat /root/bbb-ci-ssl/bbb-ci.test.key > /local/certs/privkey.pem
'
- name: Setup local repository
run: |
sudo sh -c '
apt install -yq dpkg-dev
cd /root && wget -q http://ci.bbbvm.imdt.com.br/cache-3rd-part-packages.tar
cp -r /home/runner/work/bigbluebutton/bigbluebutton/artifacts/ /artifacts/
cd /artifacts && tar xf /root/cache-3rd-part-packages.tar
cd /artifacts && dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz
echo "deb [trusted=yes] file:/artifacts/ ./" >> /etc/apt/sources.list
'
- name: Prepare for install
run: |
sudo sh -c '
apt --purge -y remove apache2-bin
'
- name: Install BBB
run: |
sudo sh -c '
cd /root/ && wget -q https://ubuntu.bigbluebutton.org/bbb-install-2.6.sh -O bbb-install.sh
cat bbb-install.sh | sed "s|> /etc/apt/sources.list.d/bigbluebutton.list||g" | bash -s -- -v focal-26-dev -s bbb-ci.test -j -d /certs/
bbb-conf --salt bbbci
echo "NODE_EXTRA_CA_CERTS=/usr/local/share/ca-certificates/bbb-dev/bbb-dev-ca.crt" >> /usr/share/meteor/bundle/bbb-html5-with-roles.conf
bbb-conf --restart
'
- name: Install test dependencies
working-directory: ./bigbluebutton-tests/playwright
run: |
sh -c '
npm install
npx playwright install-deps
npx playwright install
'
- name: Run tests
working-directory: ./bigbluebutton-tests/playwright
env:
NODE_EXTRA_CA_CERTS: /usr/local/share/ca-certificates/bbb-dev/bbb-dev-ca.crt
ACTIONS_RUNNER_DEBUG: true
BBB_URL: https://bbb-ci.test/bigbluebutton/api
BBB_SECRET: bbbci
run: npm run test-ci
- if: always()
uses: actions/upload-artifact@v3
with:
name: tests-report
path: |
bigbluebutton-tests/playwright/playwright-report
bigbluebutton-tests/playwright/test-results
3 changes: 0 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,6 @@ record-and-playback/.project
.vagrant/*
**/.settings/*
*/.gradle
bbb-api-demo/bin*
bbb-api-demo/.classpath
bbb-api-demo/.project
bigbluebutton-web/.settings*
bigbluebutton-web/.classpath
bigbluebutton-web/.project
Expand Down
7 changes: 1 addition & 6 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ stages:

# define which docker image to use for builds
default:
image: gitlab.senfcall.de:5050/senfcall-public/docker-bbb-build:v2022-03-30
image: gitlab.senfcall.de:5050/senfcall-public/docker-bbb-build:v2022-07-12

# This stage uses git to find out since when each package has been unmodified.
# it then checks an API endpoint on the package server to find out for which of
Expand Down Expand Up @@ -74,11 +74,6 @@ bbb-config-build:
script:
- build/setup-inside-docker.sh bbb-config

bbb-demo-build:
extends: .build_job
script:
- build/setup-inside-docker.sh bbb-demo

bbb-etherpad-build:
extends: .build_job
script:
Expand Down
28 changes: 0 additions & 28 deletions .travis.yml

This file was deleted.

10 changes: 5 additions & 5 deletions SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,14 @@ We actively support BigBlueButton through the community forums and through secur

| Version | Supported |
| ------- | ------------------ |
| 2.0.x (or earlier) | :x: |
| 2.2.x | :x: |
| 2.3.x | :white_check_mark: |
| 2.3.x (or earlier) | :x: |
| 2.4.x   | :white_check_mark: |
| 2.5.x   | :white_check_mark: |
| 2.6.x   | :x: |

We have released 2.4 to the community and are going to support both 2.4 and 2.3 together for the coming months (while we're actively developing the next release). Also, BigBlueButton 2.2 is running on Ubuntu 16.04 which is now end of life.
We have released 2.5 to the community and are going to support both 2.4 and 2.5 together for the coming months (while we're actively developing the next release). Also, BigBlueButton 2.3 is now end of life.

As such, we recommend that all administrators deploy 2.4 going forward. You'll find [many improvements](https://docs.bigbluebutton.org/2.4/new.html) in this newer version.
As such, we recommend that all administrators deploy 2.5 going forward. You'll find [many improvements](https://docs.bigbluebutton.org/2.5/new.html) in this newer version.

## Reporting a Vulnerability

Expand Down
8 changes: 7 additions & 1 deletion akka-bbb-apps/src/main/scala/org/bigbluebutton/Boot.scala
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import org.bigbluebutton.core.pubsub.senders.ReceivedJsonMsgHandlerActor
import org.bigbluebutton.core2.AnalyticsActor
import org.bigbluebutton.core2.FromAkkaAppsMsgSenderActor
import org.bigbluebutton.endpoint.redis.AppsRedisSubscriberActor
import org.bigbluebutton.endpoint.redis.RedisRecorderActor
import org.bigbluebutton.endpoint.redis.{ RedisRecorderActor, ExportAnnotationsActor }
import org.bigbluebutton.endpoint.redis.LearningDashboardActor
import org.bigbluebutton.common2.bus.IncomingJsonMessageBus
import org.bigbluebutton.service.{ HealthzService, MeetingInfoActor, MeetingInfoService }
Expand Down Expand Up @@ -59,6 +59,11 @@ object Boot extends App with SystemConfiguration {
"redisRecorderActor"
)

val exportAnnotationsActor = system.actorOf(
ExportAnnotationsActor.props(system, redisConfig, healthzService),
"exportAnnotationsActor"
)

val learningDashboardActor = system.actorOf(
LearningDashboardActor.props(system, outGW),
"LearningDashboardActor"
Expand All @@ -72,6 +77,7 @@ object Boot extends App with SystemConfiguration {
val analyticsActorRef = system.actorOf(AnalyticsActor.props(analyticsIncludeChat))
outBus2.subscribe(fromAkkaAppsMsgSenderActorRef, outBbbMsgMsgChannel)
outBus2.subscribe(redisRecorderActor, recordServiceMessageChannel)
outBus2.subscribe(exportAnnotationsActor, outBbbMsgMsgChannel)

outBus2.subscribe(analyticsActorRef, outBbbMsgMsgChannel)
bbbMsgBus.subscribe(analyticsActorRef, analyticsChannel)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,12 @@ object LockSettingsUtil {
}
}

def isMicrophoneSharingLocked(user: UserState, liveMeeting: LiveMeeting): Boolean = {
val permissions = MeetingStatus2x.getPermissions(liveMeeting.status)

user.role == Roles.VIEWER_ROLE && user.locked && permissions.disableMic
}

def isCameraBroadcastLocked(user: UserState, liveMeeting: LiveMeeting): Boolean = {
val permissions = MeetingStatus2x.getPermissions(liveMeeting.status)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,12 +40,16 @@ trait SystemConfiguration {
lazy val checkVoiceRecordingInterval = Try(config.getInt("voiceConf.checkRecordingInterval")).getOrElse(19)
lazy val syncVoiceUsersStatusInterval = Try(config.getInt("voiceConf.syncUserStatusInterval")).getOrElse(43)
lazy val ejectRogueVoiceUsers = Try(config.getBoolean("voiceConf.ejectRogueVoiceUsers")).getOrElse(true)
lazy val dialInApprovalAudioPath = Try(config.getString("voiceConf.dialInApprovalAudioPath")).getOrElse("ivr/ivr-please_hold_while_party_contacted.wav")

lazy val recordingChapterBreakLengthInMinutes = Try(config.getInt("recording.chapterBreakLengthInMinutes")).getOrElse(0)

lazy val endMeetingWhenNoMoreAuthedUsers = Try(config.getBoolean("apps.endMeetingWhenNoMoreAuthedUsers")).getOrElse(false)
lazy val endMeetingWhenNoMoreAuthedUsersAfterMinutes = Try(config.getInt("apps.endMeetingWhenNoMoreAuthedUsersAfterMinutes")).getOrElse(2)

lazy val transcriptWords = Try(config.getInt("transcript.words")).getOrElse(8)
lazy val transcriptLines = Try(config.getInt("transcript.lines")).getOrElse(2)

lazy val reduceDuplicatedPick = Try(config.getBoolean("apps.reduceDuplicatedPick")).getOrElse(false)

// Redis server configuration
Expand All @@ -70,11 +74,6 @@ trait SystemConfiguration {

lazy val fromBbbWebRedisChannel = Try(config.getString("redis.fromBbbWebRedisChannel")).getOrElse("from-bbb-web-redis-channel")

lazy val toAkkaTranscodeRedisChannel = Try(config.getString("redis.toAkkaTranscodeRedisChannel")).getOrElse("bigbluebutton:to-bbb-transcode:system")
lazy val fromAkkaTranscodeRedisChannel = Try(config.getString("redis.fromAkkaTranscodeRedisChannel")).getOrElse("bigbluebutton:from-bbb-transcode:system")
lazy val toAkkaTranscodeJsonChannel = Try(config.getString("eventBus.toAkkaTranscodeJsonChannel")).getOrElse("to-akka-transcode-json-channel")
lazy val fromAkkaTranscodeJsonChannel = Try(config.getString("eventBus.fromAkkaTranscodeJsonChannel")).getOrElse("from-akka-transcode-json-channel")

lazy val analyticsIncludeChat = Try(config.getBoolean("analytics.includeChat")).getOrElse(true)

// Grab the "interface" parameter from the http config
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -187,9 +187,6 @@ class BigBlueButtonActor(
val disconnectEvnt = MsgBuilder.buildDisconnectAllClientsSysMsg(msg.meetingId, "meeting-destroyed")
m2.outMsgRouter.send(disconnectEvnt)

val stopTranscodersCmd = MsgBuilder.buildStopMeetingTranscodersSysCmdMsg(msg.meetingId)
m2.outMsgRouter.send(stopTranscodersCmd)

log.info("Destroyed meetingId={}", msg.meetingId)
val destroyedEvent = MsgBuilder.buildMeetingDestroyedEvtMsg(msg.meetingId)
m2.outMsgRouter.send(destroyedEvent)
Expand Down

This file was deleted.

Loading

0 comments on commit 2d7ac73

Please sign in to comment.