Commit Graph

123 Commits

Author SHA1 Message Date
KDSBrowne
76ac6fe596 add polite screen reader alert 2022-01-23 16:18:09 +00:00
Daniel Schreiber
c46556e1f6 Allow BBB to run behind a proxy the avoid gUM permission queries per node
The idea is to run a loadbalancer node which maps each BBB node to a
path. That way each user gets only one gUM permission query for a
cluster. The loadbalancer node only serves the html5 client, each BBB
node will serve its own API and handle the websockets for freeswitch and
bbb-webrtc-sfu.

Configuring a cluster setup
===========================

* let bbb-lb.example.com be the loadbalancer node
* let bbb-01.eaxmple.com be a BBB node

Loadbalancer
------------

On the loadbalancer node add an nginx configuration similar to this one
for each BBB node:

```
location /bbb-01/html5client/ {
  proxy_pass https://bbb-01.example.com/bbb-01/html5client/;
  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection "Upgrade";
}

```

BBB Node
--------

On the BBB node add the following options to
`/etc/bigbluebutton/bbb-web.properties`:

```
defaultHTML5ClientUrl=https://bbb-lb.example.com/bbb-01/html5client/join
presentationBaseURL=https://bbb-01.example.com/bigbluebutton/presentation
accessControlAllowOrigin=https://bbb-lb.example.com
```

Add the following options to `/etc/bigbluebutton/bbb-html5.yml`:

```
public:
  app:
    basename: '/bbb-01/html5client'
    bbbWebBase: 'https://bbb-01.eaxmple.com/bigbluebutton'
    learningDashboardBase: 'https://bbb-01.eaxmple.com/learning-dashboard'
  media:
    stunTurnServersFetchAddress: 'https://bbb-01.eaxmple.com/bigbluebutton/api/stuns'
    sip_ws_host: 'bbb-01.eaxmple.com'
  presentation:
    uploadEndpoint: 'https://bbb-01.eaxmple.com/bigbluebutton/presentation/upload'
```

Create the following unit file overrides:

* `/etc/systemd/system/bbb-html5-frontend@.service.d/cluster.conf`
* `/etc/systemd/system/bbb-html5-backend@.service.d/cluster.conf`

with the following content:

```
[Service]
Environment=ROOT_URL=https://127.0.0.1/bbb-01/html5client
```

Change the nginx `$bbb_loadbalancer_node` variable to the name of the
load balancer node in `/etc/bigbluebutton/nginx/loadbalancer.nginx` to
allow CORS requests:

```
set $bbb_loadbalancer_node https://bbb-lb.example.com
```

Prepend the mount point of bbb-html5 in all location sections except
from the `location @html5client` section in
`/etc/bigbluebutton/nginx/bbb-html5.nginx`

```
location @html5client {
    ...
}
location /bbb-01/html5client/locales {
    ...
}
```
2021-11-20 22:13:47 +01:00
KDSBrowne
9664ac235d Merge branch 'v2.4.x-release' of https://github.com/bigbluebutton/bigbluebutton into bbb-wcag-01 2021-09-08 11:26:08 +00:00
KDSBrowne
a9cc277ceb provide screen reader alert for copied chat transcript 2021-09-05 19:22:06 +00:00
KDSBrowne
30735c64a6 update page title with current view 2021-09-04 22:36:48 +00:00
KDSBrowne
c3ef38d73c update virtual background image tooltip text 2021-08-30 00:45:31 +00:00
Anton Georgiev
1fd6246336 Merge branch 'v2.3.x-release' of github.com:bigbluebutton/bigbluebutton into merge-2.3.5-into-develop 2021-07-06 19:37:30 +00:00
Anton Georgiev
b9cc633286 Merge branch 'v2.3.x-release' of github.com:bigbluebutton/bigbluebutton into merge-2.3.5-into-develop 2021-07-06 19:36:19 +00:00
Mario Jr
bd610c2fd5 fix(audio): mic not working when skipCheck=true
Complements #12705
2021-07-06 10:27:48 -03:00
prlanzarin
d8dae1ec90 fix(webcams): handle Firefox video stream cleanup edge case
Firefox doesnt fire the ended evt/onended callback for live video mediastreamtracks. That caused the stream storage to not run the cleanup procedure in some scenarios

Manually emit the ended event which works with the onended callback when a track is stopped
2021-07-05 16:26:24 +00:00
prlanzarin
0ddf02e954 refactor(webcams): improve skipVideoPreview handling, add error handling to it
Also organized video-preview a little better overall
2021-07-05 16:03:15 +00:00
prlanzarin
0453e9e842 fix(webcams): reduce number of gUM calls
Shave off the number of calls in video-preview and video-provider by
using a stream storage

