Commit Graph

172 Commits

Author SHA1 Message Date
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
prlanzarin
c8a88148e1 Improve log message for screenshare/listen only/autoplay and harden media play with retries 2019-09-06 18:58:22 +00:00
Anton Georgiev
e22d61b2e1 removed .log() function in favour of logger 2019-08-01 12:47:45 -04:00
Chad Pilkey
e69931a0af Merge remote-tracking branch 'upstream/master' into fix-pan-lag 2019-07-25 16:29:52 -07:00
Chad Pilkey
c344a17adb pan/zoom and cursor refactor for better performance 2019-07-25 15:55:25 -07:00
KDSBrowne
392aac9857 Merge branch 'master' of https://github.com/bigbluebutton/bigbluebutton into issue-7137 2019-07-04 18:37:40 +00:00
KDSBrowne
dbf8938d24 fix chrome on ios blue screen after selecting share webcam / lint issues 2019-06-27 16:02:42 +00:00
Chad Pilkey
70fe159c31 ensure that media.candidates exists before stripping mDNS candidates 2019-06-20 12:13:55 -07:00
Chad Pilkey
1e391695c1 strip mDNS candidates from sip.js SDPs 2019-06-03 18:54:30 +00:00
prlanzarin
9a563a006c Fixed typo in toPlanB conversion
Also tidy some stray lines
2019-05-21 17:38:22 +00:00
prlanzarin
ca9a0fad4a Added unified-plan/plan-b translation for Safari endpoints 2019-05-21 16:48:01 +00:00
KDSBrowne
4920265dc0 Merge branch 'master' of https://github.com/bigbluebutton/bigbluebutton into 2.2-add-create-br-to-manage-user-menu 2019-01-21 17:02:18 +00:00
gustavotrott
c21bb693b4 Store in session if can generate ice candidates, change timeout to 5secs, display error msgs 2019-01-14 22:45:32 -02:00
Gustavo Trott
1767d87f60 Copy ice servers from kurento-utils.js and Close peerConnection 2019-01-14 10:03:19 -02:00
Gustavo Trott
87b4306e7f Add tryGenerateIceCandidates to verify and ask media permission if necessary 2019-01-10 21:22:14 -02:00
Gustavo Trott
219cad3234 Verify if Safari can generate iceCandidates else askDevicesPermission 2019-01-10 19:25:23 -02:00
João Francisco Siebel
6a84618982 increase zoom increment factor to 25. close #6301 2018-12-05 09:00:12 -02:00
Tainan Felipe
c660e656f7 Fix logout handler isn't working on error screen 2018-11-20 18:13:34 -02:00
João Francisco Siebel
016efcc0eb Remove ACL from client side. close #6138 2018-11-05 17:30:37 -02:00
João Francisco Siebel
252bacb917 Add multiUserPenOnly parameter in yml 2018-10-18 14:03:11 -03:00
Tainan Felipe
210dbbbeaf Merge remote-tracking branch 'upstream/master' into zoom-implementation 2018-09-17 15:20:20 -03:00
Tainan Felipe
05a5e911c9 remove class and fix NaN bug 2018-08-28 14:14:01 -03:00
Tainan Felipe
257b4cc8ac port flash code to js and implement initial work in zoom 2018-08-28 14:14:01 -03:00
KDSBrowne
78c81880db Merge branch 'v2.0.x-release' of https://github.com/bigbluebutton/bigbluebutton into 5782-move-set-status 2018-08-01 15:43:31 +00:00
KDSBrowne
aae5cfbd92 fix reported bugs / impliment suggested changes 2018-07-11 20:08:22 +00:00
prlanzarin
d2bdb67ed3 Propagating configs to WebRTC screenshare script and added support for STUN/TURN config to SFU components 2018-07-09 21:29:59 +00:00
KDSBrowne
7b739a9163 swap browser / os checks done by deviceInfo in favor of detect-browser 2018-06-11 23:12:43 +00:00
Anton Georgiev
0aa7d5274e
Merge pull request #5595 from lfzawacki/better-video-stability
[html5] Better video pausing, connection, re-connecting and stability
2018-05-29 16:40:52 -04:00
Lucas Fialho Zawacki
665773ece0 Small naming fixes in visibility events and attachStream function 2018-05-29 18:54:01 +00:00
Lucas Fialho Zawacki
32c587dc0d Merge branch 'v2.0.x-release' of https://github.com/bigbluebutton/bigbluebutton into better-video-stability 2018-05-28 18:43:29 +00:00
Bobak Oftadeh
fe1dbb9fdf Warning modal now displays for iOS Chrome users 2018-05-25 09:24:01 -07:00
Lucas Fialho Zawacki
5433049ab7 Better handle visibility events and paused streams 2018-05-23 17:54:16 +00:00
KDSBrowne
df1ddc94ee prevent whiteboard textarea's flickering / not appearing in Edge 2018-05-13 17:15:18 -07:00
Anton Georgiev
32309b0c3f
Merge pull request #5480 from lfzawacki/stop-streams
Pause streams on media server to save bandwith and processing
2018-05-08 15:53:19 -04:00
KDSBrowne
64c57a6050 add check for IE / simplify conditions in shortcut-help 2018-05-03 08:36:08 -07:00
KDSBrowne
be4dc3f9ff add localized strings and edit deviceInfo.js 2018-05-02 19:20:38 -07:00
KDSBrowne
7cc07011b6 make place to localize OS and Browser type 2018-05-02 13:19:16 -07:00
Lucas Fialho Zawacki
5b65cde0de Stop remote stream tracks for HTML5 video viewers when window is hidden 2018-05-02 20:09:22 +00:00
KDSBrowne
57f3f4389c add functions to deviceInfo utility / improve shortcut modal 2018-05-02 11:55:46 -07:00
KDSBrowne
599ba78b72 add comment 2018-04-21 13:19:42 -07:00
KDSBrowne
a4cb68f387 redirect users on meeting join based on device 2018-04-21 13:09:22 -07:00
Tainan Felipe
0037ebd77d remove locales.js which is unnecessary 2017-12-20 15:15:49 -02:00
Tainan Felipe
d15bb139bb refactor emoji menu 2017-11-23 15:20:27 -02:00
Tainan Felipe
0d25ba5ae7 add blue color on emoji menu for ethe emoji selected 2017-11-21 08:50:20 -02:00
Tainan Felipe
02c617da68 solve error in nav-bar component 2017-10-23 14:26:56 -02:00
Tainan Felipe
4bda76c5bb Merge remote-tracking branch 'upstream/v2.0.x-release' into fix-errors-linter 2017-10-12 15:36:52 -03:00
Anton Georgiev
3b8c410a3c rearrange normalized emojis to match order of emoji definition 2017-10-11 10:09:47 -03:00
Anton Georgiev
50970b6cb3 fixes to change-emoji-button-on-emoji-change 2017-10-11 10:06:23 -03:00
Tainan Felipe
5393051d9d fix errors linter 2017-10-10 10:06:34 -03:00
Oleksandr Zhurbenko
76bcdd55d6 Merge branch 'v2.0.x-release' of https://github.com/bigbluebutton/bigbluebutton into presenter-functionality-2x 2017-10-03 10:34:10 -07:00
Klaus
b3dd84505e Change statuses and remove .scss suffix 2017-09-22 14:03:14 -03:00
Oleksandr Zhurbenko
4a4a3d5574 Moved hex_to_int and int_to_hex functions to imports/utils 2017-09-21 16:52:43 -07:00