Commit Graph

83 Commits

Author SHA1 Message Date
Pedro Beschorner Marin
810deb907b refactor(etherpad): access control et al.
Move all Etherpad's access control from Meteor to a separated [Node application](https://github.com/bigbluebutton/bbb-pads).
This new app uses [Etherpad's API](https://etherpad.org/doc/v1.8.4/#index_overview)
to create groups and manage session tokens for users to access them. Each group
represents one distinct pad at the html5 client.

- Removed locked users' access to pads: replaced readOnly pad's access with a new pad's content sharing routine
- Pad's access is now controlled by [Etherpad's API](https://etherpad.org/doc/v1.8.4/#index_overview)
- Closed captions edited content now reflects at it's live feedback
- Improved closed caption's dictation mode live feedback
- Moved all Etherpad's API control from Meteor to a separated [app](https://github.com/bigbluebutton/bbb-pads)
- Included access control both in akka-apps and bbb-pads
2022-01-21 16:56:01 -03:00
Ramón Souza
4207502db1 remove unused imports/exports 2021-11-17 12:26:26 +00:00
Anton Georgiev
585c263129
Merge pull request #13425 from pedrobmarin/f-cc-cr
fix(closed captions): captions recording
2021-10-06 10:00:21 -04:00
Pedro Beschorner Marin
3bf1eeeeaf fix(closed captions): captions recording
Missing updates on Meteor's data validation for the closed captions
backend recording events.
2021-10-06 10:50:07 -03:00
Anton Georgiev
c2a48a5e9d
Merge pull request #13396 from pedrobmarin/f-cc-aps
fix(closed captions): avoid padId subscription
2021-10-05 12:26:26 -04:00
Pedro Beschorner Marin
b65d253143 fix(closed captions): check owner on text append
Avoid appendText call if the requester is not the closed captions' pad
owner.
2021-10-04 14:40:43 -03:00
Pedro Beschorner Marin
f7793bdc4b fix(closed captions): avoid padId subscription
Remove padIds from the closed captions MongoDB collection subscription.

Users now have to fetch the padId from Meteor when needed. Meteor is
responsible for checking the user's access level and return the
proper id.
2021-10-04 14:35:53 -03:00
Ramon Souza
5d6c9cbb18 removing unused imports/exports 2021-05-21 09:50:31 -03:00
Pedro Beschorner Marin
e4a98f3680 fix(closed captions): fetch padId on dictation update
BigBlueButton v2.3 uses an instance prefix while generating padIds. Closed
captions was missing this information when updating pad's content for dictation
mode.
2021-05-16 10:45:17 -03:00
Pedro Beschorner Marin
d65c19c60b fix(closed captions): avoid meetingId from credentials
This interaction occurs between Etherpad and Meteor.
2021-05-16 10:08:24 -03:00
Joao Siebel
79c9cd33f2 Merge remote-tracking branch 'upstream/develop' into add-try-catch-on-methods 2021-05-10 12:03:58 -03:00
Joao Siebel
a42d4a9f5d Add try/catch on captions methods 2021-05-04 14:34:31 -03:00
Tainan Felipe
20d934a953 Add filter by meetingId in server queries 2021-05-03 09:49:33 -03:00
Ramon Souza
d5d1c86c70 remove unused imports 2021-04-20 09:12:22 -03:00
Anton Georgiev
ff45cccd66 Merge branch 'v2.2.x-release' of github.com:bigbluebutton/bigbluebutton into apr1-merge 2021-04-01 18:11:13 +00:00
Pedro Beschorner Marin
1aa7685dcc Refactor Etherpad API calls
Isolate most Pad related functions and secure shared notes and closed
captions creation to only when there is a reachable Etherpad server
configured.
2021-03-29 18:35:33 -03:00
Pedro Beschorner Marin
0c4cf0135d Handle pad's events and Meteor's instances
Since Meteor was split in multiple process and events started to be
filtered by instances, all Etherpad's Redis events were being discarded.

Etherpad has a Redis' publisher plugin that is unaware of BigBlueButton's
existence. All the communication between them is kept simple with minimal
of internal data exchange. The concept of distincts subscribers at Meteor's
side broke part of this simplicity and, now, Etherpad has to know which
instance must receive it's messages. To provide such information I decided
to include Meteor's instance as part of the pad's id. Should look like:

 - [instanceId]padId for the shared notes
 - [instanceId]padId_cc_(locale) for the closed captions

With those changes the pad id generation made at the recording scripts had to
be re-done because there is no instance id available. Pad id is now recorded at
akka-apps and queried while archiving the shared notes.
2021-03-23 18:03:50 -03:00
Anton Georgiev
228bad03d5 Merge branch 'v2.2.x-release' of github.com:bigbluebutton/bigbluebutton into march4-merge 2021-03-04 21:25:47 +00:00
Pedro Beschorner Marin
09b39a8d63 Add extra pad validation
Associate pads with meetings so session validation is restricted to the
meeting's valid session tokens.

Meteor will dispatch new redis events on shared notes and closed captions
pads creation. This event will go through apps and reach web to populate
a new meeting's pad collection that contains all valid pad id's for that
session. Nginx will use this collection to check if the user's session token
belongs to the pad's authorized users.

Besides these modifications, an extra change will be needed at notes.nginx.
Location /pad/p/ needs to change it's auth_request:

from /bigbluebutton/connection/checkAuthorization;
to /bigbluebutton/connection/validatePad;
2021-02-10 13:37:04 -03:00
Pedro Beschorner Marin
c0a7f9cd92 Replace FNV32a pad's id generator with salted SHA1
When managing Etherpad's pads, Meteor makes API calls to initiate the closed captions
and shared notes modules. The pad id was being mapped to a shorter id than the meeting
id because of a Etherpad lenght limitation.

Changed to something less guessable.
2021-02-09 12:59:59 -03:00
Ramon Souza
39b63368e2 Fixes #11116 2021-01-19 17:16:29 -03:00
Anton Georgiev
244a239810 Merge branch 'v2.2.x-release' of github.com:bigbluebutton/bigbluebutton into 2020-12-01-merge 2020-12-01 20:02:50 +00:00
Joao Siebel
77d493792f Prevent a case where voiceUser collection was being clean for entire server 2020-11-30 17:01:41 -03:00
Anton Georgiev
f34826718d include instanceId in resources url 2020-11-30 16:09:35 +00:00
Joao Siebel
ccda3b3a34 WIP remove callback from update methods 2020-11-26 13:23:57 -03:00
Joao Siebel
11f1a1ac47 Merge remote-tracking branch 'upstream/v2.2.x-release' into remove-callbacks 2020-11-25 10:54:18 -03:00
Joao Siebel
a244fc1acf WIP remove callback from remove operations 2020-11-24 17:44:13 -03:00
Anton Georgiev
3faabd1821 Merge 2.2.29 and 2.2.30 into 2.3.x 2020-11-24 15:13:09 +00:00
Anton Georgiev
21644a1a43 Remove string interpolation for server debug and verbose logs 2020-11-23 14:35:59 -05:00
Joao Siebel
4be9bc4c94 Adjust publishers to use auth-token-validation collection 2020-09-01 13:31:11 -03:00
KDSBrowne
6915a028e3 use extractCredentials to get meeting id 2020-04-30 13:46:30 +00:00
KDSBrowne
957e5e3d30 fix captions from dictation not working 2020-04-30 13:15:21 +00:00
Anton Georgiev
a8f4827af8 utilize Meteor connection id instead of trusting client side meetingId, userId 2020-02-06 15:48:16 -05:00
Pedro Beschorner Marin
9e057b9a78 Refactoring closed captions speech recognizer 2019-06-21 17:52:54 -03:00
Pedro Beschorner Marin
a5f7579816 Encoding at URL creation 2019-06-21 14:56:12 -03:00
KDSBrowne
cd9cb596d2 add new lines to VR caption entries 2019-06-18 21:12:20 +00:00
KDSBrowne
c36f25c748 add enableDictation prop in settings.yml / bug fixes 2019-06-18 14:36:22 +00:00
KDSBrowne
f45564de1a Merge branch 'master' of https://github.com/bigbluebutton/bigbluebutton into 0TF-SpeechRecognition-captions 2019-06-14 14:42:47 +00:00
KDSBrowne
127f4ac19e hook up speech recognition to Etherpad captions editor 2019-06-14 02:18:36 +00:00
Pedro Beschorner Marin
c4ac5ef7c9 Shared notes unread indicator 2019-05-31 20:02:33 +00:00
Anton Georgiev
6adc608fd0 closed captions linting part3 2019-05-29 14:31:27 +00:00
Pedro Beschorner Marin
741122df96 Closed captions cleanup 2019-05-23 11:51:01 -03:00
Pedro Beschorner Marin
84b750ebb7 Adapted HTML5 captions to use the recording backend 2019-05-22 18:33:20 -03:00
Pedro Beschorner Marin
34b39a2b0a Closed captions prototype in a big commit 2019-05-22 18:33:20 -03:00
Anton Georgiev
31acde212f reduce log noise for common benign events 2019-03-08 16:00:16 +00:00
Anton Georgiev
afa1a64e79 improve format of callbacks on collection document removal 2018-12-14 20:19:10 +00:00
João Francisco Siebel
016efcc0eb Remove ACL from client side. close #6138 2018-11-05 17:30:37 -02:00
Tainan Felipe
a5ddb4bd17 rename function of skipFlashDirectEvent to processForHTML5ServerOnly 2018-04-13 16:26:58 -03:00
Tainan Felipe
d9f90943ee Skip direct messages of flash client 2018-04-12 13:25:54 -03:00
Oleksandr Zhurbenko
2de02c4f8d Linting 2018-01-07 16:25:56 -08:00