We don´t call an upfront gUM in video-preview anymore to lift the
fingerprinting barrier on device labels and IDs. Flow has been reversed:
upfront enumerate, load first preview, then check if previous
enumeration was obfuscated.

Add a stream storage in video-preview`s service to avoid re-fetching
them in video-providerj

Remove some unneeded video-preview container props

Improve some of video-preview`s error locales
2021-07-02 16:13:31 +00:00
Mario Jr
287c4eb682 feat(audio): use kurento's trickle-ice to improve mic negotiation
Here's what we do when user activates mic:
1 - When we do something similar to listenonly's joining process
until we find a valid candidate-pair. The information about this
local candidate is store.
2 - We then start a new userAgent, and as soon as browser finds
a candidate with the same local ip address, we leave only this
candidate in the SDP and send this to FreeSWITCH. SDP should
contain only a single candidate.
3 - The rest of signaling process is basically the same.
2021-07-01 16:26:44 -03:00
Pedro Beschorner Marin
068b82b1fa refactor(connection status): remove legacy monitor
Remove parts of a previous connection monitor.

To add some context (as far as my memory goes) to the multiple connection
monitor features the product has, `stats` (currently named `connection status`)
was introduced at the Flash client back in ~2016. @fcecagno and I did it
as a BigBlueButton's Summit activity. Our work was squashed into a single
commit in 92554f8b3e :).

I'm not sure about the whole story behind `network information` (the late
connection monitor added to the HTML5 client) but I assume it should work
as a collector for a bunch of different connectivity monitors. I remember
when it was introduced but I don't know why it wasn't adopted. My best guess
would be because of some performance issues the `user list` had back then.

