Commit Graph

1467 Commits

Author SHA1 Message Date
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
Mario Jr
af4f9dbf26 Merge branch 'v2.2.x-release' into merge-2.2-develop 2021-03-23 17:10:28 -03:00
germanocaumo
136f43eb25 Remove screenshare audio specific ffmpeg codec in recording processing. 2021-03-23 14:49:39 -03:00
germanocaumo
95fabfe8c2 Merge branch 'develop' of https://github.com/bigbluebutton/bigbluebutton into u23-recsa 2021-03-23 14:47:20 -03:00
Pedro Beschorner Marin
e48f64b843 Avoid localhost at notes endpoint
Use 127.0.0.1 instead of localhost since Etherpad only listens for ipv4.
2021-03-22 16:41:26 -03:00
Richard Alam
7d95fd9189 Keep recording status files
We still use the recording status files to externally monitor the
 progress of the recordings. Let's keep these files for now until
 we figure out a different way to track the status of the recording.
2021-03-22 09:24:02 -07:00
Fred Dixon
3fdb60ffef
Merge pull request #11685 from kepstin/slide-gen-interpolate
Recording: Don't use string interpolation when generating commands for slide conversion
2021-03-18 17:40:04 -03:00
Calvin Walton
7fab16b2ca Recording: Don't use string interpolation generating commands for slide conversion
Just want to make sure that we don't get any bad filenames sneaking in
and causing havoc.
2021-03-18 11:51:40 -04:00
Calvin Walton
0559152dc7 Improvements for audio desync issues
This incorporates only the audio desync related changes from #11626
* Add the aresample filter with async option to fill in timestamp gaps
* Use the libopus decoder for opus audio instead of ffmpeg's builtin
  decoder
2021-03-18 11:18:39 -04:00
Calvin Walton
2a6b0b62c3 Rework the ffmpeg filter generation in the audio rendering.
This gives the following advantages over the previous code:

* The ffmpeg input filters are loaded from a filter "script" file instead
  of passed on the command line. This fixes some cases of recordings
  failing to process because the ffmpeg command line generated for the
  audio processing exceeded the max command line length limit. (Although
  that only really happens due to BBB bugs...)
* Use absolute positions when trimming audio segments for cuts.
  Previously segments were trimmed to the length of the segment, and the
  results were concatenated. There's some possibility of accumulated
  errors in the segment lengths causing audio desync over time. The new
  code incrementally concatenates the segments, and cuts each segment
  end based on the absolute time since the start of the meeting, to
  avoid error accumulation.