To follow on why `connection status` replaced `network information` at the
HTML5 client, when I did the `multiple webcams` feature I had to refactor
a big chunk of the `video provider` (#8374). Something that wasn't really
helping there was the adaptation of `stats` that was made to show local
feedback for each webcam connection. Although this feature wasn't being
used anymore, `network information` did rely on that to build up data. With
this monitor gone I assumed it was my responsibility to provide an alternative
so I promoted Mconf's port of the Flash `stats` monitor to BigBlueButton's
HTML5 client (#8579).

Well, that's my perspective on how things went for those features. If
anyone would like to correct me on something or add something else on
that history I would appreciate to know.
2021-06-13 14:02:46 -03:00
Pedro Beschorner Marin
2e2a978018 refactor(connection status): remove superfluous trailing argument 2021-05-09 14:26:14 -03:00
Pedro Beschorner Marin
83c813ac6f refactor(connection status): interval and log configuration
Simplify how connection status inteval is configured and make server
log the solo logging option.
2021-04-23 19:15:32 -03:00
Ramon Souza
05a0d5afbf move browser info to helper + remove unused libs 2021-04-01 08:14:24 -03:00
Ramon Souza
9218262e0a all device info moved to helper 2021-03-31 14:13:36 -03:00
Pedro Beschorner Marin
280b32d21d Move connection-status to nav-bar
- Removed the connection-status history from the user list's gear
icon and now is opened by the connection-status button. Moderators will
render the same modal as before and viewers will only have access to their
own data.

 - Added data-savings shortcut at the connection-status modal.

 - Added websocket round-trip time.
2021-03-26 10:12:09 -03:00
Maxim Khlobystov
5adb3429eb Make typed poll responses grouping case insensitive 2021-03-23 06:30:37 +00:00
prlanzarin
ab17b10c38 listenonly,video-provider,screenshare: remove ICE gathering pre-flight check 2021-03-12 02:51:45 +00:00
Anton Georgiev
3faabd1821 Merge 2.2.29 and 2.2.30 into 2.3.x 2020-11-24 15:13:09 +00:00
prlanzarin
8dda22f8a7 [html5/webrtc] Fix tryGenerateIceCandidates rejections, put it behind a flag
Fixed two occurrences where the tryGenerateIceCandidates workaround rejected without an error, which borked the callers error handling

Also put it behind a config flag. This workaround used to be important when Kurento didnt infer prflx candidates properly, but that`s no longer the case. With the flag, we can disable the workaround to see if there`s any visible regression and hopefully remove it down the road
2020-11-11 13:43:36 +00:00
Anton Georgiev
0c7ead1916 Merge branch 'v2.2.x-release' of github.com:bigbluebutton/bigbluebutton into oct16-merge 2020-10-21 14:48:02 +00:00
Anton Georgiev
41cab38e87 Added allowDefaultLogoutUrl config to optionally ignore non-custom logoutUrl 2020-10-08 05:15:05 -04:00
Mario Jr
619ffa0ec1 Port SIP.js to 0.17.1 release
This considerably changes the way we process audio signaling and start audio elements in user's browser.
We now avoid using AudioContext element for both microphone and listenonly calls, once it is unstable for some iOS devices (cracky audio, user stops hearing audio after a while).
Increased default value for listenOnlyCallTimeout: this avoids activating FreeSWITCH's fallback when ICE negotiation takes longer than 15sec (tested on DO).
Increased listenonly logs.
This fixes #8133 #10388
2020-09-25 20:26:22 -03:00
prlanzarin
dac3259c48 Merge remote-tracking branch 'pedrobmarin/bbb-multiple-webcams' into upstream-2.2-vpeg-base 2020-08-05 14:20:58 +00:00
Anton Georgiev
ac6fd2824c
Merge branch 'develop' into 2.3-audio-stats 2020-05-26 12:36:15 -04:00
Anton Georgiev
c9e996de21 Merge branch 'v2.2.x-release' of github.com:bigbluebutton/bigbluebutton into merge-2.2-into-develop 2020-05-25 17:32:24 +00:00
prlanzarin
2cba85e866 html5: refactor STUN/TURN fetch, add fallback STUN, fix deadlock in audio join
Refactored STUN/TURN fetch to be done only once, when successful, per session and cache it in mem to avoid too many reqs. Current way is a bit dumb, this should increase reliability a bit more. The caching is configurable so folks who want to use very short lived TURN credentials can disable it

Add a fallback STUN config option to be used when the default STUN/TURN fetch fails

Clean the safari/no candidate generation pre flight check from 3rd party STUNs

Fix deadlock in audio join when STUN/TURN fetch failed
2020-05-21 04:35:17 +00:00
Pedro Beschorner Marin
9cb7c2bb2f Avoid stopping the stats monitor before connection closed 2020-05-14 10:40:31 -03:00
Pedro Beschorner Marin
ffb07415cb Fixed stats notification timeout 2020-05-14 10:36:19 -03:00
Anton Georgiev
3754d0ab6f Merge branch 'v2.2.x-release' of github.com:bigbluebutton/bigbluebutton into merge-2.2-into-master-feb-28-2020 2020-02-28 17:47:06 -05:00
Anton Georgiev
f1fc72bc01 explicitly import lodash where it is used 2020-02-26 14:48:40 -05:00
Anton Georgiev
4b0452d1fd Merge branch 'v2.2.x-release' of github.com:bigbluebutton/bigbluebutton into feb14-merge-2.2-into-master 2020-02-14 21:43:35 +00:00
Pedro Beschorner Marin
2ac3c2e804 Check if peer connection isn't closed 2020-02-14 18:17:18 -03:00
Pedro Beschorner Marin
11cfea2359 Logging audio stats 2020-01-29 14:54:35 -03:00
Pedro Beschorner Marin
1103663d86 Monitoring audio WebRTC stats 2020-01-28 10:07:21 -03:00
Pedro Beschorner Marin
bc463cc8f2 Fixed jitter gathering in stats 2019-12-20 17:21:00 -03:00
Pedro Beschorner Marin
0bb4d50522
Included missing constant declaration 2019-12-19 11:36:50 -03:00
Chad Pilkey
f5cb7a64fb log the selected sip.js candidate 2019-12-18 16:11:24 -08:00
Pedro Beschorner Marin
8f8463cf91 Log when stats monitor stop 2019-12-10 09:07:07 -03:00
Pedro Beschorner Marin
5c71e2d0bb Included new getStats monitor for audio and video 2019-12-10 09:07:06 -03:00
Pedro Beschorner Marin
315fa755f0 Removed unused video visibility monitor 2019-12-10 09:02:17 -03:00
Chad Pilkey
ae0ad7ff3b fix a typo in the SDP candidate parsing 2019-12-09 13:16:29 -08:00
Chad Pilkey
1b94039a4f move sipjs sdp logging properties under extraInfo 2019-12-06 08:40:58 -08:00
Chad Pilkey
50365aa4da extra log messages for sipjs candidates 2019-12-05 16:33:38 -08:00
Anton Georgiev
52d52cd0d1
Merge pull request #8327 from prlanzarin/2.2-mdns-only
Account for mDNS candidates on gUM fallback for recvonly peers
2019-11-14 16:09:40 -05:00
prlanzarin
215f79f383 Account for mDNS candidates on gUM fallback for recvonly peers
Also added some client logging for those cases

Moved video-provider gUM fallback detection to be used only on recvonly streams
2019-11-14 16:35:56 +00:00
felcaetano
de22a644d6 Added event listener to change slides with Page Up and Page Down
This used to be a feature in the Flash client and this is necessary for presentation remotes to work with the HTML client.
2019-09-18 14:12:05 -03:00