2021-03-18 11:17:50 -04:00
germanocaumo
409e3cbc27 read screenshare audio from archived dir insteaf of original path 2021-03-11 21:40:19 +00:00
germanocaumo
5b07244e1e Fix last commit 2021-03-11 21:38:59 +00:00
germanocaumo
4928ca91d1 Mix screenshare audio with mics again to avoid playback autoplay problems in iOS, fixed desync with aresample 2021-03-11 21:36:40 +00:00
germanocaumo
fdbbffb3aa Improve screenshare audio recording sync:
use libopus decoder and encoder, its better than built-in ffmpeg/flac
don't mix screenshare audio with mics, was generating desync with bad audio segments, encode it together with video file (TODO: needs adjustments in playback)
2021-03-11 21:32:02 +00:00
germanocaumo
0d48dd01cb Re-add screenshare audio recording processing 2021-03-11 21:09:07 +00:00
Andrei Bautu
18b3fc2684 Remove unused ffmpeg settings 2021-03-10 13:10:54 +02:00
Andrei Bautu
8cc99ef4ab Include comments about ffmpeg settings 2021-03-10 12:58:59 +02:00
Andrei Bautu
d71df37b8a Fix detection of empty video segments 2021-03-10 11:40:18 +02:00
Andrei Bautu
beb66512a0 Recording processing using MP4/OGG temporary files, stream copy, and customizable (lower) frame rates.
Discussion from https://github.com/bigbluebutton/bigbluebutton/issues/2483
2021-03-08 20:14:48 +02: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
Calvin Walton
48956ce63f Add some extra docs/setup instructions to the analytics callback script 2021-03-02 16:19:26 -05: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
dependabot[bot]
db55b0c4eb
Bump nokogiri from 1.10.8 to 1.11.0 in /record-and-playback/core
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.10.8 to 1.11.0.
- [Release notes](https://github.com/sparklemotion/nokogiri/releases)
- [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.10.8...v1.11.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-02-09 00:28:29 +00:00
Felipe Cecagno
47af1a391b publish presentation format to use the new bbb-playback; redirect 2.0 to 2.3 by default 2020-12-20 21:43:54 -03:00
Fred Dixon
e08ff14c52
Update events_worker.rb
Fix file existence test.
2020-12-20 18:38:18 -04:00
Anton Georgiev
c1ffced27d Merge branch 'v2.2.x-release' of github.com:bigbluebutton/bigbluebutton into develop 2020-12-17 21:14:29 +00:00
Jesus Federico
163d40652a
Update post_events_analytics_callback.rb 2020-12-10 17:23:01 -05:00
Anton Georgiev
d3dae5828a
Merge pull request #10984 from defnull/patch-nfs
Fix: Presentation publishing fails when run on NFS storage
2020-12-08 20:05:46 -05:00
Anton Georgiev
cf7ca49760
Merge pull request #10966 from pedrobmarin/shared-notes-at-playback
Publish recorded shared notes' content
2020-12-08 16:52:39 -05:00
Marcel Hellkamp
9b17dab2e6 Fix: Presentation publishing fails when run on NFS storage
PR #9857 was incomplete and did not completely fix the issues described in #9062 and #9110 (dublicate).
2020-12-07 16:10:54 +01:00
Fred Dixon
00bf08eea7 Fix permissions on systemd scripts for recording processing 2020-12-06 15:40:00 -06:00
Pedro Beschorner Marin
7206b8acc3 Publish recorded shared notes' content
Collects the shared notes' HTML raw data and publishes it along with the other
recording files. The playback will fetch for this file and include an option to
display it's content over the chat.
2020-12-04 09:08:43 -03:00
beckerr-rzht
9eee10eee1
Merge branch 'develop' into develop 2020-12-04 09:45:21 +01:00
hiroshisuga
7d0a27126b
Update presentation.rb 2020-10-28 15:03:40 +09: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
Fred Dixon
78ced5d41d
Merge pull request #10533 from kepstin/rec-fixes
Recording: Skip shapes with missing "thickness" attribute
2020-09-25 16:59:17 -04:00
Calvin Walton
86c821f4c5 Recording: Skip shapes with missing "thickness" attribute
Not sure what causes this issue, but there's nothing reasonable that can
be done to draw a shape with no thickness. Just skip it.
2020-09-25 16:13:29 -04:00
Calvin Walton
1866eb7194 Perform captions generation in UTF-16 encoding
The indexes returned in recording events from BBB refer to positions
within a UTF-16 encoded string. Rather than attempt to untangle this in
the server (which might have a performance cost), it's easier to switch
the caption processing code to operate in UTF-16 encoding as well to
make it work consistently.

The PyICU library provides a UnicodeString type which is a UTF-16 string
similar to Java and JavaScript, but which supports all the python
indexing methods. It's fairly straightforwards to swap it in in place of
the types used previously, and works natively as an input to the ICU
line break iterator too.

Fixes #10531
2020-09-25 12:39:18 -04:00
Calvin Walton
1268753519 Fix io deadlock in recording scripts process execution utilities
The previous implementation of the BigBlueButton.execute method runs the
process with separate stdout and stderr streams. It first reads all of
the output from stdout, then reads all of the output from stderr.

This can cause a deadlock if the process writes a lot of data to stderr.
The IO buffer for stderr could fill, blocking progress. But since it
hasn't closed stdout, the ruby script is still waiting on a read to
stdout.

Switch to an execution method (using IO.popen) that allows combining
stdout and stderr into a single stream, eliminating the issue.
2020-09-23 16:16:57 -04:00
hiroshisuga
5caf825d42
Update rap-starter.rb
probably a simple typo
2020-09-01 22:05:37 +09:00
Anton Georgiev
b1e73281e4
Merge pull request #10158 from sebastianberm/sebastianberm-patch-chatplayback
Fix newlines in playback of chat
2020-08-25 11:28:02 -04:00
Anton Georgiev
f9d1079b41
Merge pull request #10238 from kepstin/rec-fixes-develop
Events archiver: Strip more invalid characters
2020-08-25 08:36:20 -04:00
hiroshisuga
3cbe9abaf0 events_archiver.rb: Handle an empty meeting_metadata hash from redis
On my server 2.3 alpha, the method metadata_for(meeting_id) gives back {}
(empty Hash). Thus "return if meeting_metadata.nil?" does not occur.

Does @redis.hgetall give {} instead of nil, even though there is a comment in
node_modules/redis/lib/utils.js "hgetall converts its replies to an Object. If
the reply is empty, null is returned"???
2020-08-13 15:46:40 -04:00
hiroshisuga
dc0fc459e2 events_archiver.rb: Handle an empty meeting_metadata hash from redis
On my server 2.3 alpha, the method metadata_for(meeting_id) gives back {}
(empty Hash). Thus "return if meeting_metadata.nil?" does not occur.

Does @redis.hgetall give {} instead of nil, even though there is a comment in
node_modules/redis/lib/utils.js "hgetall converts its replies to an Object. If
the reply is empty, null is returned"???
2020-08-13 15:42:22 -04:00
Calvin Walton
659893051d Events archiver: Strip more invalid characters
Update the list of invalid characters based on what the XML
specification permits and discourages.

Use the ruby string `scrub` method to remove invalid characters that
can't be expressed in the `tr` syntax, like unpaired surrogates and
UTF-8 prefix bytes.
2020-08-11 14:15:29 -04:00
Sebastian Berm
0d66e86f83
Added function to library 2020-07-30 11:19:54 +02:00
Sebastian Berm
dbb8575771
Update to playback to support br's with newlines. 2020-07-30 11:17:53 +02:00
Jesus Federico
0bbe69b74d
added post_events scripts (example and analytics callback) (#10080)
* added post_events example and analytics callback

* updated dependency
2020-07-17 14:34:57 -04:00
Anton Georgiev
b0e1dc8378 Merge branch 'v2.2.x-release' of github.com:bigbluebutton/bigbluebutton into merge-2.2-into-2.3-july-6 2020-07-07 14:35:34 +00:00
Anton Georgiev
420f8bf0a4 Merge branch 'develop' of github.com:bigbluebutton/bigbluebutton into merge-2.2-into-2.3-july-6 2020-07-07 14:13:58 +00:00
Pedro Beschorner Marin
44fc68c07c Skip recording process step for norecord meetings 2020-07-01 12:33:41 -03:00
Pedro Beschorner Marin
526f79e8f2 Merge remote-tracking branch 'bigbluebutton/v2.2.x-release' into bigbluebutton/develop 2020-06-30 18:15:18 -03:00
dependabot[bot]
151de8f375
Bump rack from 2.1.1 to 2.2.3 in /record-and-playback/core
Bumps [rack](https://github.com/rack/rack) from 2.1.1 to 2.2.3.
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rack/rack/compare/2.1.1...2.2.3)

Signed-off-by: dependabot[bot] <support@github.com>
2020-06-26 01:19:32 +00:00
Calvin Walton
3d800b68f1 Fix generation of fallback images if the presentationName contains spaces 2020-06-24 12:12:19 -04:00
Calvin Walton
b4456e323a Skip copying presentation thumbnails if they don't exist 2020-06-24 11:42:58 -04:00
Calvin Walton
26f5450245 Fix removing reconnect indicator from usernames when counting participants 2020-06-24 11:23:59 -04:00
mw781
f60059c983 Ensure that files are handled safely 2 2020-06-17 11:13:07 +01:00
mw781
fea0ff3204 Ensure that files are handled safely
This commit fixes an issue with reading and writing files.
File.open is used which means that a file will remain open
unless explicilty closed or the program exit. This doesn't work
for an NFS mount as the scripts try to "rm -rf" when the file
is still open. This commit fixes that by replacing all .opens
with .reads
2020-06-17 11:09:09 +01:00
Joao Siebel
3e95ed0e4b Merge remote-tracking branch 'upstream/v2.2.x-release' into merge-2.2 2020-06-16 16:40:56 -03:00
hiroshisuga
024afe3d01
Bug? "default.pdf" never occurrs
The "originalFilename" tag is not present in "SharePresentationEvent", and thus presentation_filename would never be "default.pdf". As a consequence, the thumbnails are always generated from the default.pdf.
2020-06-14 17:35:26 +09:00
Anton Georgiev
73a4bcd423
Merge pull request #9649 from fcecagno/rap-sort-process
Sort sanity files so it processes older recordings first
2020-05-28 16:04:18 -04:00
Anton Georgiev
5e90092fac
Merge pull request #8999 from kepstin/missing-font-size
presentation: ignore text shapes with missing calcedFontSize
2020-05-26 10:28:19 -04:00
Fred Dixon
13d123058a
Merge pull request #9671 from kepstin/missing-font-size
presentation: ignore text shapes with missing calcedFontSize
2020-05-25 18:19:53 -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
Felipe Cecagno
fc95e052a6 Sort sanity files so it processes older recordings first 2020-05-23 01:28:43 -03:00
Fred Dixon
e48e5bf336 Fix presenation playback on iPad for iOS 13 2020-05-16 10:28:28 -05:00
beckerr-rzht
d8cb64c129
[FIX] playback doesn't start in iPadOS
Playback a presentation does not start on iPad with iPadOS 13 and higher.
The root cause is that `mobileAndTabletCheck` does not detect an iPad as mobile device.
The reasons for this are discussed here:  https://github.com/serbanghita/Mobile-Detect/issues/795
A way to detect Safari on IPadOS as mobile device is described here: https://stackoverflow.com/a/60553965
I've added a function `detectLyingiOS13iPad` to work around this problem.
2020-05-10 17:53:22 +02:00
Anton Georgiev
cc79c4b6ae merge 2.2.10 into 2.3 2020-05-05 19:52:44 +00:00
Pedro Beschorner Marin
d97f413ef6 Fix note id 2020-04-29 13:08:10 -03:00
Pedro Beschorner Marin
beda54fb09 Included Etherpad's data as events to be stored 2020-04-27 10:48:52 -03:00
Calvin Walton
bfe8676df5 presentation: ignore text shapes with missing calcedFontSize
There's nothing reasonable we can do here if the font size is missing.
2020-04-06 12:46:57 -04:00
Richard Alam
5bd5c03fde
Merge pull request #8950 from kepstin/archive-clean-meta
Strip control characters from user-provided metadata in events file
2020-04-01 13:32:02 -04:00
Calvin Walton
20b150e86b Strip control characters from user-provided metadata in events file 2020-04-01 13:21:54 -04:00
Calvin Walton
a5a46b2c0a Have the recording archive delete originals of archived media
After the last segment of a recording has been archived, it is safe to
delete the original files that were recorded by the various media
handling components. This patch deletes the freeswitch audio files and
kurento webcam/screenshare files after they have been archived.

It needs to be used in combination with some changes to users/groups and
directory permissions to allow the `bigbluebutton` user to delete files
that it could previously only read.
2020-03-27 15:22:53 -04:00
dependabot[bot]
ba91d99e7a
Bump nokogiri from 1.10.7 to 1.10.8 in /record-and-playback/core
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.10.7 to 1.10.8.
- [Release notes](https://github.com/sparklemotion/nokogiri/releases)
- [Changelog](https://github.com/sparklemotion/nokogiri/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.10.7...v1.10.8)

Signed-off-by: dependabot[bot] <support@github.com>
2020-03-03 03:01:48 +00:00
Fred Dixon
8777c2c9dc Bump dependency for nokogiri version 2020-02-29 08:56:33 -06:00
Leonardo Crauss Daronco
5bc3062d58 Fix the paths to the ruby scripts on the rap workers
Was pointing to the wrong directory when loading the ruby scripts. Also
made the directory easier to configure, it's all in a single place now.
2020-02-06 10:43:32 -03:00
Calvin Walton
9f9e2a0c47 rap: Fix require paths in Rakefile
I moved the location of the worker classes around, but forgot to update
the Rakefile to include them from the new location.
2020-01-28 12:43:28 -05:00
Calvin Walton
1a88830a27 RaP: Fix done filenames for segmented recordings
The done filenames all have to contain the break_timestamp to identify
the segment
2020-01-21 17:21:50 -05:00
Calvin Walton
c52a67186e RaP: Clean up resque worker code, add worker for keep_events feature
I've moved the workers code into the `lib` subdirectory with other library-ish
code; this puts it into the ruby load path used by most scripts so referencing
files is easier.

I've applied various style cleanups based on the rubocop config present.

The `events` processing step has been integrated as a new worker `EventsWorker`,
there is no longer a separate `events/events.rb` script. I've reworked the
`rap-starter.rb` script to check for the done files in both the events and
recorded status directories.
2020-01-21 17:14:39 -05:00
Calvin Walton
bc1b53f037 Update gems for record-and-playback 2020-01-21 17:13:16 -05:00
Calvin Walton
6e7f133f1f rap: add missing install sections to systemd service files 2020-01-21 12:23:47 -05:00
Fred Dixon
aa1eb7b258 Bump version of Rack 2020-01-19 08:20:23 -06:00
Calvin Walton
aee7baa76b Merge branch 'v2.0-rap-on-resque' of github.com:daronco/bigbluebutton 2020-01-17 17:40:08 -05:00
Calvin Walton
c211bd4dc5 recording presentation format: round poll sizes to integers
If the poll size happened to be not an integer, the poll generation would fail.
Round it to an integer for the generation tool.
2020-01-14 16:19:32 -05:00
Calvin Walton
9907588b5e presentation recording: generate poll svg images without gnuplot
Write a tool that generates the poll svg images directly from the
BBB poll description. This avoids the issues with special characters
in the gnuplot labels, and gives us a lot more flexibility in how
the polls are formatted and styled.
2020-01-13 14:34:30 -05:00
Calvin Walton
10d6751039 Remove special characters from the gnuplot labels 2019-12-19 10:21:36 -05:00
Calvin Walton
aa26c1d512 Remove special characters from the gnuplot labels 2019-12-19 10:14:20 -05:00
Leonardo Crauss Daronco
95573b2467 Improve the yml for rec steps and run captions always before process 2019-12-10 16:28:13 -03:00
Leonardo Crauss Daronco
ac801cfce7 Use journald as the default logger for rap and rap services
Changed only in the main class so journald is the default and in the
scripts related to the processes in resque. Internal scripts might still
be logging to files.
2019-12-06 17:06:32 -03:00
Leonardo Crauss Daronco
f1d37e8a08 Gracefully stop bbb-rap-starter when the service is stopped 2019-12-06 16:36:25 -03:00
Leonardo Crauss Daronco
835449551d Raise an exception if a rap step fails so resque will list it
Resque captures the exceptions and marks the jobs as failed.
2019-12-06 15:51:47 -03:00
Leonardo Crauss Daronco
29cae33636 Add the format parameter to the examples of post scripts
They are optional but it's better to have them than not. If they are passed
and the script doesn't expect it they break.
2019-12-06 15:23:19 -03:00
Leonardo Crauss Daronco
5e05b7a8e8 Fixes for the rap scripts after processing a real recording 2019-12-06 12:26:24 -03:00
Leonardo Crauss Daronco
d74be7962a Process all .done files when bbb-rap-starter is started
Instead of just running when a .done file is added, it now also goes
through the files already there when the process starts.
2019-12-06 11:50:08 -03:00
Leonardo Crauss Daronco
53c3ed0d7d Change rap-starter to run persistently and watch for file changes
Instead of being executed every 30s by systemd, it's now a service that's
running all the time and will wait for .done files to start the processing
of recordings.
2019-12-05 11:41:13 -03:00
Leonardo Crauss Daronco
d769849ad6 Add resque worker to process the captions of a recording
Moved the code that was after the sanity step to its own worker.
2019-12-04 18:32:14 -03:00
Leonardo Crauss Daronco
62d62a2a1e Merge remote-tracking branch 'upstream/master' into v2.0-rap-on-resque
# Conflicts:
#	bigbluebutton-config/bin/bbb-conf
#	record-and-playback/core/Gemfile.lock
#	record-and-playback/core/lib/recordandplayback/events_archiver.rb
#	record-and-playback/core/scripts/archive/archive.rb
#	record-and-playback/core/scripts/bigbluebutton.yml
#	record-and-playback/core/scripts/rap-process-worker.rb
#	record-and-playback/core/scripts/rap-publish-worker.rb
#	record-and-playback/core/scripts/rap-sanity-worker.rb
#	record-and-playback/core/scripts/rap-starter.rb
#	record-and-playback/core/scripts/sanity/sanity.rb
#	record-and-playback/core/systemd/bbb-rap-archive-worker.service
#	record-and-playback/core/systemd/bbb-rap-process-worker.service
#	record-and-playback/core/systemd/bbb-rap-publish-worker.service
#	record-and-playback/core/systemd/bbb-rap-sanity-worker.service
#	record-and-playback/core/systemd/bbb-record-core.target
2019-12-04 17:33:44 -03:00
Leonardo Crauss Daronco
9e5c386e6f Add option to rap-process-worker to accept a filtering pattern
It will only process recordings which ID matches the pattern. By default
the pattern is nil and it will process all recordings.
2019-12-04 12:05:18 -03:00
Fred Dixon
dd2ae19ca0
Merge pull request #8277 from SilentFlameCR/master
edited rap-caption-inbox.rb to get appropriate files in presentation
2019-11-22 23:11:18 +01:00
Fred Dixon
bb76dc9be9
Merge pull request #8349 from kepstin/screenshare-breakout
screenshare recording format: add breakout room info to metadata.xml
2019-11-22 23:04:46 +01:00
Fred Dixon
a65df842ae
Merge pull request #7057 from kepstin/rec-vp9
Recording: Switch from vp8 to vp9, use better x264 options
2019-11-21 04:43:22 +01:00
Calvin Walton
ccf5f57602 screenshare recording format: add breakout room info to metadata.xml
Fixes #8252
2019-11-20 13:59:48 -05:00
dependabot[bot]
f823b03978
Bump loofah from 2.2.3 to 2.3.1 in /record-and-playback/core
Bumps [loofah](https://github.com/flavorjones/loofah) from 2.2.3 to 2.3.1.
- [Release notes](https://github.com/flavorjones/loofah/releases)
- [Changelog](https://github.com/flavorjones/loofah/blob/master/CHANGELOG.md)
- [Commits](https://github.com/flavorjones/loofah/compare/v2.2.3...v2.3.1)

Signed-off-by: dependabot[bot] <support@github.com>
2019-11-08 02:22:17 +00:00
Richard Alam
1f2448c1ea
Merge pull request #8256 from ritzalam/change-audio-recording-codec
Change audio recording codec
2019-11-05 16:18:55 -05:00
SilentFlameCR
b88b70d945 edited rap-caption-inbox.rb to get appropriate files in presentation 2019-10-30 13:10:24 -04:00
Calvin Walton
0aa018109c
Merge branch 'master' into rec-vp9 2019-10-29 10:52:30 -04:00
Calvin Walton
83ba78683b Update the configuration examples for screenshare recording processing
Add an example to enable generating an mp4 file (Apple device compatibility)
Switch the webm generation to use the faster single-pass encode by default,
since 2-pass is much slower and more cpu intensive.
2019-10-28 14:46:10 -04:00
Calvin Walton
8283bc16f0 recording archive: Archive freeswitch audio in formats other than wav 2019-10-28 13:47:33 -04:00
Calvin Walton
8bdcea424d Fix typos in archive script 2019-10-23 10:16:29 -04:00
Calvin Walton
cad8995858 recording archive: Compress audio files
The wav files from the freeswitch recordings are huge, uncompressed.
There's no reason to keep them as wav, we can compress them in the
archive step.
2019-10-22 17:27:23 -04:00
Pedro Beschorner Marin
4bc6fae649 Patching playback updates for iOS (#8195) 2019-10-21 16:05:59 -04:00
Calvin Walton
69aa493d90 Make presentation playback continue if deskshare.xml was not found
Someone on the mailing list had some recordings which were using the 2.0
playback, but were missing the deskshare.xml file (which should always
be present for 2.0… strange). It's safe to continue loading the recording
playback if the deskshare.xml file is not found, the recording will just act
as if there were no deskshare start/stop events.
2019-10-18 12:42:29 -04:00
Calvin Walton
726406f0f5 presentation playback: Make setMediaSync a no-op if there's no deskshare
Previously the setMediaSync function was only called after the deskshare
loaded, but by moving it to run after all media loaded, it now runs even
on recordings that didn't have deskshare. Make it do nothing (return early)
in that case.
2019-10-09 12:32:57 -04:00
Calvin Walton
d5097fa43e Fix deskshare media sync when deskshare loads before webcam/audio
If the secondary media loaded before the main media, it would run the
"setMediaSync" function before the main media player was setup. As a
side-effect of setting up the main media player, all of the event handlers
added by the setMediaSync function are detached, and so the secondary
media never starts playing.

Move the call to setMediaSync to after the media-ready events for all
media have fired, so that it can reliably attach the event handlers.
2019-10-07 15:21:40 -04:00
dependabot[bot]
f9ac1dd48b
Bump rubyzip from 1.2.3 to 1.3.0 in /record-and-playback/core
Bumps [rubyzip](https://github.com/rubyzip/rubyzip) from 1.2.3 to 1.3.0.
- [Release notes](https://github.com/rubyzip/rubyzip/releases)
- [Changelog](https://github.com/rubyzip/rubyzip/blob/master/Changelog.md)
- [Commits](https://github.com/rubyzip/rubyzip/compare/v1.2.3...v1.3.0)

Signed-off-by: dependabot[bot] <support@github.com>
2019-10-04 10:39:10 +00:00
Ghazi Triki
b4c5d2cc6e Fix screeshare rap (#7939)
Adapt the screenshare processing script to changes to the api for events handling in
the recording-and-playback core libs.
2019-09-23 17:08:14 -04:00
Calvin Walton
11fac78a46 Fix autoplay of deskshare video in presentation playback format
This reverts a bbb-specific customization made in the jquery.acornmediaplayer.js
file: it's restored to what the upstream player did. I can't find any explanation
for why this change was made in the first place? Reverting it doesn't seem to
cause any playback issues (Popcorn still works, in particular).
2019-09-23 15:37:52 -04:00
dependabot[bot]
415a25f9a0
Bump nokogiri from 1.10.3 to 1.10.4 in /record-and-playback/core
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.10.3 to 1.10.4.
- [Release notes](https://github.com/sparklemotion/nokogiri/releases)
- [Changelog](https://github.com/sparklemotion/nokogiri/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.10.3...v1.10.4)

Signed-off-by: dependabot[bot] <support@github.com>
2019-08-20 17:17:39 +00:00
Fred Dixon
eacb8f9f65
Merge pull request #7723 from kepstin/rec-events-cleanup-more
Delete control characters from all recording event properties
2019-08-09 23:10:24 -04:00
Richard Alam
99b04c27b3 Add missing param when calling create_webcam_edl 2019-07-31 13:39:56 -07:00
Richard Alam
e409190114 - convert tabs to spaces 2019-07-10 13:09:38 -07:00
Richard Alam
ec1343931c - add comments to explain how rap-archive-worker and rap-events-worker work together 2019-07-05 08:57:51 -07:00
Richard Alam
40c6dd8827 - run post events scripts 2019-07-05 08:57:22 -07:00
Richard Alam
61d9223a70 - format spaces to tabs 2019-07-04 11:07:57 -07:00
Richard Alam
82bd5e4a6f - run keep-events worker separate from archive-worker 2019-07-04 11:00:59 -07:00
Calvin Walton
f2f9989c70 Delete control characters from all recording event properties
Found another case where the html5 client was passing through control
characters, in the original presentation name field.

Rather than play whack-a-mole with different fields which may eventually
get poorly sanitized user data, apply the control character filtering
to all properties.

Adjust the character range to do the following:
* Allow horizontal tab (0x09), it's not problematic.
* Disallow control characters in the range 0x1A-0x1F. Probably missed by accident.
2019-07-04 10:46:46 -04:00
Fred Dixon
6d0f778e84 Reverted rap scripts for presentation 2019-06-13 19:34:35 -05:00
Richard Alam
9ac272d1a0 - use thumbnails to find the num pages of presentation instead of swfs as we now turn off generation of
swfs for html5
2019-06-07 13:22:59 -07:00
Richard Alam
a46d0b9680 Merge branch 'master' of github.com:bigbluebutton/bigbluebutton into captions-text-tracks-intermediate-branch 2019-06-06 15:04:53 -07:00
Calvin Walton
19a011cc29 RaP: Fix error message when shared notes could not be archived.
It used to print:

Failed to download file: undefined local variable or method `respose' for BigBlueButton:Module
Did you mean?  response

because the incorrect variable name was used in the error message.

There was no effect other than the message in the log, since the shared notes
couldn't be archived anyways, and the only thing the exception did was ...
prevent the shared notes from being archived.
2019-06-06 10:55:53 -04:00
Calvin Walton
4c1e2ed477 RaP: Reduce ffmpeg output spam in logs of caption inbox 2019-06-06 10:49:27 -04:00
Calvin Walton
7f92b58140 RaP: Dir.glob accepts a block directly, no need for a temp variable 2019-06-06 10:44:47 -04:00
Calvin Walton
620ed367be RaP: glob is a method on Dir, not File 2019-06-06 10:43:40 -04:00
Calvin Walton
94ae7c330b RaP: Use correct variable to get info for new caption track 2019-06-06 10:41:14 -04:00
Calvin Walton
aecb66e28d RaP: Create the recording captions dir before moving the converted vtt file 2019-06-06 10:34:08 -04:00
Calvin Walton
07688593ac caption-inbox: clean up track file if language tag is invalid 2019-06-04 14:28:58 -04:00
Richard Alam
c92bfbb591 - deploy recording scripts in proper location
- log upload captions params
2019-06-04 14:07:10 -04:00
Calvin Walton
f693915e99 RaP captions: Fix usage of JSON.parse, use a proc to capture local vars 2019-06-04 14:01:51 -04:00
Calvin Walton
f04bf290af Fix requires for journald-logger 2019-06-04 12:18:46 -04:00
Calvin Walton
413f2cd2fc RaP: Correct comment about ruby version in rubocop config 2019-06-04 11:25:20 -04:00
Calvin Walton
983751c9c0 RaP: Have the caption inbox run the caption integration scripts. 2019-06-04 11:03:22 -04:00
Calvin Walton
bdd60a197c RaP: Add note about rubocop ruby version 2019-06-04 11:03:22 -04:00
Calvin Walton
676fa41f06 Add caption integration script for presentation format. 2019-06-04 11:03:22 -04:00
Calvin Walton
b22c905194 rap-caption-inbox: improve formatting, initial pass at conversion
It now attempts to convert the uploaded caption file to WebVTT and
updates the index file.
2019-06-04 11:03:22 -04:00
Calvin Walton
775c348ddc RaP: Add an optional test group which installs e.g. rubocop 2019-06-04 11:03:22 -04:00
Calvin Walton
c6e09f52a1 RaP Caption inbox: read uploaded caption json file
Some additional validation/normalization is added for the language tag,
and some cleanup has been done for logging.
2019-06-04 11:03:22 -04:00
Calvin Walton
812052a8c7 Change events archiver to read config from relative path
Makes testing easier
2019-06-04 11:03:22 -04:00
Calvin Walton
d74f0044cc Add function that uses ffmpeg to convert subtitles to webvtt
FFmpeg has pretty good format autodetection even if the filename has the
'.txt' extension, so just rely on that. It'll even pull subtitles out of
video files - although I expect we'll have size limits so that doesn't
happen.
2019-06-04 11:03:22 -04:00
Calvin Walton
23da507fa8 Initial outline of the rap worker tool for handling the caption inbox
Rather than running the tool in a loop, I'm using inotify to watch for
new files being created (ideally, the other rap workers will be migrated
to this style in the future). The trigger for processing is the creation
of the .json index file for the uploaded track.
2019-06-04 11:03:22 -04:00
Ghazi Triki
c9194d087e Correctly process captions. 2019-05-13 21:38:51 +01:00
Ghazi Triki
7c5727750f Merge remote-tracking branch 'bigbluebutton/master' into text-tracks 2019-05-13 14:46:20 +01:00
Ghazi Triki
b578aeb243 Move captions.rb to utils directory. 2019-05-10 16:56:29 +01:00
Ghazi Triki
dbd86eb096 Code improve. 2019-05-10 15:51:05 +01:00
Fred Dixon
056ef6ee8c
Merge pull request #7327 from ritzalam/add-redis-password-on-master
Add redis password on master
2019-05-09 16:35:42 -04:00
Calvin Walton
2ed0412f5c Revert "Revert "Rename notes playback nginx file""
This reverts commit 9ad783fab0.

We ended up not being able to rename the etherpad nginx file, so this
recording format has to go back to using a different name.
2019-05-09 13:44:48 -04:00
Calvin Walton
5c09ea5605 Merge branch 'archive-note' of https://github.com/fcecagno/bigbluebutton 2019-05-09 13:43:48 -04:00
Fred Dixon
0d9220051f
Merge pull request #7357 from kepstin/archive-text-cleanup
Recording: Strip control characters in whiteboard text events
2019-05-08 10:10:25 -04:00
Ghazi Triki
fb834d20d1 Add /var/bigbluebutton/captions/ to deploy.sh 2019-05-08 10:40:32 +01:00
Ghazi Triki
7505975bf8 Remove logging for debugging. 2019-05-07 18:25:40 +01:00
Ghazi Triki
17a3af0487 Write playback caption files from the captions file generated for API. 2019-05-07 18:13:09 +01:00
Calvin Walton
548ac7edef Recording: Strip control characters in whiteboard text events
Sometimes when text is pasted into the whiteboard text tool from
external apps, it'll include control characters that mess up later
recording processing scripts.

Run the same cleanup as already used for chat messages on the whiteboard
text as well.

The cleanup has been adjusted to allow newline and tab characters. They
won't really cause issues in chat, and newlines (at a minimum) are
required for the whiteboard.

This is a workaround for #7356
2019-05-07 11:48:20 -04:00
Ghazi Triki
35506cdc44 Generate captions.json for API. 2019-05-01 16:01:15 +01:00
Richard Alam
bf7898225b - minor cleanup 2019-04-30 12:30:59 -07:00
Ghazi Triki
f820446965 Process caption files before processing meeting files. 2019-04-30 19:54:02 +01:00
Ghazi Triki
925f5a2894 Put captions files in the new directory. 2019-04-22 20:28:54 +01:00
Felipe Cecagno
9ad783fab0 Revert "Rename notes playback nginx file"
This reverts commit 7f36112dd3.
2019-04-15 13:50:12 -03:00
Felipe Cecagno
109bb7b658 cleanup 2019-04-15 12:36:05 -03:00
Ghazi Triki
757d92cc29 Raise an error when the note file header does not respond with a HTTPOK status. 2019-04-15 15:07:03 +01:00
Ghazi Triki
92a4bc7e52 Replaced wget and curl commands by net/http module. 2019-04-04 14:09:49 +01:00
Richard Alam
f2098bc376 Merge branch 'master' of github.com:bigbluebutton/bigbluebutton into ritzalam-add-redis-password-on-v2.2-dev 2019-04-02 10:43:46 -07:00
Felipe Cecagno
f70331cbba update notes formats archived 2019-03-18 14:33:29 -03:00
Calvin Walton
ef007cc1a4 Recording: Switch from vp8 to vp9, use better x264 options 2019-03-17 10:01:39 -04:00
Pedro Beschorner Marin
7e5c5c29ed Avoid publishing empty notes 2019-03-15 17:19:54 -03:00
Pedro Beschorner Marin
7f36112dd3 Rename notes playback nginx file 2019-03-15 17:19:10 -03:00
Felipe Cecagno
51b9b91dae rename note to notes 2019-03-11 23:56:29 -03:00
Felipe Cecagno
f1f56bd868 implement the first version of the note playback 2019-03-06 15:47:00 -03:00
Felipe Cecagno
3467d912c7 fix typo 2019-03-05 13:22:10 -03:00
Felipe Cecagno
657a3ef013 use etherpad api to archive exported note 2019-03-05 13:17:48 -03:00
Calvin Walton
010153cbb9 Recording: Remove the red5 race workaround that delays processing
This was added to workaround for red5 taking a while to rewrite the
serialized (.ser) data that it streams to disk back to the .flv format.

The workaround is no longer needed, for two reasons:
* The sanity scripts run the red5 code to generate the .flv from the .ser
  if needed, and
* We're expecting more people to be using WebRTC media in the future anyways

This makes recordings available up to 2 minutes earlier than they would have
been otherwise.
2019-02-28 11:13:12 -05:00
Calvin Walton
6a69274092
Merge pull request #6868 from kepstin/rec-event-sort
Recording archive: log when events are are out of order and must be sorted
2019-02-26 14:18:21 -05:00
Calvin Walton
49a86e4d4e Recording archive: log when events are are out of order and must be sorted
To help us track down exactly why this is happening - and know when we've
properly fixed it - add some logging.
2019-02-26 12:10:21 -05:00
Fred Dixon
45c228d2ea
Merge pull request #6864 from kepstin/rec-event-sort
Recording events archiver: fix syntax errors
2019-02-25 17:57:26 -05:00
Calvin Walton
abc8284052 Recording events archiver: fix syntax errors
I had renamed prev_event to previous_event, but missed a couple of spots.
2019-02-25 16:43:27 -05:00
Fred Dixon
bc525baf07
Merge pull request #6848 from pedrobmarin/acorn-load
Playback loading closed captions
2019-02-25 12:41:49 -05:00
Calvin Walton
5d189be062 Sort events when writing the events.xml file
BigBlueButton can sometimes write events out of order - this particularly
seems to affect the final RecordStatusEvent in a meeting which was ended
while recording was still running. This breaks the recording processing
scripts.

As a workaround, sort the events as they're being written into the events.xml
file. We have the following properties:

* The input data is already mostly sorted
* Items in the wrong position will be no more than a couple spots off from where
  they should be
* We should not change the relative order of events with the same timestamp.

The best algorithm to use here is a simple insertion sort. When adding each new
event to the XML structure, it scans backwards through existing events until it
finds the correct position.

For #6035
2019-02-25 12:34:29 -05:00
Pedro Beschorner Marin
4f4f668116 Moving media sync for after screenshare is loaded 2019-02-22 17:46:45 -03:00
Pedro Beschorner Marin
3635cea2b5 Waiting media to be ready before loading acorn controls 2019-02-22 17:46:45 -03:00
Calvin Walton
1e76256ea5 Recording: Fix handling of links in chat messages
At some point, BigBlueButton switched from using `"` to `'` in the link tags in
chat messages, which caused the regular expression that was supposed to remove
the `event:` prefix to not match.

I've replaced the error-prone regular expression with an actual HTML parser,
using the "Loofah" HTML transformation/sanitization library based on Nokogiri.

I've removed the code that detected unlinked URLs, since it was broken - and
not needed: current BigBlueButton versions do the link detection in the client.
If someone reprocesses a really old BBB recording with these scripts, URLs in
chat might not be linked in the result. But they wouldn't have been linked in the
client in the original meeting either, so I figure that's ok.

Fixes #6475
2019-02-20 12:03:24 -05:00
Calvin Walton
d9f6ec7560 Revert "Wait until the media is ready before initializing the acorn player."
This reverts commit 04d31d300f.
2019-02-12 14:36:44 -05:00
Calvin Walton
08125c227b Revert "Fix loading slide images in presentation format"
This reverts commit 4346b0fc9e.
2019-02-12 14:36:36 -05:00
Ghazi Triki
99aa2b5fcc Use the right bigbluebutton user for recording directories. 2019-02-08 17:53:57 +01:00
Fred Dixon
28c9380bdf
Merge pull request #6694 from kepstin/rec-link-event
Fix loading slide images in presentation format
2019-01-31 22:52:00 -05:00
Calvin Walton
4346b0fc9e Fix loading slide images in presentation format
The initialization order change to support captions moved the acorn
initialization to after some of the popcorn init had already run. We
have to move that function to run after we create the acorn player
so it references the correct #video element (since acorn replaces/
moves it during init)
2019-01-31 17:47:48 -05:00
Fred Dixon
566b245e3c
Merge pull request #6385 from pedrobmarin/keep-meeting-events
Created property keepEvents at bbb-web to make redis record the event…
2019-01-24 21:47:50 -05:00
Fred Dixon
b9f9f0b3af
Merge pull request #6635 from kepstin/rec-corrupt-video
Add a check to reject undecodable video streams.
2019-01-24 16:27:54 -05:00
Calvin Walton
52fadaf4a6 Add a check to reject undecodable video streams.
In some cases, ffmpeg will be able to read the file, but the video itself
can't be decoded (missing/corrupt stream headers, for example). In this case,
some of the properties on the stream object will be nil.
Make sure that pix_fmt is present in the probed info, since that's a required
property.
2019-01-24 14:56:48 -05:00
Fred Dixon
fb3bce1d7d
Merge pull request #6561 from kepstin/caption-fixes
Wait until the media is ready before initializing the acorn player.
2019-01-15 14:33:48 -05:00
Calvin Walton
04d31d300f Wait until the media is ready before initializing the acorn player.
Previously, the acorn player was being initialized before the asynchronous
load of captions information completed, meaning that the acorn player didn't
know there were caption tracks, and the CC selector control wasn't available.

Fixes #6463
2019-01-15 14:15:42 -05:00
Fred Dixon
d381cda1a1 Updated nokogiri and rubyzip to later versions 2018-12-17 16:53:38 -06:00