diff --git a/bigbluebutton-config/bin/apply-lib.sh b/bigbluebutton-config/bin/apply-lib.sh index 4313d02f3040a91cef7a09be7c03d7a3c7f44f1e..26765caf91760dac44a08dab3c332cbe080b6817 100644 --- a/bigbluebutton-config/bin/apply-lib.sh +++ b/bigbluebutton-config/bin/apply-lib.sh @@ -168,7 +168,6 @@ HERE mkdir -p /etc/systemd/system/bbb-webrtc-sfu.service.d cat > /etc/systemd/system/bbb-webrtc-sfu.service.d/override.conf << HERE [Unit] -After= After=syslog.target network.target freeswitch.service kurento-media-server-8888.service kurento-media-server-8889.service kurento-media-server-8890.service HERE diff --git a/bigbluebutton-config/bin/bbb-conf b/bigbluebutton-config/bin/bbb-conf index 123b1b71c533262e580714e6e00df94385f3829c..bd4e7c189f4777db91fe45f526b0ccc64d074742 100755 --- a/bigbluebutton-config/bin/bbb-conf +++ b/bigbluebutton-config/bin/bbb-conf @@ -798,7 +798,7 @@ check_configuration() { echo fi - if ! which ufw; then + if ! which ufw > /dev/null 2>&1; then echo echo "# Warning: No firewall detected. Recommend using setting up a firewall for your server" echo "#" diff --git a/bigbluebutton-config/bin/bbb-record b/bigbluebutton-config/bin/bbb-record index c94817fe07bb76fd51fbe1271a9eb61f79339ba0..bcc3c4d0639eb1a71343f80ec45a36d2fdb2b0c4 100755 --- a/bigbluebutton-config/bin/bbb-record +++ b/bigbluebutton-config/bin/bbb-record @@ -117,7 +117,7 @@ need_root() { } need_root_or_bigbluebutton() { - if [ $EUID != 0 -a "$USER" != 'bigbluebutton']; then + if [ $EUID != 0 -a "$USER" != 'bigbluebutton' ]; then echo "Need to be user root or bigbluebutton to run this option" exit 1 fi diff --git a/bigbluebutton-html5/imports/api/annotations/server/modifiers/addAnnotation.js b/bigbluebutton-html5/imports/api/annotations/server/modifiers/addAnnotation.js index 3cc9a972a52483ffa05ec231bde3871e497b5096..4503da40b7fa3de1a1500a434ad3cd2b9dd23c51 100755 --- a/bigbluebutton-html5/imports/api/annotations/server/modifiers/addAnnotation.js +++ b/bigbluebutton-html5/imports/api/annotations/server/modifiers/addAnnotation.js @@ -10,17 +10,13 @@ export default function addAnnotation(meetingId, whiteboardId, userId, annotatio const query = addAnnotationQuery(meetingId, whiteboardId, userId, annotation); - const cb = (err, numChanged) => { - if (err) { - return Logger.error(`Adding annotation to collection: ${err}`); - } + try { + const { insertedId } = Annotations.upsert(query.selector, query.modifier); - const { insertedId } = numChanged; if (insertedId) { - return Logger.info(`Added annotation id=${annotation.id} whiteboard=${whiteboardId}`); + Logger.info(`Added annotation id=${annotation.id} whiteboard=${whiteboardId}`); } - return true; - }; - - return Annotations.upsert(query.selector, query.modifier, cb); + } catch (err) { + Logger.error(`Adding annotation to collection: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/annotations/server/modifiers/clearAnnotations.js b/bigbluebutton-html5/imports/api/annotations/server/modifiers/clearAnnotations.js index c8af5d888c7ac81a2a13c0e39a53d8dcd486562a..aafc9dbd1739cf8e6517697f5bb5d3ea8360edc2 100644 --- a/bigbluebutton-html5/imports/api/annotations/server/modifiers/clearAnnotations.js +++ b/bigbluebutton-html5/imports/api/annotations/server/modifiers/clearAnnotations.js @@ -16,25 +16,28 @@ export default function clearAnnotations(meetingId, whiteboardId, userId) { selector.userId = userId; } - const cb = (err) => { - if (err) { - return Logger.error(`Removing Annotations from collection: ${err}`); + try { + const numberAffected = Annotations.remove(selector); + + if (numberAffected) { + if (userId) { + Logger.info(`Cleared Annotations for userId=${userId} where whiteboard=${whiteboardId}`); + return; + } + + if (whiteboardId) { + Logger.info(`Cleared Annotations for whiteboard=${whiteboardId}`); + return; + } + + if (meetingId) { + Logger.info(`Cleared Annotations (${meetingId})`); + return; + } + + Logger.info('Cleared Annotations (all)'); } - - if (userId) { - return Logger.info(`Cleared Annotations for userId=${userId} where whiteboard=${whiteboardId}`); - } - - if (whiteboardId) { - return Logger.info(`Cleared Annotations for whiteboard=${whiteboardId}`); - } - - if (meetingId) { - return Logger.info(`Cleared Annotations (${meetingId})`); - } - - return Logger.info('Cleared Annotations (all)'); - }; - - return Annotations.remove(selector, cb); + } catch (err) { + Logger.error(`Removing Annotations from collection: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/annotations/server/modifiers/removeAnnotation.js b/bigbluebutton-html5/imports/api/annotations/server/modifiers/removeAnnotation.js index 44d69397ee41c421f7c9eb7372e2e94df19126a9..fcdf337fa2ae62516e3c06c12fda1088a19be7c9 100644 --- a/bigbluebutton-html5/imports/api/annotations/server/modifiers/removeAnnotation.js +++ b/bigbluebutton-html5/imports/api/annotations/server/modifiers/removeAnnotation.js @@ -13,13 +13,13 @@ export default function removeAnnotation(meetingId, whiteboardId, shapeId) { id: shapeId, }; - const cb = (err) => { - if (err) { - return Logger.error(`Removing annotation from collection: ${err}`); - } - - return Logger.info(`Removed annotation id=${shapeId} whiteboard=${whiteboardId}`); - }; + try { + const numberAffected = Annotations.remove(selector); - return Annotations.remove(selector, cb); + if (numberAffected) { + Logger.info(`Removed annotation id=${shapeId} whiteboard=${whiteboardId}`); + } + } catch (err) { + Logger.error(`Removing annotation from collection: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/audio/client/bridge/sip.js b/bigbluebutton-html5/imports/api/audio/client/bridge/sip.js index 720e88586a9b78e9c619601ad86d8247cdaad2be..8593519d72afeacc6a501ab11df7df4b22b43d35 100755 --- a/bigbluebutton-html5/imports/api/audio/client/bridge/sip.js +++ b/bigbluebutton-html5/imports/api/audio/client/bridge/sip.js @@ -180,18 +180,13 @@ class SIPSession { }, CALL_TRANSFER_TIMEOUT); // This is is the call transfer code ask @chadpilkey - if (this.sessionSupportRTPPayloadDtmf(this.currentSession)) { - this.currentSession.sessionDescriptionHandler.sendDtmf(1); - } else { - // RFC4733 not supported , sending DTMF through INFO - logger.debug({ - logCode: 'sip_js_rtp_payload_dtmf_not_supported', - extraInfo: { - callerIdName: this.user.callerIdName, - }, - }, 'Browser do not support payload dtmf, using INFO instead'); - this.sendDtmf(1); - } + logger.debug({ + logCode: 'sip_js_rtp_payload_send_dtmf', + extraInfo: { + callerIdName: this.user.callerIdName, + }, + }, 'Sending DTMF INFO to transfer user'); + this.sendDtmf(1); Tracker.autorun((c) => { trackerControl = c; @@ -401,7 +396,6 @@ class SIPSession { let bridgeError; if (!this._reconnecting) { - logger.info({ logCode: 'sip_js_session_ua_disconnected', extraInfo: { @@ -470,7 +464,7 @@ class SIPSession { const code = getErrorCode(error); - //Websocket's 1006 is currently mapped to BBB's 1002 + // Websocket's 1006 is currently mapped to BBB's 1002 if (code === 1006) { this.stopUserAgent(); @@ -955,7 +949,7 @@ export default class SIPBridge extends BaseAudioBridge { window.clientLogger = logger; } - get inputDeviceId () { + get inputDeviceId() { return this.media.inputDevice ? this.media.inputDevice.inputDeviceId : null; } diff --git a/bigbluebutton-html5/imports/api/breakouts/server/handlers/breakoutJoinURL.js b/bigbluebutton-html5/imports/api/breakouts/server/handlers/breakoutJoinURL.js index 0b4e593134e900035ffa8793aa0070c021e14bf2..06ccb21d5b772d1c91f98ece73af28c7e7e49c75 100644 --- a/bigbluebutton-html5/imports/api/breakouts/server/handlers/breakoutJoinURL.js +++ b/bigbluebutton-html5/imports/api/breakouts/server/handlers/breakoutJoinURL.js @@ -25,20 +25,15 @@ export default function handleBreakoutJoinURL({ body }) { }, }; - const cb = (cbErr, numChanged) => { - if (cbErr) { - return Logger.error(`Adding breakout to collection: ${cbErr}`); - } + try { + const { insertedId, numberAffected } = Breakouts.upsert(selector, modifier); - const { - insertedId, - } = numChanged; if (insertedId) { - return Logger.info(`Added breakout id=${breakoutId}`); + Logger.info(`Added breakout id=${breakoutId}`); + } else if (numberAffected) { + Logger.info(`Upserted breakout id=${breakoutId}`); } - - return Logger.info(`Upserted breakout id=${breakoutId}`); - }; - - return Breakouts.upsert(selector, modifier, cb); + } catch (err) { + Logger.error(`Adding breakout to collection: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/breakouts/server/handlers/breakoutStarted.js b/bigbluebutton-html5/imports/api/breakouts/server/handlers/breakoutStarted.js index 5b005073694163615d331331270b3b72bf814cb0..8b755e23bd98f1c92e2f315866ccd2909ef11ca8 100644 --- a/bigbluebutton-html5/imports/api/breakouts/server/handlers/breakoutStarted.js +++ b/bigbluebutton-html5/imports/api/breakouts/server/handlers/breakoutStarted.js @@ -32,14 +32,14 @@ export default function handleBreakoutRoomStarted({ body }, meetingId) { ), }; - const cb = (err) => { - if (err) { - return Logger.error(`updating breakout: ${err}`); - } - - return Logger.info('Updated timeRemaining and externalMeetingId ' - + `for breakout id=${breakoutId}`); - }; + try { + const { numberAffected } = Breakouts.upsert(selector, modifier); - return Breakouts.upsert(selector, modifier, cb); + if (numberAffected) { + Logger.info('Updated timeRemaining and externalMeetingId ' + + `for breakout id=${breakoutId}`); + } + } catch (err) { + Logger.error(`updating breakout: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/breakouts/server/handlers/joinedUsersChanged.js b/bigbluebutton-html5/imports/api/breakouts/server/handlers/joinedUsersChanged.js index f585d65e40acdb31b5ec2ecd16dfe57b0779600c..4918a3b8ac30e1dd68813e64d24f02888c665f1b 100644 --- a/bigbluebutton-html5/imports/api/breakouts/server/handlers/joinedUsersChanged.js +++ b/bigbluebutton-html5/imports/api/breakouts/server/handlers/joinedUsersChanged.js @@ -27,15 +27,13 @@ export default function joinedUsersChanged({ body }) { }, }; + try { + const numberAffected = Breakouts.update(selector, modifier); - const cb = (err) => { - if (err) { - return Logger.error(`updating joined users in breakout: ${err}`); + if (numberAffected) { + Logger.info(`Updated joined users in breakout id=${breakoutId}`); } - - return Logger.info('Updated joined users ' - + `in breakout id=${breakoutId}`); - }; - Breakouts.find(selector); - Breakouts.update(selector, modifier, cb); + } catch (err) { + Logger.error(`updating joined users in breakout: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/breakouts/server/handlers/updateTimeRemaining.js b/bigbluebutton-html5/imports/api/breakouts/server/handlers/updateTimeRemaining.js index f26a35a449c5cdea96b12366b0963278a1a73bae..02c4d9808de11b652b5de0425efb65810b184bf3 100644 --- a/bigbluebutton-html5/imports/api/breakouts/server/handlers/updateTimeRemaining.js +++ b/bigbluebutton-html5/imports/api/breakouts/server/handlers/updateTimeRemaining.js @@ -24,14 +24,13 @@ export default function handleUpdateTimeRemaining({ body }, meetingId) { multi: true, }; - const cb = (err) => { - if (err) { - return Logger.error(`Updating breakouts: ${err}`); - } - - return Logger.info('Updated breakout time remaining for breakouts ' + - `where parentMeetingId=${meetingId}`); - }; + try { + const numberAffected = Breakouts.update(selector, modifier, options); - return Breakouts.update(selector, modifier, options, cb); + if (numberAffected) { + Logger.info(`Updated breakout time remaining for breakouts where parentMeetingId=${meetingId}`); + } + } catch (err) { + Logger.error(`Updating breakouts: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/breakouts/server/methods/createBreakout.js b/bigbluebutton-html5/imports/api/breakouts/server/methods/createBreakout.js index 315ce25e254efa16253cc0a873eedb37d9efe99a..9ab4adf57c20842b51c2b45b780f0165b38c4b77 100644 --- a/bigbluebutton-html5/imports/api/breakouts/server/methods/createBreakout.js +++ b/bigbluebutton-html5/imports/api/breakouts/server/methods/createBreakout.js @@ -13,7 +13,10 @@ export default function createBreakoutRoom(rooms, durationInMinutes, record = fa const { meetingId, requesterUserId } = extractCredentials(this.userId); const eventName = 'CreateBreakoutRoomsCmdMsg'; - if (rooms.length > MAX_BREAKOUT_ROOMS) return Logger.info(`Attempt to create breakout rooms with invalid number of rooms in meeting id=${meetingId}`); + if (rooms.length > MAX_BREAKOUT_ROOMS) { + Logger.info(`Attempt to create breakout rooms with invalid number of rooms in meeting id=${meetingId}`); + return; + } const payload = { record, durationInMinutes, diff --git a/bigbluebutton-html5/imports/api/breakouts/server/modifiers/clearBreakouts.js b/bigbluebutton-html5/imports/api/breakouts/server/modifiers/clearBreakouts.js index 21fd266fcec2b346c8de8fe6f782e31efe75ef82..f9640ca80d77c07c7a56a1c82f7e88a9dd4d82b4 100644 --- a/bigbluebutton-html5/imports/api/breakouts/server/modifiers/clearBreakouts.js +++ b/bigbluebutton-html5/imports/api/breakouts/server/modifiers/clearBreakouts.js @@ -7,12 +7,23 @@ export default function clearBreakouts(breakoutId) { breakoutId, }; - return Breakouts.remove(selector, () => { - Logger.info(`Cleared Breakouts (${breakoutId})`); - }); - } + try { + const numberAffected = Breakouts.remove(selector); - return Breakouts.remove({}, () => { - Logger.info('Cleared Breakouts (all)'); - }); + if (numberAffected) { + Logger.info(`Cleared Breakouts (${breakoutId})`); + } + } catch (err) { + Logger.error(`Error on clearing Breakouts (${breakoutId})`); + } + } else { + try { + const numberAffected = Breakouts.remove({}); + if (numberAffected) { + Logger.info('Cleared Breakouts (all)'); + } + } catch (err) { + Logger.error('Error on clearing Breakouts (all)'); + } + } } diff --git a/bigbluebutton-html5/imports/api/captions/server/methods/editCaptions.js b/bigbluebutton-html5/imports/api/captions/server/methods/editCaptions.js index abc45f294d0b91dab0b973a9ace141bfb41756de..9cd569810209f992f924385c630d53327d62917c 100644 --- a/bigbluebutton-html5/imports/api/captions/server/methods/editCaptions.js +++ b/bigbluebutton-html5/imports/api/captions/server/methods/editCaptions.js @@ -16,7 +16,11 @@ export default function editCaptions(padId, data) { const pad = Captions.findOne({ padId }); - if (!pad) return Logger.error(`Editing captions history: ${padId}`); + if (!pad) { + Logger.error(`Editing captions history: ${padId}`); + return; + } + const { meetingId, diff --git a/bigbluebutton-html5/imports/api/captions/server/methods/updateOwner.js b/bigbluebutton-html5/imports/api/captions/server/methods/updateOwner.js index 3608ec308511463fd09d72813e2b33f3cd969175..58ecca6d7723164e333ae1c868ba7e8100639627 100644 --- a/bigbluebutton-html5/imports/api/captions/server/methods/updateOwner.js +++ b/bigbluebutton-html5/imports/api/captions/server/methods/updateOwner.js @@ -15,7 +15,10 @@ export default function editCaptions(meetingId, userId, padId) { // TODO const pad = Captions.findOne({ meetingId, padId }); - if (!pad) return Logger.error(`Editing captions owner: ${padId}`); + if (!pad) { + Logger.error(`Editing captions owner: ${padId}`); + return; + } const { locale } = pad; diff --git a/bigbluebutton-html5/imports/api/captions/server/modifiers/addCaption.js b/bigbluebutton-html5/imports/api/captions/server/modifiers/addCaption.js index c55bd8040f84662c6112835d6d1c708cc5f96097..03358e7b215e5e240bf17c3c2589b30f1cf69e9d 100644 --- a/bigbluebutton-html5/imports/api/captions/server/modifiers/addCaption.js +++ b/bigbluebutton-html5/imports/api/captions/server/modifiers/addCaption.js @@ -26,18 +26,15 @@ export default function addCaption(meetingId, padId, locale) { length: 0, }; - const cb = (err, numChanged) => { - if (err) { - return Logger.error(`Adding caption to collection: ${err}`); - } + try { + const { insertedId, numberAffected } = Captions.upsert(selector, modifier); - const { insertedId } = numChanged; if (insertedId) { - return Logger.verbose('Captions: added locale', { locale: locale.locale, meetingId }); + Logger.verbose('Captions: added locale', { locale: locale.locale, meetingId }); + } else if (numberAffected) { + Logger.verbose('Captions: upserted locale', { locale: locale.locale, meetingId }); } - - return Logger.verbose('Captions: upserted locale', { locale: locale.locale, meetingId }); - }; - - return Captions.upsert(selector, modifier, cb); + } catch (err) { + Logger.error(`Adding caption to collection: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/captions/server/modifiers/clearCaptions.js b/bigbluebutton-html5/imports/api/captions/server/modifiers/clearCaptions.js index 06e572114d7cd6ddc3abe27033e35ff004e7d4ed..88fb90cfe24e9dbee4e59d9bada0aac33bc599a1 100644 --- a/bigbluebutton-html5/imports/api/captions/server/modifiers/clearCaptions.js +++ b/bigbluebutton-html5/imports/api/captions/server/modifiers/clearCaptions.js @@ -3,12 +3,24 @@ import Logger from '/imports/startup/server/logger'; export default function clearCaptions(meetingId) { if (meetingId) { - return Captions.remove({ meetingId }, () => { - Logger.info(`Cleared Captions (${meetingId})`); - }); - } + try { + const numberAffected = Captions.remove({ meetingId }); + + if (numberAffected) { + Logger.info(`Cleared Captions (${meetingId})`); + } + } catch (err) { + Logger.error(`Error on clearing captions (${meetingId}). ${err}`); + } + } else { + try { + const numberAffected = Captions.remove({}); - return Captions.remove({}, () => { - Logger.info('Cleared Captions (all)'); - }); + if (numberAffected) { + Logger.info('Cleared Captions (all)'); + } + } catch (err) { + Logger.error(`Error on clearing captions (all). ${err}`); + } + } } diff --git a/bigbluebutton-html5/imports/api/captions/server/modifiers/updateOwnerId.js b/bigbluebutton-html5/imports/api/captions/server/modifiers/updateOwnerId.js index 2e6b2f80ad6a5d1fa5720c37f4e732136af9b7a3..73329ad9041c4d30bf46ad9b341415ea154eb22b 100644 --- a/bigbluebutton-html5/imports/api/captions/server/modifiers/updateOwnerId.js +++ b/bigbluebutton-html5/imports/api/captions/server/modifiers/updateOwnerId.js @@ -19,13 +19,14 @@ export default function updateOwnerId(meetingId, userId, padId) { }, }; - const cb = (err) => { - if (err) { - return Logger.error('Captions: error while updating pad', { err }); - } - updateOwner(meetingId, userId, padId); - return Logger.verbose('Captions: updated caption', { padId, ownerId: userId }); - }; + try { + const numberAffected = Captions.update(selector, modifier, { multi: true }); - return Captions.update(selector, modifier, { multi: true }, cb); + if (numberAffected) { + updateOwner(meetingId, userId, padId); + Logger.verbose('Captions: updated caption', { padId, ownerId: userId }); + } + } catch (err) { + Logger.error('Captions: error while updating pad', { err }); + } } diff --git a/bigbluebutton-html5/imports/api/captions/server/modifiers/updatePad.js b/bigbluebutton-html5/imports/api/captions/server/modifiers/updatePad.js index dbe609b9fa869350194bcf9c3bebaedc26260e29..b3d3f4cc804603ed85aa4a24e7a085a294dba54c 100644 --- a/bigbluebutton-html5/imports/api/captions/server/modifiers/updatePad.js +++ b/bigbluebutton-html5/imports/api/captions/server/modifiers/updatePad.js @@ -22,13 +22,14 @@ export default function updatePad(padId, data, revs) { }, }; - const cb = (err) => { - if (err) { - return Logger.error(`Updating captions pad: ${err}`); - } - editCaptions(padId, data, revs); - return Logger.verbose('Captions: updated pad', { padId, revs }); - }; + try { + const numberAffected = Captions.update(selector, modifier, { multi: true }); - return Captions.update(selector, modifier, { multi: true }, cb); + if (numberAffected) { + editCaptions(padId, data, revs); + Logger.verbose('Captions: updated pad', { padId, revs }); + } + } catch (err) { + Logger.error(`Updating captions pad: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/captions/server/modifiers/updateReadOnlyPadId.js b/bigbluebutton-html5/imports/api/captions/server/modifiers/updateReadOnlyPadId.js index 8a172ba444e3e8d201dc325b1b734a54a928e12c..8fddb6f814559a1e6a36762d2066c0439a4bc09d 100644 --- a/bigbluebutton-html5/imports/api/captions/server/modifiers/updateReadOnlyPadId.js +++ b/bigbluebutton-html5/imports/api/captions/server/modifiers/updateReadOnlyPadId.js @@ -16,13 +16,13 @@ export default function updateReadOnlyPadId(padId, readOnlyPadId) { }, }; - const cb = (err) => { - if (err) { - return Logger.error('Captions: error when adding readOnlyPadId', { err }); - } - - return Logger.verbose('Captions: added readOnlyPadId', { padId, readOnlyPadId }); - }; + try { + const numberAffected = Captions.update(selector, modifier, { multi: true }); - return Captions.update(selector, modifier, { multi: true }, cb); + if (numberAffected) { + Logger.verbose('Captions: added readOnlyPadId', { padId, readOnlyPadId }); + } + } catch (err) { + Logger.error('Captions: error when adding readOnlyPadId', { err }); + } } diff --git a/bigbluebutton-html5/imports/api/cursor/server/handlers/cursorUpdate.js b/bigbluebutton-html5/imports/api/cursor/server/handlers/cursorUpdate.js index a3e5c2a1b07e5478626fa93ba93208a8724d66c2..6fe89e2c3e9bddc35cd65f67b4ec5e6a8165568d 100755 --- a/bigbluebutton-html5/imports/api/cursor/server/handlers/cursorUpdate.js +++ b/bigbluebutton-html5/imports/api/cursor/server/handlers/cursorUpdate.js @@ -17,9 +17,9 @@ const proccess = _.throttle(() => { delete cursorQueue[meetingId]; CursorStreamer(meetingId).emit('message', { meetingId, cursors }); - if (streamerLog) { - Logger.debug('CursorUpdate process has finished', { meetingId }); - } + // if (streamerLog) { + // Logger.debug('CursorUpdate process has finished', { meetingId }); + // } } catch (error) { Logger.error(`Error while trying to send cursor streamer data for meeting ${meetingId}. ${error}`); } diff --git a/bigbluebutton-html5/imports/api/cursor/server/modifiers/updateCursor.js b/bigbluebutton-html5/imports/api/cursor/server/modifiers/updateCursor.js index 011144b474c5ad4e1d6392f0c7ce5d20bf256894..562ec58f0f92fe8c9e589d1819fe3ae86f51324d 100644 --- a/bigbluebutton-html5/imports/api/cursor/server/modifiers/updateCursor.js +++ b/bigbluebutton-html5/imports/api/cursor/server/modifiers/updateCursor.js @@ -24,21 +24,15 @@ export default function updateCursor(meetingId, whiteboardId, userId, x = -1, y }, }; - const cb = (err, numChanged) => { - if (err) { - Logger.error(`Upserting cursor to collection: ${err}`); - return; - } + try { + const { insertedId } = Cursor.upsert(selector, modifier); - const { insertedId } = numChanged; if (insertedId) { Logger.info(`Initialized cursor meeting=${meetingId}`); - } - - if (numChanged) { + } else { Logger.debug('Updated cursor ', { meetingId }); } - }; - - return Cursor.upsert(selector, modifier, cb); + } catch (err) { + Logger.error(`Upserting cursor to collection: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/external-videos/server/methods/initializeExternalVideo.js b/bigbluebutton-html5/imports/api/external-videos/server/methods/initializeExternalVideo.js index 848fae3ebe7d25998cb2b00d0d4e47f1ee87a7b3..2106862339e5af945a28132c02ce05fb56c4d4e2 100644 --- a/bigbluebutton-html5/imports/api/external-videos/server/methods/initializeExternalVideo.js +++ b/bigbluebutton-html5/imports/api/external-videos/server/methods/initializeExternalVideo.js @@ -10,7 +10,9 @@ const allowRecentMessages = (eventName, message) => { state, } = message; - Logger.debug('ExternalVideo Streamer auth allowed', userId, meetingId, eventName, time, rate, state); + Logger.debug('ExternalVideo Streamer auth allowed', { + userId, meetingId, eventName, time, rate, state, + }); return true; }; @@ -25,6 +27,6 @@ export default function initializeExternalVideo() { streamer.allowEmit(allowRecentMessages); Logger.info(`Created External Video streamer for ${streamName}`); } else { - Logger.debug('`External Video streamer is already created', { streamName }); + Logger.debug('External Video streamer is already created', { streamName }); } } diff --git a/bigbluebutton-html5/imports/api/group-chat-msg/server/modifiers/clearGroupChatMsg.js b/bigbluebutton-html5/imports/api/group-chat-msg/server/modifiers/clearGroupChatMsg.js index f9cdd35b9e28cdbf5e9221719c4021ce179aed2e..0a295ef9c87419635042ceb5adfb80c6461b83f9 100644 --- a/bigbluebutton-html5/imports/api/group-chat-msg/server/modifiers/clearGroupChatMsg.js +++ b/bigbluebutton-html5/imports/api/group-chat-msg/server/modifiers/clearGroupChatMsg.js @@ -9,30 +9,48 @@ export default function clearGroupChatMsg(meetingId, chatId) { const CHAT_CLEAR_MESSAGE = CHAT_CONFIG.system_messages_keys.chat_clear; if (chatId) { - GroupChatMsg.remove({ meetingId, chatId }, () => { - Logger.info(`Cleared GroupChatMsg (${meetingId}, ${chatId})`); - const clearMsg = { - color: '0', - timestamp: Date.now(), - correlationId: `${PUBLIC_CHAT_SYSTEM_ID}-${Date.now()}`, - sender: { - id: PUBLIC_CHAT_SYSTEM_ID, - name: '', - }, - message: CHAT_CLEAR_MESSAGE, - }; - addGroupChatMsg(meetingId, PUBLIC_GROUP_CHAT_ID, clearMsg); - }); + try { + const numberAffected = GroupChatMsg.remove({ meetingId, chatId }); + + if (numberAffected) { + Logger.info(`Cleared GroupChatMsg (${meetingId}, ${chatId})`); + const clearMsg = { + color: '0', + timestamp: Date.now(), + correlationId: `${PUBLIC_CHAT_SYSTEM_ID}-${Date.now()}`, + sender: { + id: PUBLIC_CHAT_SYSTEM_ID, + name: '', + }, + message: CHAT_CLEAR_MESSAGE, + }; + addGroupChatMsg(meetingId, PUBLIC_GROUP_CHAT_ID, clearMsg); + } + } catch (err) { + Logger.error(`Error on clearing GroupChat (${meetingId}, ${chatId}). ${err}`); + } return true; } if (meetingId) { - return GroupChatMsg.remove({ meetingId }, () => { - Logger.info(`Cleared GroupChatMsg (${meetingId})`); - }); - } + try { + const numberAffected = GroupChatMsg.remove({ meetingId }); - return GroupChatMsg.remove({ chatId: { $eq: PUBLIC_GROUP_CHAT_ID } }, () => { - Logger.info('Cleared GroupChatMsg (all)'); - }); + if (numberAffected) { + Logger.info(`Cleared GroupChatMsg (${meetingId})`); + } + } catch (err) { + Logger.error(`Error on clearing GroupChatMsg (${meetingId}). ${err}`); + } + } else { + try { + const numberAffected = GroupChatMsg.remove({ chatId: { $eq: PUBLIC_GROUP_CHAT_ID } }); + + if (numberAffected) { + Logger.info('Cleared GroupChatMsg (all)'); + } + } catch (err) { + Logger.error(`Error on clearing GroupChatMsg (all). ${err}`); + } + } } diff --git a/bigbluebutton-html5/imports/api/group-chat-msg/server/modifiers/removeGroupChat.js b/bigbluebutton-html5/imports/api/group-chat-msg/server/modifiers/removeGroupChatMsg.js similarity index 55% rename from bigbluebutton-html5/imports/api/group-chat-msg/server/modifiers/removeGroupChat.js rename to bigbluebutton-html5/imports/api/group-chat-msg/server/modifiers/removeGroupChatMsg.js index 8166246159c7bec753a588dc1662ef70d5724002..d8a5f7c699c5c93dafab223404b41a387c404e17 100644 --- a/bigbluebutton-html5/imports/api/group-chat-msg/server/modifiers/removeGroupChat.js +++ b/bigbluebutton-html5/imports/api/group-chat-msg/server/modifiers/removeGroupChatMsg.js @@ -2,7 +2,7 @@ import { check } from 'meteor/check'; import Logger from '/imports/startup/server/logger'; import GroupChatMsg from '/imports/api/group-chat-msg'; -export default function removeGroupChat(meetingId, chatId) { +export default function removeGroupChatMsg(meetingId, chatId) { check(meetingId, String); check(chatId, String); @@ -11,16 +11,13 @@ export default function removeGroupChat(meetingId, chatId) { meetingId, }; - const cb = (err, numChanged) => { - if (err) { - Logger.error(`Removing group-chat-msg from collection: ${err}`); - return; - } + try { + const numberAffected = GroupChatMsg.remove(selector); - if (numChanged) { + if (numberAffected) { Logger.info(`Removed group-chat-msg id=${chatId} meeting=${meetingId}`); } - }; - - return GroupChatMsg.remove(selector, cb); + } catch (err) { + Logger.error(`Removing group-chat-msg from collection: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/group-chat-msg/server/modifiers/startTyping.js b/bigbluebutton-html5/imports/api/group-chat-msg/server/modifiers/startTyping.js index c15ad90f2edf92efdcab799506973a652956dfe3..494fb95677c42a168b47e09bc532ee0266e2adcf 100644 --- a/bigbluebutton-html5/imports/api/group-chat-msg/server/modifiers/startTyping.js +++ b/bigbluebutton-html5/imports/api/group-chat-msg/server/modifiers/startTyping.js @@ -17,7 +17,7 @@ export default function startTyping(meetingId, userId, chatId) { const user = Users.findOne(selector); - const mod = { + const modifier = { meetingId, userId, name: user.name, @@ -33,19 +33,19 @@ export default function startTyping(meetingId, userId, chatId) { }); if (typingUser) { - if (mod.time - typingUser.time <= TYPING_TIMEOUT - 100) return; + if (modifier.time - typingUser.time <= TYPING_TIMEOUT - 100) return; } - const cb = (err) => { - if (err) { - return Logger.error(`Typing indicator update error: ${err}`); - } - - Meteor.setTimeout(() => { - stopTyping(meetingId, userId); - }, TYPING_TIMEOUT); - return Logger.debug('Typing indicator update', { userId, chatId }); - }; + try { + const { numberAffected } = UsersTyping.upsert(selector, modifier); - return UsersTyping.upsert(selector, mod, cb); + if (numberAffected) { + Logger.debug('Typing indicator update', { userId, chatId }); + Meteor.setTimeout(() => { + stopTyping(meetingId, userId); + }, TYPING_TIMEOUT); + } + } catch (err) { + Logger.error(`Typing indicator update error: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/group-chat-msg/server/modifiers/stopTyping.js b/bigbluebutton-html5/imports/api/group-chat-msg/server/modifiers/stopTyping.js index 8b8b14a099c34ddabb9475c4958ecc5ae94d7504..5db6729dd6248581419e26f80e44645f7b8de03e 100644 --- a/bigbluebutton-html5/imports/api/group-chat-msg/server/modifiers/stopTyping.js +++ b/bigbluebutton-html5/imports/api/group-chat-msg/server/modifiers/stopTyping.js @@ -16,12 +16,13 @@ export default function stopTyping(meetingId, userId, sendMsgInitiated = false) const stillTyping = !sendMsgInitiated && user && (new Date()) - user.time < 3000; if (stillTyping) return; - const cb = (err) => { - if (err) { - return Logger.error(`Stop user=${userId} typing indicator error: ${err}`); - } - return Logger.debug('Stopped typing indicator', { userId }); - }; + try { + const numberAffected = UsersTyping.remove(selector); - UsersTyping.remove(selector, cb); + if (numberAffected) { + Logger.debug('Stopped typing indicator', { userId }); + } + } catch (err) { + Logger.error(`Stop user=${userId} typing indicator error: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/group-chat/server/handlers/groupChatCreated.js b/bigbluebutton-html5/imports/api/group-chat/server/handlers/groupChatCreated.js index 4d359c71810d68656704af822351236da5e51e34..0ba77f4ddb00127b9cf2bc01bafcadbb2d55c9a8 100644 --- a/bigbluebutton-html5/imports/api/group-chat/server/handlers/groupChatCreated.js +++ b/bigbluebutton-html5/imports/api/group-chat/server/handlers/groupChatCreated.js @@ -5,5 +5,5 @@ export default function handleGroupChatCreated({ body }, meetingId) { check(meetingId, String); check(body, Object); - return addGroupChat(meetingId, body); + addGroupChat(meetingId, body); } diff --git a/bigbluebutton-html5/imports/api/group-chat/server/handlers/groupChatDestroyed.js b/bigbluebutton-html5/imports/api/group-chat/server/handlers/groupChatDestroyed.js index 90ef8aa8868c5aa6591c67cdcbcb1ebee50608b6..b6aec3ed45d122d0917b7934c504a019ccd860ef 100644 --- a/bigbluebutton-html5/imports/api/group-chat/server/handlers/groupChatDestroyed.js +++ b/bigbluebutton-html5/imports/api/group-chat/server/handlers/groupChatDestroyed.js @@ -5,5 +5,5 @@ export default function handleGroupChatDestroyed({ body }, meetingId) { check(meetingId, String); check(body, Object); - return addGroupChat(meetingId, body); + addGroupChat(meetingId, body); } diff --git a/bigbluebutton-html5/imports/api/group-chat/server/handlers/groupChats.js b/bigbluebutton-html5/imports/api/group-chat/server/handlers/groupChats.js index d635bd274914c6e66c4664c514a7af76b7fb84cd..158fc846219bd75b4672ae4386d1cca3cc6636ba 100644 --- a/bigbluebutton-html5/imports/api/group-chat/server/handlers/groupChats.js +++ b/bigbluebutton-html5/imports/api/group-chat/server/handlers/groupChats.js @@ -7,11 +7,5 @@ export default function handleGroupChats({ body }, meetingId) { check(meetingId, String); check(chats, Array); - const chatsAdded = []; - - chats.forEach((chat) => { - chatsAdded.push(addGroupChat(meetingId, chat)); - }); - - return chatsAdded; + chats.forEach(chat => addGroupChat(meetingId, chat)); } diff --git a/bigbluebutton-html5/imports/api/group-chat/server/modifiers/addGroupChat.js b/bigbluebutton-html5/imports/api/group-chat/server/modifiers/addGroupChat.js index 75b85cae28e502a0adb85e824a508359473f5387..4b7f389d6d713c7ec76e4160f729c6f180f13646 100644 --- a/bigbluebutton-html5/imports/api/group-chat/server/modifiers/addGroupChat.js +++ b/bigbluebutton-html5/imports/api/group-chat/server/modifiers/addGroupChat.js @@ -35,19 +35,15 @@ export default function addGroupChat(meetingId, chat) { $set: flat(chatDocument, { safe: true }), }; - const cb = (err, numChanged) => { - if (err) { - return Logger.error(`Adding group-chat to collection: ${err}`); - } - - const { insertedId } = numChanged; + try { + const { insertedId } = GroupChat.upsert(selector, modifier); if (insertedId) { - return Logger.info(`Added group-chat name=${chat.name} meetingId=${meetingId}`); + Logger.info(`Added group-chat name=${chat.name} meetingId=${meetingId}`); + } else { + Logger.info(`Upserted group-chat name=${chat.name} meetingId=${meetingId}`); } - - return Logger.info(`Upserted group-chat name=${chat.name} meetingId=${meetingId}`); - }; - - return GroupChat.upsert(selector, modifier, cb); + } catch (err) { + Logger.error(`Adding group-chat to collection: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/group-chat/server/modifiers/clearGroupChat.js b/bigbluebutton-html5/imports/api/group-chat/server/modifiers/clearGroupChat.js index 91e25bcc673ef79300f2f116a9d6f529c8cc33da..2998a5ff1c211bb4133320f2b26eb254fbf1d08c 100644 --- a/bigbluebutton-html5/imports/api/group-chat/server/modifiers/clearGroupChat.js +++ b/bigbluebutton-html5/imports/api/group-chat/server/modifiers/clearGroupChat.js @@ -3,8 +3,14 @@ import Logger from '/imports/startup/server/logger'; import clearGroupChatMsg from '/imports/api/group-chat-msg/server/modifiers/clearGroupChatMsg'; export default function clearGroupChat(meetingId) { - clearGroupChatMsg(meetingId); - return GroupChat.remove({ meetingId }, () => { - Logger.info(`Cleared GroupChat (${meetingId})`); - }); + try { + clearGroupChatMsg(meetingId); + const numberAffected = GroupChat.remove({ meetingId }); + + if (numberAffected) { + Logger.info(`Cleared GroupChat (${meetingId})`); + } + } catch (err) { + Logger.error(`Error on clearing GroupChat (${meetingId}). ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/group-chat/server/modifiers/removeGroupChat.js b/bigbluebutton-html5/imports/api/group-chat/server/modifiers/removeGroupChat.js index 5433518c5af69cd842372f21c916231859bd6cf7..5aa2cff9c26d3c5c0b7487a4440e5776fc8fccd3 100644 --- a/bigbluebutton-html5/imports/api/group-chat/server/modifiers/removeGroupChat.js +++ b/bigbluebutton-html5/imports/api/group-chat/server/modifiers/removeGroupChat.js @@ -12,17 +12,14 @@ export default function removeGroupChat(meetingId, chatId) { meetingId, }; - const cb = (err, numChanged) => { - if (err) { - Logger.error(`Removing group-chat from collection: ${err}`); - return; - } + try { + const numberAffected = GroupChat.remove(selector); - if (numChanged) { + if (numberAffected) { Logger.info(`Removed group-chat id=${chatId} meeting=${meetingId}`); clearGroupChatMsg(meetingId, chatId); } - }; - - return GroupChat.remove(selector, cb); + } catch (err) { + Logger.error(`Removing group-chat from collection: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/guest-users/server/handlers/guestsWaitingForApproval.js b/bigbluebutton-html5/imports/api/guest-users/server/handlers/guestsWaitingForApproval.js index 2fa6a2bfafbd3e9a176d4e25a2edd048ab5a5944..bbd3cfe66359294abd63a933252b7c76b84a399b 100644 --- a/bigbluebutton-html5/imports/api/guest-users/server/handlers/guestsWaitingForApproval.js +++ b/bigbluebutton-html5/imports/api/guest-users/server/handlers/guestsWaitingForApproval.js @@ -14,28 +14,27 @@ export default function handleGuestsWaitingForApproval({ body }, meetingId) { check(guests, Array); check(meetingId, String); - const cb = (err, numChanged) => { - if (err) { - return Logger.error(`Adding guest user to collection: ${err}`); - } + return guests.map((guest) => { + try { + const { insertedId, numberAffected } = GuestUsers.upsert({ + meetingId, + intId: guest.intId, + }, { + approved: false, + denied: false, + ...guest, + meetingId, + loginTime: new Date().getTime(), + color: COLOR_LIST[stringHash(guest.intId) % COLOR_LIST.length], + }); - const { insertedId } = numChanged; - if (insertedId) { - return Logger.info(`Added guest user meeting=${meetingId}`); + if (insertedId) { + Logger.info(`Added guest user meeting=${meetingId}`); + } else if (numberAffected) { + Logger.info(`Upserted guest user meeting=${meetingId}`); + } + } catch (err) { + Logger.error(`Adding guest user to collection: ${err}`); } - - return Logger.info(`Upserted guest user meeting=${meetingId}`); - }; - - return guests.map(guest => GuestUsers.upsert({ - meetingId, - intId: guest.intId, - }, { - approved: false, - denied: false, - ...guest, - meetingId, - loginTime: new Date().getTime(), - color: COLOR_LIST[stringHash(guest.intId) % COLOR_LIST.length], - }, cb)); + }); } diff --git a/bigbluebutton-html5/imports/api/guest-users/server/modifiers/setGuestStatus.js b/bigbluebutton-html5/imports/api/guest-users/server/modifiers/setGuestStatus.js index 61ee93c96bf4770f3d5ec01841e5ece11398e1ff..f7632e2ac48a30dcab2fa77273ed283abb1025ac 100644 --- a/bigbluebutton-html5/imports/api/guest-users/server/modifiers/setGuestStatus.js +++ b/bigbluebutton-html5/imports/api/guest-users/server/modifiers/setGuestStatus.js @@ -21,13 +21,14 @@ export default function setGuestStatus(meetingId, intId, status, approvedBy = nu approvedBy, }, }; - const cb = (err) => { - if (err) { - return Logger.error(`Updating status=${status} user=${intId}: ${err}`); - } - return Logger.info(`Updated status=${status} user=${intId} meeting=${meetingId}`); - }; + try { + const numberAffected = GuestUsers.update(selector, modifier); - return GuestUsers.update(selector, modifier, cb); + if (numberAffected) { + Logger.info(`Updated status=${status} user=${intId} meeting=${meetingId}`); + } + } catch (err) { + Logger.error(`Updating status=${status} user=${intId}: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/local-settings/server/modifiers/clearLocalSettings.js b/bigbluebutton-html5/imports/api/local-settings/server/modifiers/clearLocalSettings.js index b07d3e11c49c88f1c1963417c07ab0c565aec7f9..971113b6ca7ac0c494ead05eff77fb3383477839 100644 --- a/bigbluebutton-html5/imports/api/local-settings/server/modifiers/clearLocalSettings.js +++ b/bigbluebutton-html5/imports/api/local-settings/server/modifiers/clearLocalSettings.js @@ -2,7 +2,13 @@ import LocalSettings from '/imports/api/local-settings'; import Logger from '/imports/startup/server/logger'; export default function clearLocalSettings(meetingId) { - return LocalSettings.remove({ meetingId }, () => { - Logger.info(`Cleared Local Settings (${meetingId})`); - }); + try { + const numberAffected = LocalSettings.remove({ meetingId }); + + if (numberAffected) { + Logger.info(`Cleared Local Settings (${meetingId})`); + } + } catch (err) { + Logger.error(`Error on clearing Local Settings (${meetingId}). ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/local-settings/server/modifiers/setChangedLocalSettings.js b/bigbluebutton-html5/imports/api/local-settings/server/modifiers/setChangedLocalSettings.js index 404a53974d441fdede82d5d481018ee69c46e6b6..eeea822f270c114d699e3fb8e96ea96a62f9a4b1 100644 --- a/bigbluebutton-html5/imports/api/local-settings/server/modifiers/setChangedLocalSettings.js +++ b/bigbluebutton-html5/imports/api/local-settings/server/modifiers/setChangedLocalSettings.js @@ -18,15 +18,13 @@ export default function setChangedLocalSettings(meetingId, userId, settings) { }, }; - const cb = (err, numChanged) => { - if (err) { - Logger.error(`${err}`); - } + try { + const { numChanged } = LocalSettings.upsert(selector, modifier); if (numChanged) { Logger.info(`Updated settings for user ${userId} on meeting ${meetingId}`); } - }; - - return LocalSettings.upsert(selector, modifier, cb); + } catch (err) { + Logger.error(`Error on update settings. ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/meetings/server/handlers/meetingLockChange.js b/bigbluebutton-html5/imports/api/meetings/server/handlers/meetingLockChange.js index ac0a065596a1395f4e508123f323486a96cefb16..7824f009589dee0761b934dec5d2cc28f57b2cba 100644 --- a/bigbluebutton-html5/imports/api/meetings/server/handlers/meetingLockChange.js +++ b/bigbluebutton-html5/imports/api/meetings/server/handlers/meetingLockChange.js @@ -1,5 +1,5 @@ import changeLockSettings from '../modifiers/changeLockSettings'; export default function handleLockSettingsInMeeting({ body }, meetingId) { - return changeLockSettings(meetingId, body); + changeLockSettings(meetingId, body); } diff --git a/bigbluebutton-html5/imports/api/meetings/server/handlers/recordingStatusChange.js b/bigbluebutton-html5/imports/api/meetings/server/handlers/recordingStatusChange.js index eff4978c975f8f3ed79d9da78980cced883d0e3f..c85809dee679ce65230c78800074c4caf0ed79ea 100644 --- a/bigbluebutton-html5/imports/api/meetings/server/handlers/recordingStatusChange.js +++ b/bigbluebutton-html5/imports/api/meetings/server/handlers/recordingStatusChange.js @@ -14,16 +14,13 @@ export default function handleRecordingStatusChange({ body }, meetingId) { $set: { recording }, }; - const cb = (err, numChanged) => { - if (err) { - Logger.error(`Changing record status: ${err}`); - return; - } + try { + const { numberAffected } = RecordMeetings.upsert(selector, modifier); - if (numChanged) { + if (numberAffected) { Logger.info(`Changed meeting record status id=${meetingId} recording=${recording}`); } - }; - - return RecordMeetings.upsert(selector, modifier, cb); + } catch (err) { + Logger.error(`Changing record status: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/meetings/server/handlers/recordingTimerChange.js b/bigbluebutton-html5/imports/api/meetings/server/handlers/recordingTimerChange.js index 9e92c566cafdf000c1767342c5372b4543bb060c..a0288941bebf174297f22e0bc2ab1b216094515f 100755 --- a/bigbluebutton-html5/imports/api/meetings/server/handlers/recordingTimerChange.js +++ b/bigbluebutton-html5/imports/api/meetings/server/handlers/recordingTimerChange.js @@ -2,7 +2,7 @@ import { check } from 'meteor/check'; import { RecordMeetings } from '/imports/api/meetings'; import Logger from '/imports/startup/server/logger'; -export default function handleRecordingStatusChange({ body }, meetingId) { +export default function handleRecordingTimerChange({ body }, meetingId) { const { time } = body; check(meetingId, String); @@ -19,11 +19,9 @@ export default function handleRecordingStatusChange({ body }, meetingId) { $set: { time }, }; - const cb = (err) => { - if (err) { - Logger.error(`Changing recording time: ${err}`); - } - }; - - return RecordMeetings.upsert(selector, modifier, cb); + try { + RecordMeetings.upsert(selector, modifier); + } catch (err) { + Logger.error(`Changing recording time: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/meetings/server/handlers/timeRemainingUpdate.js b/bigbluebutton-html5/imports/api/meetings/server/handlers/timeRemainingUpdate.js index 786018b1ed13ebd1123de97fc0c4d50e589b8222..b3f2aa96095864506a13e63df153d11d7ab657d9 100644 --- a/bigbluebutton-html5/imports/api/meetings/server/handlers/timeRemainingUpdate.js +++ b/bigbluebutton-html5/imports/api/meetings/server/handlers/timeRemainingUpdate.js @@ -20,11 +20,9 @@ export default function handleTimeRemainingUpdate({ body }, meetingId) { }, }; - const cb = (err) => { - if (err) { - Logger.error(`Changing recording time: ${err}`); - } - }; - - return MeetingTimeRemaining.upsert(selector, modifier, cb); + try { + MeetingTimeRemaining.upsert(selector, modifier); + } catch (err) { + Logger.error(`Changing recording time: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/meetings/server/handlers/userLockChange.js b/bigbluebutton-html5/imports/api/meetings/server/handlers/userLockChange.js index d3cb90629441b24d16f5a3c170098933f7d3807c..08701cddad855764961589017d2f79abffb85b51 100644 --- a/bigbluebutton-html5/imports/api/meetings/server/handlers/userLockChange.js +++ b/bigbluebutton-html5/imports/api/meetings/server/handlers/userLockChange.js @@ -1,5 +1,5 @@ import changeUserLock from '../modifiers/changeUserLock'; export default function handleLockSettingsInMeeting({ body }, meetingId) { - return changeUserLock(meetingId, body); + changeUserLock(meetingId, body); } diff --git a/bigbluebutton-html5/imports/api/meetings/server/handlers/webcamOnlyModerator.js b/bigbluebutton-html5/imports/api/meetings/server/handlers/webcamOnlyModerator.js index 2bcd51d45028709bcdf86da07bb3383df301f512..57985aa06fab69e593fcc90c24a238a08349e8c6 100644 --- a/bigbluebutton-html5/imports/api/meetings/server/handlers/webcamOnlyModerator.js +++ b/bigbluebutton-html5/imports/api/meetings/server/handlers/webcamOnlyModerator.js @@ -1,5 +1,5 @@ import changeWebcamOnlyModerator from '../modifiers/webcamOnlyModerator'; export default function handleChangeWebcamOnlyModerator({ body }, meetingId) { - return changeWebcamOnlyModerator(meetingId, body); + changeWebcamOnlyModerator(meetingId, body); } diff --git a/bigbluebutton-html5/imports/api/meetings/server/modifiers/addMeeting.js b/bigbluebutton-html5/imports/api/meetings/server/modifiers/addMeeting.js index 4dce903de39c43adc4500275f40f8e11b9bb34d1..b450ccc8460f61f27f48886a9aed30f82f24664b 100755 --- a/bigbluebutton-html5/imports/api/meetings/server/modifiers/addMeeting.js +++ b/bigbluebutton-html5/imports/api/meetings/server/modifiers/addMeeting.js @@ -148,15 +148,23 @@ export default function addMeeting(meeting) { })), }; - const cb = (err, numChanged) => { - if (err) { - Logger.error(`Adding meeting to collection: ${err}`); - return; + try { + const { insertedId, numberAffected } = RecordMeetings.upsert(selector, { meetingId, ...recordProp }); + + if (insertedId) { + Logger.info(`Added record prop id=${meetingId}`); + } else if (numberAffected) { + Logger.info(`Upserted record prop id=${meetingId}`); } + } catch (err) { + Logger.error(`Adding record prop to collection: ${err}`); + } + + try { + const { insertedId, numberAffected } = Meetings.upsert(selector, modifier); - const { - insertedId, - } = numChanged; + addAnnotationsStreamer(meetingId); + addCursorStreamer(meetingId); if (insertedId) { Logger.info(`Added meeting id=${meetingId}`); @@ -165,39 +173,10 @@ export default function addMeeting(meeting) { createNote(meetingId); createCaptions(meetingId); BannedUsers.init(meetingId); - } - - if (numChanged) { + } else if (numberAffected) { Logger.info(`Upserted meeting id=${meetingId}`); } - }; - - const cbRecord = (err, numChanged) => { - if (err) { - Logger.error(`Adding record prop to collection: ${err}`); - return; - } - - const { - insertedId, - } = numChanged; - - if (insertedId) { - Logger.info(`Added record prop id=${meetingId}`); - } - - if (numChanged) { - Logger.info(`Upserted record prop id=${meetingId}`); - } - }; - - RecordMeetings.upsert(selector, { - meetingId, - ...recordProp, - }, cbRecord); - - addAnnotationsStreamer(meetingId); - addCursorStreamer(meetingId); - - return Meetings.upsert(selector, modifier, cb); + } catch (err) { + Logger.error(`Adding meeting to collection: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/meetings/server/modifiers/changeLockSettings.js b/bigbluebutton-html5/imports/api/meetings/server/modifiers/changeLockSettings.js index 495c7ce4a6f9531a02d834d20750e4664a992e57..991a825cc8202697816fe8d1df2cb200b21bf212 100755 --- a/bigbluebutton-html5/imports/api/meetings/server/modifiers/changeLockSettings.js +++ b/bigbluebutton-html5/imports/api/meetings/server/modifiers/changeLockSettings.js @@ -51,17 +51,16 @@ export default function changeLockSettings(meetingId, payload) { }, }; - const cb = (err, numChanged) => { - if (err) { - return Logger.error(`Changing meeting={${meetingId}} lock settings: ${err}`); - } - if (!numChanged) { - return Logger.info(`meeting={${meetingId}} lock settings were not updated`); - } + try { + const { numberAffected } = Meetings.upsert(selector, modifier); - return Logger.info(`Changed meeting={${meetingId}} updated lock settings`); - }; - - return Meetings.upsert(selector, modifier, cb); + if (numberAffected) { + Logger.info(`Changed meeting={${meetingId}} updated lock settings`); + } else { + Logger.info(`meeting={${meetingId}} lock settings were not updated`); + } + } catch (err) { + Logger.error(`Changing meeting={${meetingId}} lock settings: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/meetings/server/modifiers/changeUserLock.js b/bigbluebutton-html5/imports/api/meetings/server/modifiers/changeUserLock.js index 6b2b9dd9811a56e0d1fc0d908f9f323fcdeab9e4..0dea8a3ff2bcede0642b9d5c8b1d6038bed186c7 100644 --- a/bigbluebutton-html5/imports/api/meetings/server/modifiers/changeUserLock.js +++ b/bigbluebutton-html5/imports/api/meetings/server/modifiers/changeUserLock.js @@ -23,17 +23,15 @@ export default function changeUserLock(meetingId, payload) { }, }; - const cb = (err, numChanged) => { - if (err) { - return Logger.error(`Changing user lock setting: ${err}`); - } + try { + const { numberAffected } = Users.update(selector, modifier); - if (!numChanged) { - return Logger.info(`User's userId=${userId} lock status wasn't updated`); + if (numberAffected) { + Logger.info(`User's userId=${userId} lock status was changed to: ${locked} by user userId=${lockedBy}`); + } else { + Logger.info(`User's userId=${userId} lock status wasn't updated`); } - - return Logger.info(`User's userId=${userId} lock status was changed to: ${locked} by user userId=${lockedBy}`); - }; - - return Users.update(selector, modifier, cb); + } catch (err) { + Logger.error(`Changing user lock setting: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/meetings/server/modifiers/clearRecordMeeting.js b/bigbluebutton-html5/imports/api/meetings/server/modifiers/clearRecordMeeting.js index a40625f20e58fd4390b58caa8eff9a77aa9008b7..91eb131b28b251b71b679d5438a71ecd0c261e06 100644 --- a/bigbluebutton-html5/imports/api/meetings/server/modifiers/clearRecordMeeting.js +++ b/bigbluebutton-html5/imports/api/meetings/server/modifiers/clearRecordMeeting.js @@ -2,5 +2,13 @@ import { RecordMeetings } from '/imports/api/meetings'; import Logger from '/imports/startup/server/logger'; export default function meetingHasEnded(meetingId) { - return RecordMeetings.remove({ meetingId }, () => Logger.info(`Cleared record prop from meeting with id ${meetingId}`)); + try { + const numberAffected = RecordMeetings.remove({ meetingId }); + + if (numberAffected) { + Logger.info(`Cleared record prop from meeting with id ${meetingId}`); + } + } catch (err) { + Logger.error(`Error on clearing record prop from meeting with id ${meetingId}. ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/meetings/server/modifiers/meetingHasEnded.js b/bigbluebutton-html5/imports/api/meetings/server/modifiers/meetingHasEnded.js index fc0b62796d8ed745c61be3d57aef2efef0b814c6..2e0cefbab9a4ed369bcb18198d870b997af538be 100755 --- a/bigbluebutton-html5/imports/api/meetings/server/modifiers/meetingHasEnded.js +++ b/bigbluebutton-html5/imports/api/meetings/server/modifiers/meetingHasEnded.js @@ -51,6 +51,6 @@ export default function meetingHasEnded(meetingId) { clearAuthTokenValidation(meetingId); BannedUsers.delete(meetingId); - return Logger.info(`Cleared Meetings with id ${meetingId}`); + Logger.info(`Cleared Meetings with id ${meetingId}`); }); } diff --git a/bigbluebutton-html5/imports/api/meetings/server/modifiers/setPublishedPoll.js b/bigbluebutton-html5/imports/api/meetings/server/modifiers/setPublishedPoll.js index 7bf371914f788c4e5fab82f41d9f9cc134ca29e0..c0dc92a6d21d5998fe13a9ee97b4591b732427d6 100644 --- a/bigbluebutton-html5/imports/api/meetings/server/modifiers/setPublishedPoll.js +++ b/bigbluebutton-html5/imports/api/meetings/server/modifiers/setPublishedPoll.js @@ -16,13 +16,13 @@ export default function setPublishedPoll(meetingId, isPublished) { }, }; - const cb = (err) => { - if (err != null) { - return Logger.error(`Setting publishedPoll=${isPublished} for meetingId=${meetingId}`); - } - - return Logger.info(`Set publishedPoll=${isPublished} in meeitingId=${meetingId}`); - }; + try { + const { numberAffected } = Meetings.upsert(selector, modifier); - return Meetings.upsert(selector, modifier, cb); + if (numberAffected) { + Logger.info(`Set publishedPoll=${isPublished} in meeitingId=${meetingId}`); + } + } catch (err) { + Logger.error(`Setting publishedPoll=${isPublished} for meetingId=${meetingId}`); + } } diff --git a/bigbluebutton-html5/imports/api/meetings/server/modifiers/webcamOnlyModerator.js b/bigbluebutton-html5/imports/api/meetings/server/modifiers/webcamOnlyModerator.js index ad0b9929fd7c68b4677a518f3c7bbb5a7a48ea9e..44f5ded0ac2deb53956720f3b53c715c1dbfe119 100644 --- a/bigbluebutton-html5/imports/api/meetings/server/modifiers/webcamOnlyModerator.js +++ b/bigbluebutton-html5/imports/api/meetings/server/modifiers/webcamOnlyModerator.js @@ -20,17 +20,15 @@ export default function changeWebcamOnlyModerator(meetingId, payload) { }, }; - const cb = (err, numChanged) => { - if (err) { - return Logger.error(`Changwing meeting={${meetingId}} webcam Only for Moderator: ${err}`); - } + try { + const { numberAffected } = Meetings.upsert(selector, modifier); - if (!numChanged) { - return Logger.info(`meeting={${meetingId}} webcam Only for Moderator were not updated`); + if (numberAffected) { + Logger.info(`Changed meeting={${meetingId}} updated webcam Only for Moderator`); + } else { + Logger.info(`meeting={${meetingId}} webcam Only for Moderator were not updated`); } - - return Logger.info(`Changed meeting={${meetingId}} updated webcam Only for Moderator`); - }; - - return Meetings.upsert(selector, modifier, cb); + } catch (err) { + Logger.error(`Changwing meeting={${meetingId}} webcam Only for Moderator: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/network-information/server/modifiers/clearNetworkInformation.js b/bigbluebutton-html5/imports/api/network-information/server/modifiers/clearNetworkInformation.js index c272d64ab2a27a454d253e03758dd10d50458be0..b0bd710d99239d706c7100873fc2b366d8f9c7af 100644 --- a/bigbluebutton-html5/imports/api/network-information/server/modifiers/clearNetworkInformation.js +++ b/bigbluebutton-html5/imports/api/network-information/server/modifiers/clearNetworkInformation.js @@ -3,12 +3,24 @@ import Logger from '/imports/startup/server/logger'; export default function clearNetworkInformation(meetingId) { if (meetingId) { - return NetworkInformation.remove({ meetingId }, () => { - Logger.info(`Cleared Network Information (${meetingId})`); - }); - } + try { + const numberAffected = NetworkInformation.remove({ meetingId }); + + if (numberAffected) { + Logger.info(`Cleared Network Information (${meetingId})`); + } + } catch (err) { + Logger.error(`Error on clearing Network Information (${meetingId}). ${err}`); + } + } else { + try { + const numberAffected = NetworkInformation.remove({}); - return NetworkInformation.remove({}, () => { - Logger.info('Cleared Network Information (all)'); - }); + if (numberAffected) { + Logger.info('Cleared Network Information (all)'); + } + } catch (err) { + Logger.error(`Error on clearing Network Information (all). ${err}`); + } + } } diff --git a/bigbluebutton-html5/imports/api/note/server/modifiers/addNote.js b/bigbluebutton-html5/imports/api/note/server/modifiers/addNote.js index 0cc7300c735951adc84f7e8ea28f9d28c3702ab8..a3f8ae2f6317a9e25068a0798f1825fb01d5b980 100644 --- a/bigbluebutton-html5/imports/api/note/server/modifiers/addNote.js +++ b/bigbluebutton-html5/imports/api/note/server/modifiers/addNote.js @@ -19,17 +19,15 @@ export default function addNote(meetingId, noteId, readOnlyNoteId) { revs: 0, }; - const cb = (err, numChanged) => { - if (err) { - return Logger.error(`Adding note to the collection: ${err}`); - } + try { + const { insertedId } = Note.upsert(selector, modifier); - if (numChanged) { - return Logger.info(`Added note id=${noteId} readOnlyId=${readOnlyNoteId} meeting=${meetingId}`); + if (insertedId) { + Logger.info(`Added note id=${noteId} readOnlyId=${readOnlyNoteId} meeting=${meetingId}`); + } else { + Logger.info(`Upserted note id=${noteId} readOnlyId=${readOnlyNoteId} meeting=${meetingId}`); } - - return Logger.info(`Upserted note id=${noteId} readOnlyId=${readOnlyNoteId} meeting=${meetingId}`); - }; - - return Note.upsert(selector, modifier, cb); + } catch (err) { + Logger.error(`Adding note to the collection: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/note/server/modifiers/clearNote.js b/bigbluebutton-html5/imports/api/note/server/modifiers/clearNote.js index 10f4735cc93ae384e734535db3252cbce74265cc..70766fdb20c27a10227a4a9d33622ad7d4f1104d 100644 --- a/bigbluebutton-html5/imports/api/note/server/modifiers/clearNote.js +++ b/bigbluebutton-html5/imports/api/note/server/modifiers/clearNote.js @@ -3,12 +3,24 @@ import Logger from '/imports/startup/server/logger'; export default function clearNote(meetingId) { if (meetingId) { - return Note.remove({ meetingId }, () => { - Logger.info(`Cleared Note (${meetingId})`); - }); - } + try { + const numberAffected = Note.remove({ meetingId }); + + if (numberAffected) { + Logger.info(`Cleared Note (${meetingId})`); + } + } catch (err) { + Logger.error(`Error on clearing Note (${meetingId}). ${err}`); + } + } else { + try { + const numberAffected = Note.remove({}); - return Note.remove({}, () => { - Logger.info('Cleared Note (all)'); - }); + if (numberAffected) { + Logger.info('Cleared Note (all)'); + } + } catch (err) { + Logger.error(`Error on clearing Note (all). ${err}`); + } + } } diff --git a/bigbluebutton-html5/imports/api/note/server/modifiers/updateNote.js b/bigbluebutton-html5/imports/api/note/server/modifiers/updateNote.js index 86048d534ea893efd2aa36c1178fa47159f336d4..15c263b84a007d222f07e0644900271b12ced24e 100644 --- a/bigbluebutton-html5/imports/api/note/server/modifiers/updateNote.js +++ b/bigbluebutton-html5/imports/api/note/server/modifiers/updateNote.js @@ -16,13 +16,13 @@ export default function updateNote(noteId, revs) { }, }; - const cb = (err) => { - if (err) { - return Logger.error('Notes: error when updating note pad', { err }); - } - - return Logger.verbose('Notes: update note pad', { pad: noteId, revs }); - }; + try { + const numberAffected = Note.update(selector, modifier, { multi: true }); - return Note.update(selector, modifier, { multi: true }, cb); + if (numberAffected) { + Logger.verbose('Notes: update note pad', { pad: noteId, revs }); + } + } catch (err) { + Logger.error('Notes: error when updating note pad', { err }); + } } diff --git a/bigbluebutton-html5/imports/api/polls/server/handlers/userResponded.js b/bigbluebutton-html5/imports/api/polls/server/handlers/userResponded.js index 6468f67a75aed4b0d06b2e496aa29fe1bfc3ee91..6c1b835ec0d14a7252ff27e92b2af99ebfbf28ae 100644 --- a/bigbluebutton-html5/imports/api/polls/server/handlers/userResponded.js +++ b/bigbluebutton-html5/imports/api/polls/server/handlers/userResponded.js @@ -22,14 +22,13 @@ export default function userResponded({ body }) { }, }; - const cb = (err) => { - if (err) { - return Logger.error(`Updating Poll responses: ${err}`); - } - - return Logger.info(`Updating Poll response (userId: ${userId},` - + `response: ${answerId}, pollId: ${pollId})`); - }; + try { + const numberAffected = Polls.update(selector, modifier); - return Polls.update(selector, modifier, cb); + if (numberAffected) { + Logger.info(`Updating Poll response (userId: ${userId}, response: ${answerId}, pollId: ${pollId})`); + } + } catch (err) { + Logger.error(`Updating Poll responses: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/polls/server/methods/publishVote.js b/bigbluebutton-html5/imports/api/polls/server/methods/publishVote.js index db2691352fc3fb34655b9b36c77db8b4cbb21de7..6aabfe10c656dea35ae1d307a041ed1b6badff70 100644 --- a/bigbluebutton-html5/imports/api/polls/server/methods/publishVote.js +++ b/bigbluebutton-html5/imports/api/polls/server/methods/publishVote.js @@ -48,16 +48,15 @@ export default function publishVote(pollId, pollAnswerId) { }, }; - const cb = (err) => { - if (err) { - return Logger.error(`Removing responded user from Polls collection: ${err}`); - } - - Logger.info(`Removed responded user=${requesterUserId} from poll (meetingId: ${meetingId}, ` - + `pollId: ${pollId}!)`); + try { + const numberAffected = Polls.update(selector, modifier); - return RedisPubSub.publishUserMessage(CHANNEL, EVENT_NAME, meetingId, requesterUserId, payload); - }; + if (numberAffected) { + Logger.info(`Removed responded user=${requesterUserId} from poll (meetingId: ${meetingId}, pollId: ${pollId}!)`); - Polls.update(selector, modifier, cb); + RedisPubSub.publishUserMessage(CHANNEL, EVENT_NAME, meetingId, requesterUserId, payload); + } + } catch (err) { + Logger.error(`Removing responded user from Polls collection: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/polls/server/modifiers/addPoll.js b/bigbluebutton-html5/imports/api/polls/server/modifiers/addPoll.js index 07d7457f552cc4505f9f2e3407699bf000db8fd5..1449c306ca1ac707267fd865f63dd3c7017894a4 100644 --- a/bigbluebutton-html5/imports/api/polls/server/modifiers/addPoll.js +++ b/bigbluebutton-html5/imports/api/polls/server/modifiers/addPoll.js @@ -40,18 +40,16 @@ export default function addPoll(meetingId, requesterId, poll) { flat(poll, { safe: true }), ); - const cb = (err, numChanged) => { - if (err != null) { - return Logger.error(`Adding Poll to collection: ${poll.id}`); - } - const { insertedId } = numChanged; + try { + const { insertedId } = Polls.upsert(selector, modifier); + if (insertedId) { - return Logger.info(`Added Poll id=${poll.id}`); + Logger.info(`Added Poll id=${poll.id}`); + } else { + Logger.info(`Upserted Poll id=${poll.id}`); } - - return Logger.info(`Upserted Poll id=${poll.id}`); - }; - - return Polls.upsert(selector, modifier, cb); + } catch (err) { + Logger.error(`Adding Poll to collection: ${poll.id}`); + } } diff --git a/bigbluebutton-html5/imports/api/polls/server/modifiers/clearPolls.js b/bigbluebutton-html5/imports/api/polls/server/modifiers/clearPolls.js index 67f0136f173b9ee0dbc261a724c3193ff3df5c85..141ab3b080dd14f3e1705f07e73379401f0eccea 100644 --- a/bigbluebutton-html5/imports/api/polls/server/modifiers/clearPolls.js +++ b/bigbluebutton-html5/imports/api/polls/server/modifiers/clearPolls.js @@ -3,12 +3,24 @@ import Logger from '/imports/startup/server/logger'; export default function clearPolls(meetingId) { if (meetingId) { - return Polls.remove({ meetingId }, () => { - Logger.info(`Cleared Polls (${meetingId})`); - }); - } + try { + const numberAffected = Polls.remove({ meetingId }); + + if (numberAffected) { + Logger.info(`Cleared Polls (${meetingId})`); + } + } catch (err) { + Logger.info(`Error on clearing Polls (${meetingId}). ${err}`); + } + } else { + try { + const numberAffected = Polls.remove({}); - return Polls.remove({}, () => { - Logger.info('Cleared Polls (all)'); - }); + if (numberAffected) { + Logger.info('Cleared Polls (all)'); + } + } catch (err) { + Logger.info(`Error on clearing Polls (all). ${err}`); + } + } } diff --git a/bigbluebutton-html5/imports/api/polls/server/modifiers/removePoll.js b/bigbluebutton-html5/imports/api/polls/server/modifiers/removePoll.js index 6d59f73cbde6cde7b0a61442b86eb5b3584c9441..d8f0920b58f3b4e18a30b1d19a316863c4de2df0 100644 --- a/bigbluebutton-html5/imports/api/polls/server/modifiers/removePoll.js +++ b/bigbluebutton-html5/imports/api/polls/server/modifiers/removePoll.js @@ -11,13 +11,13 @@ export default function removePoll(meetingId, id) { id, }; - const cb = (err) => { - if (err) { - return Logger.error(`Removing Poll from collection: ${err}`); - } - - return Logger.info(`Removed Poll id=${id}`); - }; + try { + const numberAffected = Polls.remove(selector); - return Polls.remove(selector, cb); + if (numberAffected) { + Logger.info(`Removed Poll id=${id}`); + } + } catch (err) { + Logger.error(`Removing Poll from collection: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/polls/server/modifiers/updateVotes.js b/bigbluebutton-html5/imports/api/polls/server/modifiers/updateVotes.js index 30815aafa1c1d1d8fc90e15f5cc983dc5de3f40d..df6aca4a1da610b3d900232c9e1f7996456117bb 100644 --- a/bigbluebutton-html5/imports/api/polls/server/modifiers/updateVotes.js +++ b/bigbluebutton-html5/imports/api/polls/server/modifiers/updateVotes.js @@ -29,13 +29,13 @@ export default function updateVotes(poll, meetingId) { $set: flat(poll, { safe: true }), }; - const cb = (err) => { - if (err) { - return Logger.error(`Updating Polls collection: ${err}`); - } - - return Logger.info(`Updating Polls collection (meetingId: ${meetingId}, pollId: ${id}!)`); - }; + try { + const numberAffected = Polls.update(selector, modifier); - return Polls.update(selector, modifier, cb); + if (numberAffected) { + Logger.info(`Updating Polls collection (meetingId: ${meetingId}, pollId: ${id}!)`); + } + } catch (err) { + Logger.error(`Updating Polls collection: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/presentation-pods/server/modifiers/addPresentationPod.js b/bigbluebutton-html5/imports/api/presentation-pods/server/modifiers/addPresentationPod.js index 55f36c59a010407ff107a96557482d4242c12542..850336c47bc929807cec0e646f65632f142992d5 100644 --- a/bigbluebutton-html5/imports/api/presentation-pods/server/modifiers/addPresentationPod.js +++ b/bigbluebutton-html5/imports/api/presentation-pods/server/modifiers/addPresentationPod.js @@ -26,22 +26,20 @@ export default function addPresentationPod(meetingId, pod, presentations = undef currentPresenterId, }; - const cb = (err, numChanged) => { - if (err) { - return Logger.error(`Adding presentation pod to the collection: ${err}`); - } + try { + const { insertedId } = PresentationPods.upsert(selector, modifier); // if it's a Sync message - continue adding the attached presentations if (presentations) { presentations.forEach(presentation => addPresentation(meetingId, podId, presentation)); } - if (numChanged) { + if (insertedId) { Logger.info(`Added presentation pod id=${podId} meeting=${meetingId}`); + } else { + Logger.info(`Upserted presentation pod id=${podId} meeting=${meetingId}`); } - - Logger.info(`Upserted presentation pod id=${podId} meeting=${meetingId}`); - }; - - return PresentationPods.upsert(selector, modifier, cb); + } catch (err) { + Logger.error(`Adding presentation pod to the collection: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/presentation-pods/server/modifiers/clearPresentationPods.js b/bigbluebutton-html5/imports/api/presentation-pods/server/modifiers/clearPresentationPods.js index 0ab763f415ad9c64510a77f97822e103e8c87071..81bea4a5119d958d311731a77970b2f5b9fa5a47 100644 --- a/bigbluebutton-html5/imports/api/presentation-pods/server/modifiers/clearPresentationPods.js +++ b/bigbluebutton-html5/imports/api/presentation-pods/server/modifiers/clearPresentationPods.js @@ -5,19 +5,28 @@ import clearPresentationUploadToken from '/imports/api/presentation-upload-token export default function clearPresentationPods(meetingId) { if (meetingId) { - return PresentationPods.remove( - { meetingId }, - () => { + try { + const numberAffected = PresentationPods.remove({ meetingId }); + + if (numberAffected) { clearPresentations(meetingId); clearPresentationUploadToken(meetingId); Logger.info(`Cleared Presentations Pods (${meetingId})`); - }, - ); - } + } + } catch (err) { + Logger.error(`Error on clearing Presentations Pods (${meetingId}). ${err}`); + } + } else { + try { + const numberAffected = PresentationPods.remove({}); - return PresentationPods.remove({}, () => { - clearPresentations(); - clearPresentationUploadToken(); - Logger.info('Cleared Presentations Pods (all)'); - }); + if (numberAffected) { + clearPresentations(); + clearPresentationUploadToken(); + Logger.info('Cleared Presentations Pods (all)'); + } + } catch (err) { + Logger.error(`Error on clearing Presentations Pods (all). ${err}`); + } + } } diff --git a/bigbluebutton-html5/imports/api/presentation-pods/server/modifiers/removePresentationPod.js b/bigbluebutton-html5/imports/api/presentation-pods/server/modifiers/removePresentationPod.js index fe9b4b938a80f1eedf50fc36c288e9d71aa9c8c9..0b933ccaa936a933c7bfd7112da6d05a78610e82 100644 --- a/bigbluebutton-html5/imports/api/presentation-pods/server/modifiers/removePresentationPod.js +++ b/bigbluebutton-html5/imports/api/presentation-pods/server/modifiers/removePresentationPod.js @@ -13,18 +13,15 @@ export default function removePresentationPod(meetingId, podId) { podId, }; - const cb = (err) => { - if (err) { - Logger.error(`Removing presentation pod from collection: ${err}`); - return; - } + try { + const numberAffected = PresentationPods.remove(selector); - if (podId) { + if (numberAffected && podId) { Logger.info(`Removed presentation pod id=${podId} meeting=${meetingId}`); clearPresentations(meetingId, podId); clearPresentationUploadToken(meetingId, podId); } - }; - - return PresentationPods.remove(selector, cb); + } catch (err) { + Logger.error(`Error on removing presentation pod from collection: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/presentation-pods/server/modifiers/setPresenterInPod.js b/bigbluebutton-html5/imports/api/presentation-pods/server/modifiers/setPresenterInPod.js index 4979cc5385e872a12194f3963d22cdf325c17d47..c8d816305979e1321261aa4be76e716b4866dcb2 100644 --- a/bigbluebutton-html5/imports/api/presentation-pods/server/modifiers/setPresenterInPod.js +++ b/bigbluebutton-html5/imports/api/presentation-pods/server/modifiers/setPresenterInPod.js @@ -18,16 +18,13 @@ export default function setPresenterInPod(meetingId, podId, nextPresenterId) { }, }; - const cb = (err, numChanged) => { - if (err) { - Logger.error(`Setting a presenter in pod: ${err}`); - return; - } + try { + const { numberAffected } = PresentationPods.upsert(selector, modifier); - if (numChanged) { + if (numberAffected) { Logger.info(`Set a new presenter in pod id=${podId} meeting=${meetingId}`); } - }; - - return PresentationPods.upsert(selector, modifier, cb); + } catch (err) { + Logger.error(`Setting a presenter in pod: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/presentation-upload-token/server/handlers/presentationUploadTokenFail.js b/bigbluebutton-html5/imports/api/presentation-upload-token/server/handlers/presentationUploadTokenFail.js index 81eca3c13aff558733a927512aeabd20330ee560..d37b98395a8f43300246428831c57bec090c6a8a 100644 --- a/bigbluebutton-html5/imports/api/presentation-upload-token/server/handlers/presentationUploadTokenFail.js +++ b/bigbluebutton-html5/imports/api/presentation-upload-token/server/handlers/presentationUploadTokenFail.js @@ -19,14 +19,13 @@ export default function handlePresentationUploadTokenFail({ body, header }, meet filename, }; - const cb = (err) => { - if (err) { - Logger.error(`Removing presentationToken from collection: ${err}`); - return; - } - - Logger.info(`Removing presentationToken filename=${filename} podId=${podId} meeting=${meetingId}`); - }; + try { + const { numberAffected } = PresentationUploadToken.upsert(selector, { failed: true, authzToken: null }); - return PresentationUploadToken.upsert(selector, { failed: true, authzToken: null }, cb); + if (numberAffected) { + Logger.info(`Removing presentationToken filename=${filename} podId=${podId} meeting=${meetingId}`); + } + } catch (err) { + Logger.error(`Removing presentationToken from collection: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/presentation-upload-token/server/handlers/presentationUploadTokenPass.js b/bigbluebutton-html5/imports/api/presentation-upload-token/server/handlers/presentationUploadTokenPass.js index 0859c5627ee31e93d33dbc06a50250f0128bd58a..c76f09a21383f08964b48df95643c35a711cefc4 100644 --- a/bigbluebutton-html5/imports/api/presentation-upload-token/server/handlers/presentationUploadTokenPass.js +++ b/bigbluebutton-html5/imports/api/presentation-upload-token/server/handlers/presentationUploadTokenPass.js @@ -20,7 +20,7 @@ export default function handlePresentationUploadTokenPass({ body, header }, meet filename, }; - const doc = { + const modifier = { meetingId, podId, userId, @@ -30,14 +30,13 @@ export default function handlePresentationUploadTokenPass({ body, header }, meet used: false, }; - const cb = (err) => { - if (err) { - Logger.error(`Inserting presentationToken from collection: ${err}`); - return; - } - - Logger.info(`Inserting presentationToken filename=${filename} podId=${podId} meeting=${meetingId}`); - }; + try { + const { insertedId } = PresentationUploadToken.upsert(selector, modifier); - return PresentationUploadToken.upsert(selector, doc, cb); + if (insertedId) { + Logger.info(`Inserting presentationToken filename=${filename} podId=${podId} meeting=${meetingId}`); + } + } catch (err) { + Logger.error(`Inserting presentationToken from collection: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/presentation-upload-token/server/methods/setUsedToken.js b/bigbluebutton-html5/imports/api/presentation-upload-token/server/methods/setUsedToken.js index 8bb0f725c97c121d0c3a6a1a64df61782196c53a..6efd96aa4837798f80c5ecc25e2c65b2036a425e 100644 --- a/bigbluebutton-html5/imports/api/presentation-upload-token/server/methods/setUsedToken.js +++ b/bigbluebutton-html5/imports/api/presentation-upload-token/server/methods/setUsedToken.js @@ -10,18 +10,18 @@ export default function setUsedToken(authzToken) { used: true, }, }; - const cb = (err) => { - if (err) { - Logger.error(`Unable to set token as used : ${err}`); - return; - } - Logger.info(`Token: ${authzToken} has been set as used in meeting=${meetingId}`); - }; + try { + const numberAffected = PresentationUploadToken.update({ + meetingId, + userId: requesterUserId, + authzToken, + }, payload); - return PresentationUploadToken.update({ - meetingId, - userId: requesterUserId, - authzToken, - }, payload, cb); + if (numberAffected) { + Logger.info(`Token: ${authzToken} has been set as used in meeting=${meetingId}`); + } + } catch (err) { + Logger.error(`Unable to set token as used : ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/presentation-upload-token/server/modifiers/clearPresentationUploadToken.js b/bigbluebutton-html5/imports/api/presentation-upload-token/server/modifiers/clearPresentationUploadToken.js index e101a21b1cd213157c3b8a5ffa76060c0a6ac7d9..8ecbb649388b3cdbc85107f524d12462709a892d 100644 --- a/bigbluebutton-html5/imports/api/presentation-upload-token/server/modifiers/clearPresentationUploadToken.js +++ b/bigbluebutton-html5/imports/api/presentation-upload-token/server/modifiers/clearPresentationUploadToken.js @@ -3,19 +3,39 @@ import Logger from '/imports/startup/server/logger'; export default function clearPresentationUploadToken(meetingId, podId) { if (meetingId && podId) { - return PresentationUploadToken.remove({ meetingId, podId }, () => { - Logger.info(`Cleared Presentations Upload Token (${meetingId}, ${podId})`); - }); + try { + const numberAffected = PresentationUploadToken.remove({ meetingId, podId }); + + if (numberAffected) { + Logger.info(`Cleared Presentations Upload Token (${meetingId}, ${podId})`); + return true; + } + } catch (err) { + Logger.info(`Error on clearing Presentations Upload Token (${meetingId}, ${podId}). ${err}`); + return false; + } } if (meetingId) { - return PresentationUploadToken.remove({ meetingId }, () => { - Logger.info(`Cleared Presentations Upload Token (${meetingId})`); - }); - } + try { + const numberAffected = PresentationUploadToken.remove({ meetingId }); - // clearing presentations for the whole server - return PresentationUploadToken.remove({}, () => { - Logger.info('Cleared Presentations Upload Token (all)'); - }); + if (numberAffected) { + Logger.info(`Cleared Presentations Upload Token (${meetingId})`); + } + } catch (err) { + Logger.info(`Error on clearing Presentations Upload Token (${meetingId}). ${err}`); + } + } else { + try { + // clearing presentations for the whole server + const numberAffected = PresentationUploadToken.remove({}); + + if (numberAffected) { + Logger.info('Cleared Presentations Upload Token (all)'); + } + } catch (err) { + Logger.info(`Error on clearing Presentations Upload Token (all). ${err}`); + } + } } diff --git a/bigbluebutton-html5/imports/api/presentations/server/handlers/presentationConversionUpdate.js b/bigbluebutton-html5/imports/api/presentations/server/handlers/presentationConversionUpdate.js index b727afbd64fbd23e332491dc0446fdba0d05131b..96bd6b576102252c1390a5e53e9a6cf41a035cea 100755 --- a/bigbluebutton-html5/imports/api/presentations/server/handlers/presentationConversionUpdate.js +++ b/bigbluebutton-html5/imports/api/presentations/server/handlers/presentationConversionUpdate.js @@ -73,18 +73,15 @@ export default function handlePresentationConversionUpdate({ body }, meetingId) $set: Object.assign({ meetingId, podId }, statusModifier), }; - const cb = (err, numChanged) => { - if (err) { - return Logger.error(`Updating conversion status presentation to collection: ${err}`); - } + try { + const { insertedId } = Presentations.upsert(selector, modifier); - const { insertedId } = numChanged; if (insertedId) { - return Logger.info(`Updated presentation conversion status=${status} id=${presentationId} meeting=${meetingId}`); + Logger.info(`Updated presentation conversion status=${status} id=${presentationId} meeting=${meetingId}`); + } else { + Logger.debug('Upserted presentation conversion', { status, presentationId, meetingId }); } - - return Logger.debug('Upserted presentation conversion', { status, presentationId, meetingId }); - }; - - return Presentations.upsert(selector, modifier, cb); + } catch (err) { + Logger.error(`Updating conversion status presentation to collection: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/presentations/server/modifiers/addPresentation.js b/bigbluebutton-html5/imports/api/presentations/server/modifiers/addPresentation.js index a9c7f689f0d2d0c0fd17409d90686c43ab3da833..2050e9ee52e931f782f43f7247a4247e3467049e 100755 --- a/bigbluebutton-html5/imports/api/presentations/server/modifiers/addPresentation.js +++ b/bigbluebutton-html5/imports/api/presentations/server/modifiers/addPresentation.js @@ -66,24 +66,20 @@ export default function addPresentation(meetingId, podId, presentation) { }, flat(presentation, { safe: true })), }; - const cb = (err, numChanged) => { - if (err) { - return Logger.error(`Adding presentation to collection: ${err}`); - } + try { + const { insertedId } = Presentations.upsert(selector, modifier); addSlides(meetingId, podId, presentation.id, presentation.pages); - const { insertedId } = numChanged; if (insertedId) { if (presentation.current) { setCurrentPresentation(meetingId, podId, presentation.id); + Logger.info(`Added presentation id=${presentation.id} meeting=${meetingId}`); + } else { + Logger.info(`Upserted presentation id=${presentation.id} meeting=${meetingId}`); } - - return Logger.info(`Added presentation id=${presentation.id} meeting=${meetingId}`); } - - return Logger.info(`Upserted presentation id=${presentation.id} meeting=${meetingId}`); - }; - - return Presentations.upsert(selector, modifier, cb); + } catch (err) { + Logger.error(`Adding presentation to collection: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/presentations/server/modifiers/clearPresentations.js b/bigbluebutton-html5/imports/api/presentations/server/modifiers/clearPresentations.js index d7ec7b9908118935a9eccfe4b203628610a9c36a..e8a788542303567d225928c0baa18b4ddf03378c 100644 --- a/bigbluebutton-html5/imports/api/presentations/server/modifiers/clearPresentations.js +++ b/bigbluebutton-html5/imports/api/presentations/server/modifiers/clearPresentations.js @@ -4,20 +4,39 @@ import Logger from '/imports/startup/server/logger'; export default function clearPresentations(meetingId, podId) { // clearing presentations for 1 pod if (meetingId && podId) { - return Presentations.remove({ meetingId, podId }, () => { - Logger.info(`Cleared Presentations (${meetingId}, ${podId})`); - }); + try { + const numberAffected = Presentations.remove({ meetingId, podId }); + + if (numberAffected) { + Logger.info(`Cleared Presentations (${meetingId}, ${podId})`); + return true; + } + } catch (err) { + Logger.error(`Error on cleaning Presentations (${meetingId}, ${podId}). ${err}`); + return false; + } } // clearing presentations for the whole meeting if (meetingId) { - return Presentations.remove({ meetingId }, () => { - Logger.info(`Cleared Presentations (${meetingId})`); - }); - } + try { + const numberAffected = Presentations.remove({ meetingId }); - // clearing presentations for the whole server - return Presentations.remove({}, () => { - Logger.info('Cleared Presentations (all)'); - }); + if (numberAffected) { + Logger.info(`Cleared Presentations (${meetingId})`); + } + } catch (err) { + Logger.error(`Error on cleaning Presentations (${meetingId}). ${err}`); + } + } else { + try { + const numberAffected = Presentations.remove({}); + + if (numberAffected) { + Logger.info('Cleared Presentations (all)'); + } + } catch (err) { + Logger.error(`Error on cleaning Presentations (all). ${err}`); + } + } } diff --git a/bigbluebutton-html5/imports/api/presentations/server/modifiers/removePresentation.js b/bigbluebutton-html5/imports/api/presentations/server/modifiers/removePresentation.js index cb3748a7abeafefeea558391a29458d6db8b055f..6ed2c3f9cf302a3ab4c75dc2606d0dd4b91eef46 100644 --- a/bigbluebutton-html5/imports/api/presentations/server/modifiers/removePresentation.js +++ b/bigbluebutton-html5/imports/api/presentations/server/modifiers/removePresentation.js @@ -15,17 +15,14 @@ export default function removePresentation(meetingId, podId, presentationId) { id: presentationId, }; - const cb = (err, numChanged) => { - if (err) { - Logger.error(`Removing presentation from collection: ${err}`); - return; - } + try { + const numberAffected = Presentations.remove(selector); - if (numChanged) { + if (numberAffected) { clearSlidesPresentation(meetingId, presentationId); Logger.info(`Removed presentation id=${presentationId} meeting=${meetingId}`); } - }; - - return Presentations.remove(selector, cb); + } catch (err) { + Logger.error(`Removing presentation from collection: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/presentations/server/modifiers/setCurrentPresentation.js b/bigbluebutton-html5/imports/api/presentations/server/modifiers/setCurrentPresentation.js index a741eb237487524435f03577be4d1d140d4594fd..32a33a6354637a46683621b8d163b2577f8c749a 100644 --- a/bigbluebutton-html5/imports/api/presentations/server/modifiers/setCurrentPresentation.js +++ b/bigbluebutton-html5/imports/api/presentations/server/modifiers/setCurrentPresentation.js @@ -18,10 +18,11 @@ export default function setCurrentPresentation(meetingId, podId, presentationId) }, callback: (err) => { if (err) { - return Logger.error(`Unsetting the current presentation: ${err}`); + Logger.error(`Unsetting the current presentation: ${err}`); + return; } - return Logger.info('Unsetted as current presentation'); + Logger.info('Unsetted as current presentation'); }, }; @@ -36,10 +37,11 @@ export default function setCurrentPresentation(meetingId, podId, presentationId) }, callback: (err) => { if (err) { - return Logger.error(`Setting as current presentation id=${presentationId}: ${err}`); + Logger.error(`Setting as current presentation id=${presentationId}: ${err}`); + return; } - return Logger.info(`Setted as current presentation id=${presentationId}`); + Logger.info(`Setted as current presentation id=${presentationId}`); }, }; diff --git a/bigbluebutton-html5/imports/api/presentations/server/modifiers/setPresentationDownloadable.js b/bigbluebutton-html5/imports/api/presentations/server/modifiers/setPresentationDownloadable.js index b61eabba17fd3450dc9eb566dc5edf944fe53c77..3a7397016fac66499fb2a7061a0131da1e211a9a 100644 --- a/bigbluebutton-html5/imports/api/presentations/server/modifiers/setPresentationDownloadable.js +++ b/bigbluebutton-html5/imports/api/presentations/server/modifiers/setPresentationDownloadable.js @@ -21,16 +21,13 @@ export default function setPresentationDownloadable(meetingId, podId, }, }; - const cb = (err, numChanged) => { - if (err) { - Logger.error(`Could not set downloadable on pres {${presentationId} in meeting {${meetingId}} ${err}`); - return; - } + try { + const { numberAffected } = Presentations.upsert(selector, modifier); - if (numChanged) { + if (numberAffected) { Logger.info(`Set downloadable status on presentation {${presentationId} in meeting {${meetingId}}`); } - }; - - return Presentations.upsert(selector, modifier, cb); + } catch (err) { + Logger.error(`Could not set downloadable on pres {${presentationId} in meeting {${meetingId}} ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/screenshare/server/modifiers/addScreenshare.js b/bigbluebutton-html5/imports/api/screenshare/server/modifiers/addScreenshare.js index e1c38b9d18d0deca246dea55076be92056227cc1..4ed513d7b454b4d3bd8931a21ccdc6a19f103766 100644 --- a/bigbluebutton-html5/imports/api/screenshare/server/modifiers/addScreenshare.js +++ b/bigbluebutton-html5/imports/api/screenshare/server/modifiers/addScreenshare.js @@ -17,13 +17,13 @@ export default function addScreenshare(meetingId, body) { }, }; - const cb = (err) => { - if (err) { - return Logger.error(`Adding screenshare to collection: ${err}`); - } - - return Logger.info(`Upserted screenshare id=${body.screenshareConf}`); - }; + try { + const { numberAffected } = Screenshare.upsert(selector, modifier); - return Screenshare.upsert(selector, modifier, cb); + if (numberAffected) { + Logger.info(`Upserted screenshare id=${body.screenshareConf}`); + } + } catch (err) { + Logger.error(`Adding screenshare to collection: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/screenshare/server/modifiers/clearScreenshare.js b/bigbluebutton-html5/imports/api/screenshare/server/modifiers/clearScreenshare.js index 0b7265a69716656b8ef3ac7c5407fc2973ef9acc..06797304812187738cba48fc0278ec96fe721139 100644 --- a/bigbluebutton-html5/imports/api/screenshare/server/modifiers/clearScreenshare.js +++ b/bigbluebutton-html5/imports/api/screenshare/server/modifiers/clearScreenshare.js @@ -2,16 +2,19 @@ import Logger from '/imports/startup/server/logger'; import Screenshare from '/imports/api/screenshare'; export default function clearScreenshare(meetingId, screenshareConf) { - const cb = (err) => { - if (err) { - return Logger.error(`removing screenshare to collection: ${err}`); - } + try { + let numberAffected; - return Logger.info(`removed screenshare meetingId=${meetingId} id=${screenshareConf}`); - }; + if (meetingId && screenshareConf) { + numberAffected = Screenshare.remove({ meetingId, 'screenshare.screenshareConf': screenshareConf }); + } else { + numberAffected = Screenshare.remove({}); + } - if (meetingId && screenshareConf) { - return Screenshare.remove({ meetingId, 'screenshare.screenshareConf': screenshareConf }, cb); + if (numberAffected) { + Logger.info(`removed screenshare meetingId=${meetingId} id=${screenshareConf}`); + } + } catch (err) { + Logger.error(`removing screenshare to collection: ${err}`); } - return Screenshare.remove({}, cb); } diff --git a/bigbluebutton-html5/imports/api/slides/server/modifiers/addSlide.js b/bigbluebutton-html5/imports/api/slides/server/modifiers/addSlide.js index e361d37b2d9819a82ac287587570159f1c8f43e5..64345cd31310d9d01bf4f268be6027a4d3aee01d 100755 --- a/bigbluebutton-html5/imports/api/slides/server/modifiers/addSlide.js +++ b/bigbluebutton-html5/imports/api/slides/server/modifiers/addSlide.js @@ -91,22 +91,6 @@ export default function addSlide(meetingId, podId, presentationId, slide) { ), }; - const cb = (err, numChanged) => { - if (err) { - return Logger.error(`Adding slide to collection: ${err}`); - } - - const { insertedId } = numChanged; - - requestWhiteboardHistory(meetingId, slideId); - - if (insertedId) { - return Logger.info(`Added slide id=${slideId} pod=${podId} presentation=${presentationId}`); - } - - return Logger.info(`Upserted slide id=${slideId} pod=${podId} presentation=${presentationId}`); - }; - const imageSizeUri = (loadSlidesFromHttpAlways ? imageUri.replace(/^https/i, 'http') : imageUri); return fetchImageSizes(imageSizeUri) @@ -129,7 +113,19 @@ export default function addSlide(meetingId, podId, presentationId, slide) { addSlidePositions(meetingId, podId, presentationId, slideId, slidePosition); } - return Slides.upsert(selector, modifier, cb); + try { + const { insertedId, numberAffected } = Slides.upsert(selector, modifier); + + requestWhiteboardHistory(meetingId, slideId); + + if (insertedId) { + Logger.info(`Added slide id=${slideId} pod=${podId} presentation=${presentationId}`); + } else if (numberAffected) { + Logger.info(`Upserted slide id=${slideId} pod=${podId} presentation=${presentationId}`); + } + } catch (err) { + Logger.error(`Error on adding slide to collection: ${err}`); + } }) .catch(reason => Logger.error(`Error parsing image size. ${reason}. slide=${slideId} uri=${imageUri}`)); } diff --git a/bigbluebutton-html5/imports/api/slides/server/modifiers/addSlidePositions.js b/bigbluebutton-html5/imports/api/slides/server/modifiers/addSlidePositions.js index be4c94d6802e9b4c24ee7f2f8d1915778e6446f2..8ffa36a798256cde13daa91a69cea5e1ed735ea6 100755 --- a/bigbluebutton-html5/imports/api/slides/server/modifiers/addSlidePositions.js +++ b/bigbluebutton-html5/imports/api/slides/server/modifiers/addSlidePositions.js @@ -42,19 +42,15 @@ export default function addSlidePositions( ), }; - const cb = (err, numChanged) => { - if (err) { - return Logger.error(`Adding slide position to collection: ${err}`); - } - - const { insertedId } = numChanged; + try { + const { insertedId } = SlidePositions.upsert(selector, modifier); if (insertedId) { - return Logger.info(`Added slide position id=${slideId} pod=${podId} presentation=${presentationId}`); + Logger.info(`Added slide position id=${slideId} pod=${podId} presentation=${presentationId}`); + } else { + Logger.info(`Upserted slide position id=${slideId} pod=${podId} presentation=${presentationId}`); } - - return Logger.info(`Upserted slide position id=${slideId} pod=${podId} presentation=${presentationId}`); - }; - - return SlidePositions.upsert(selector, modifier, cb); + } catch (err) { + Logger.error(`Adding slide position to collection: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/slides/server/modifiers/changeCurrentSlide.js b/bigbluebutton-html5/imports/api/slides/server/modifiers/changeCurrentSlide.js index 2a73fc6cae5390dc94c1a39ff03f4aaa674f460c..a83e7b5e56cb18395b7396ff5a8f471cd2f53e3a 100755 --- a/bigbluebutton-html5/imports/api/slides/server/modifiers/changeCurrentSlide.js +++ b/bigbluebutton-html5/imports/api/slides/server/modifiers/changeCurrentSlide.js @@ -20,10 +20,11 @@ export default function changeCurrentSlide(meetingId, podId, presentationId, sli }, callback: (err) => { if (err) { - return Logger.error(`Unsetting the current slide: ${err}`); + Logger.error(`Unsetting the current slide: ${err}`); + return; } - return Logger.info('Unsetted the current slide'); + Logger.info('Unsetted the current slide'); }, }; @@ -39,10 +40,11 @@ export default function changeCurrentSlide(meetingId, podId, presentationId, sli }, callback: (err) => { if (err) { - return Logger.error(`Setting as current slide id=${slideId}: ${err}`); + Logger.error(`Setting as current slide id=${slideId}: ${err}`); + return; } - return Logger.info(`Setted as current slide id=${slideId}`); + Logger.info(`Setted as current slide id=${slideId}`); }, }; diff --git a/bigbluebutton-html5/imports/api/slides/server/modifiers/clearSlides.js b/bigbluebutton-html5/imports/api/slides/server/modifiers/clearSlides.js index 5c04c77c837e1cc1e87dfd13b0baa3d1e41c1417..d0ee149a27ba3623db7f73b8312c7bb48b50afbb 100755 --- a/bigbluebutton-html5/imports/api/slides/server/modifiers/clearSlides.js +++ b/bigbluebutton-html5/imports/api/slides/server/modifiers/clearSlides.js @@ -3,20 +3,36 @@ import Logger from '/imports/startup/server/logger'; export default function clearSlides(meetingId) { if (meetingId) { - SlidePositions.remove({ meetingId }, () => { - Logger.info(`Cleared SlidePositions (${meetingId})`); - }); + try { + const numberAffectedSlidePositions = SlidePositions.remove({ meetingId }); - return Slides.remove({ meetingId }, () => { - Logger.info(`Cleared Slides (${meetingId})`); - }); - } + const numberAffected = Slides.remove({ meetingId }); + + if (numberAffectedSlidePositions) { + Logger.info(`Cleared SlidePositions (${meetingId})`); + } + + if (numberAffected) { + Logger.info(`Cleared Slides (${meetingId})`); + } + } catch (err) { + Logger.error(`Error on cleaning Slides (${meetingId}). ${err}`); + } + } else { + try { + const numberAffectedSlidePositions = SlidePositions.remove({ meetingId }); - SlidePositions.remove({}, () => { - Logger.info('Cleared SlidePositions (all)'); - }); + const numberAffected = Slides.remove({ meetingId }); - return Slides.remove({}, () => { - Logger.info('Cleared Slides (all)'); - }); + if (numberAffectedSlidePositions) { + Logger.info(`Cleared SlidePositions (${meetingId})`); + } + + if (numberAffected) { + Logger.info('Cleared Slides (all)'); + } + } catch (err) { + Logger.error(`Error on cleaning Slides (all). ${err}`); + } + } } diff --git a/bigbluebutton-html5/imports/api/slides/server/modifiers/clearSlidesPresentation.js b/bigbluebutton-html5/imports/api/slides/server/modifiers/clearSlidesPresentation.js index 1413750d46dd70f0d9c4bd06f61a179c81862e47..38033ba00edf43e397d3511995b45a377062532b 100755 --- a/bigbluebutton-html5/imports/api/slides/server/modifiers/clearSlidesPresentation.js +++ b/bigbluebutton-html5/imports/api/slides/server/modifiers/clearSlidesPresentation.js @@ -14,17 +14,17 @@ export default function clearSlidesPresentation(meetingId, presentationId) { const whiteboardIds = Slides.find(selector, { fields: { id: 1 } }).map(row => row.id); - const cb = (err) => { - if (err) { - return Logger.error(`Removing Slides from collection: ${err}`); - } - - whiteboardIds.forEach(whiteboardId => clearAnnotations(meetingId, whiteboardId)); + try { + SlidePositions.remove(selector); - return Logger.info(`Removed Slides where presentationId=${presentationId}`); - }; + const numberAffected = Slides.remove(selector); - SlidePositions.remove(selector); + if (numberAffected) { + whiteboardIds.forEach(whiteboardId => clearAnnotations(meetingId, whiteboardId)); - return Slides.remove(selector, cb); + Logger.info(`Removed Slides where presentationId=${presentationId}`); + } + } catch (err) { + Logger.error(`Removing Slides from collection: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/slides/server/modifiers/resizeSlide.js b/bigbluebutton-html5/imports/api/slides/server/modifiers/resizeSlide.js index 26f6af81a90b49923b0ff012ee1082a7ce2a7ab6..19da39973e2885a1b04e73ee825e44e0521c8932 100755 --- a/bigbluebutton-html5/imports/api/slides/server/modifiers/resizeSlide.js +++ b/bigbluebutton-html5/imports/api/slides/server/modifiers/resizeSlide.js @@ -48,18 +48,16 @@ export default function resizeSlide(meetingId, slide) { $set: calculatedData, }; - const cb = (err, numChanged) => { - if (err) { - return Logger.error(`Resizing slide positions id=${pageId}: ${err}`); - } + try { + const numberAffected = SlidePositions.update(selector, modifier); - if (numChanged) { - return true; + if (numberAffected) { + Logger.debug(`Resized slide positions id=${pageId}`); + } else { + Logger.info(`No slide positions found with id=${pageId}`); } - - return Logger.info(`No slide positions found with id=${pageId}`); - }; - - return SlidePositions.update(selector, modifier, cb); + } catch (err) { + Logger.error(`Resizing slide positions id=${pageId}: ${err}`); + } } } diff --git a/bigbluebutton-html5/imports/api/users-infos/server/methods/removeUserInformation.js b/bigbluebutton-html5/imports/api/users-infos/server/methods/removeUserInformation.js index 6bfd197f84b3307faf706458cc25e3b3f4db8f4c..4e35bbbb455c58b94bc994fcac98e0cd0fc4db81 100644 --- a/bigbluebutton-html5/imports/api/users-infos/server/methods/removeUserInformation.js +++ b/bigbluebutton-html5/imports/api/users-infos/server/methods/removeUserInformation.js @@ -8,11 +8,14 @@ export default function removeUserInformation() { meetingId, requesterUserId, }; - const cb = (err) => { - if (err) { - return Logger.error(`Removing user information from collection: ${err}`); + + try { + const numberAffected = UserInfos.remove(selector); + + if (numberAffected) { + Logger.info(`Removed user information: requester id=${requesterUserId} meeting=${meetingId}`); } - return Logger.info(`Removed user information: requester id=${requesterUserId} meeting=${meetingId}`); - }; - return UserInfos.remove(selector, cb); + } catch (err) { + Logger.error(`Removing user information from collection: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/users-infos/server/modifiers/addUserInfo.js b/bigbluebutton-html5/imports/api/users-infos/server/modifiers/addUserInfo.js index 034d4085e41b067df9d812f1eaf7674fc6650391..ca1491cf25726f6e1f22cf87c755df2eed50e7de 100644 --- a/bigbluebutton-html5/imports/api/users-infos/server/modifiers/addUserInfo.js +++ b/bigbluebutton-html5/imports/api/users-infos/server/modifiers/addUserInfo.js @@ -7,12 +7,14 @@ export default function addUserInfo(userInfo, requesterUserId, meetingId) { requesterUserId, userInfo, }; - const cb = (err) => { - if (err) { - return Logger.error(`Adding user information to collection: ${err}`); - } - return Logger.info(`Added user information: requester id=${requesterUserId} meeting=${meetingId}`); - }; - return UserInfos.insert(info, cb); + try { + const numberAffected = UserInfos.insert(info); + + if (numberAffected) { + Logger.info(`Added user information: requester id=${requesterUserId} meeting=${meetingId}`); + } + } catch (err) { + Logger.error(`Adding user information to collection: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/users-infos/server/modifiers/clearUserInfo.js b/bigbluebutton-html5/imports/api/users-infos/server/modifiers/clearUserInfo.js index 30480202c238c10c3ac4eeb50bbe33bc889d44dd..1ad70fbf7738931ae3559997d3361640cadf6e9e 100644 --- a/bigbluebutton-html5/imports/api/users-infos/server/modifiers/clearUserInfo.js +++ b/bigbluebutton-html5/imports/api/users-infos/server/modifiers/clearUserInfo.js @@ -2,7 +2,13 @@ import UserInfos from '/imports/api/users-infos'; import Logger from '/imports/startup/server/logger'; export default function clearUsersInfo(meetingId) { - return UserInfos.remove({ meetingId }, () => { - Logger.info(`Cleared User Infos (${meetingId})`); - }); + try { + const numberAffected = UserInfos.remove({ meetingId }); + + if (numberAffected) { + Logger.info(`Cleared User Infos (${meetingId})`); + } + } catch (err) { + Logger.error(`Error on clearing User Infos (${meetingId}). ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/users-infos/server/modifiers/clearUserInfoForRequester.js b/bigbluebutton-html5/imports/api/users-infos/server/modifiers/clearUserInfoForRequester.js index aff7531193012567ab06a1c68863296550e36d51..ee605005418a7b6e96576d79d6cc5f043af0212b 100644 --- a/bigbluebutton-html5/imports/api/users-infos/server/modifiers/clearUserInfoForRequester.js +++ b/bigbluebutton-html5/imports/api/users-infos/server/modifiers/clearUserInfoForRequester.js @@ -2,7 +2,13 @@ import UserInfos from '/imports/api/users-infos'; import Logger from '/imports/startup/server/logger'; export default function clearUsersInfoForRequester(meetingId, requesterUserId) { - return UserInfos.remove({ meetingId }, () => { - Logger.info(`Cleared User Infos requested by user=${requesterUserId}`); - }); + try { + const numberAffected = UserInfos.remove({ meetingId }); + + if (numberAffected) { + Logger.info(`Cleared User Infos requested by user=${requesterUserId}`); + } + } catch (err) { + Logger.info(`Error on clearing User Infos requested by user=${requesterUserId}. ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/users-settings/server/modifiers/addUserSetting.js b/bigbluebutton-html5/imports/api/users-settings/server/modifiers/addUserSetting.js index 80ad1869b7c4154cb28e66ed4ab9596b53acfe81..e93a469af4fd7f5f37d340d1bc2ecc231df3a028 100644 --- a/bigbluebutton-html5/imports/api/users-settings/server/modifiers/addUserSetting.js +++ b/bigbluebutton-html5/imports/api/users-settings/server/modifiers/addUserSetting.js @@ -22,13 +22,13 @@ export default function addUserSetting(meetingId, userId, setting, value) { }, }; - const cb = (err) => { - if (err) { - return Logger.error(`Adding user setting to collection: ${err}`); - } - - return Logger.verbose('Upserted user setting', { meetingId, userId, setting }); - }; + try { + const { numberAffected } = UserSettings.upsert(selector, modifier); - return UserSettings.upsert(selector, modifier, cb); + if (numberAffected) { + Logger.verbose('Upserted user setting', { meetingId, userId, setting }); + } + } catch (err) { + Logger.error(`Adding user setting to collection: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/users-settings/server/modifiers/clearUsersSettings.js b/bigbluebutton-html5/imports/api/users-settings/server/modifiers/clearUsersSettings.js index 887d6d25ba93d7461f57e2f62d22699426168626..8aa62c9575337a719fdcb240435d691537df2c73 100644 --- a/bigbluebutton-html5/imports/api/users-settings/server/modifiers/clearUsersSettings.js +++ b/bigbluebutton-html5/imports/api/users-settings/server/modifiers/clearUsersSettings.js @@ -2,7 +2,13 @@ import UserSettings from '/imports/api/users-settings'; import Logger from '/imports/startup/server/logger'; export default function clearUsersSettings(meetingId) { - return UserSettings.remove({ meetingId }, () => { - Logger.info(`Cleared User Settings (${meetingId})`); - }); + try { + const numberAffected = UserSettings.remove({ meetingId }); + + if (numberAffected) { + Logger.info(`Cleared User Settings (${meetingId})`); + } + } catch (err) { + Logger.error(`Error on clearing User Settings (${meetingId}). ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/users/server/handlers/changeRole.js b/bigbluebutton-html5/imports/api/users/server/handlers/changeRole.js index 143fb4b51c741cd00ba464e55a220c1a4cc7ecdb..4148a8d94c5da734bb0b4904977fbcde34887f0e 100644 --- a/bigbluebutton-html5/imports/api/users/server/handlers/changeRole.js +++ b/bigbluebutton-html5/imports/api/users/server/handlers/changeRole.js @@ -7,5 +7,5 @@ export default function handleChangeRole(payload, meetingId) { const { userId, role, changedBy } = payload.body; - return changeRole(role, userId, meetingId, changedBy); + changeRole(role, userId, meetingId, changedBy); } diff --git a/bigbluebutton-html5/imports/api/users/server/handlers/emojiStatus.js b/bigbluebutton-html5/imports/api/users/server/handlers/emojiStatus.js index 7fe2a87a17a31a4b65f8b8df708722e622e1cb8a..4aad07c6b46489d9bd2d31af6f8dcc27acaba06c 100644 --- a/bigbluebutton-html5/imports/api/users/server/handlers/emojiStatus.js +++ b/bigbluebutton-html5/imports/api/users/server/handlers/emojiStatus.js @@ -20,16 +20,13 @@ export default function handleEmojiStatus({ body }, meetingId) { }, }; - const cb = (err, numChanged) => { - if (err) { - Logger.error(`Assigning user emoji status: ${err}`); - return; - } + try { + const numberAffected = Users.update(selector, modifier); - if (numChanged) { + if (numberAffected) { Logger.info(`Assigned user emoji status ${emoji} id=${userId} meeting=${meetingId}`); } - }; - - return Users.update(selector, modifier, cb); + } catch (err) { + Logger.error(`Assigning user emoji status: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/users/server/handlers/presenterAssigned.js b/bigbluebutton-html5/imports/api/users/server/handlers/presenterAssigned.js index 5cdbac7ccf2dc771f1be6bcdc0928ae432116c74..0018feea4c6755ce165398648e9c802db7e7a0da 100644 --- a/bigbluebutton-html5/imports/api/users/server/handlers/presenterAssigned.js +++ b/bigbluebutton-html5/imports/api/users/server/handlers/presenterAssigned.js @@ -61,5 +61,5 @@ export default function handlePresenterAssigned({ body }, meetingId) { return true; } - return changePresenter(false, prevPresenter.userId, meetingId, assignedBy); + changePresenter(false, prevPresenter.userId, meetingId, assignedBy); } diff --git a/bigbluebutton-html5/imports/api/users/server/handlers/userEjected.js b/bigbluebutton-html5/imports/api/users/server/handlers/userEjected.js index 95568f555fc2eced0027f077873afbcd26861e43..c665c9720cfb428b9a14996258f82240c7e5e58c 100644 --- a/bigbluebutton-html5/imports/api/users/server/handlers/userEjected.js +++ b/bigbluebutton-html5/imports/api/users/server/handlers/userEjected.js @@ -4,5 +4,5 @@ export default function handleEjectedUser({ header, body }) { const { meetingId, userId } = header; const { reasonCode } = body; - return userEjected(meetingId, userId, reasonCode); + userEjected(meetingId, userId, reasonCode); } diff --git a/bigbluebutton-html5/imports/api/users/server/handlers/userInactivityInspect.js b/bigbluebutton-html5/imports/api/users/server/handlers/userInactivityInspect.js index 24365a27fc2b6e4d16d79516664c907e07909243..cbe225f0bcbcae32ea19680454b745553f2224e4 100644 --- a/bigbluebutton-html5/imports/api/users/server/handlers/userInactivityInspect.js +++ b/bigbluebutton-html5/imports/api/users/server/handlers/userInactivityInspect.js @@ -10,5 +10,5 @@ export default function handleUserInactivityInspect({ header, body }, meetingId) check(meetingId, String); - return userInactivityInspect(userId, responseDelay); + userInactivityInspect(userId, responseDelay); } diff --git a/bigbluebutton-html5/imports/api/users/server/handlers/userJoined.js b/bigbluebutton-html5/imports/api/users/server/handlers/userJoined.js index d546bd21621565f836ee43b0c7a3f29a1187a20a..122503cf146ad3217ea14b5495dd3a3c75ef90ab 100644 --- a/bigbluebutton-html5/imports/api/users/server/handlers/userJoined.js +++ b/bigbluebutton-html5/imports/api/users/server/handlers/userJoined.js @@ -7,5 +7,5 @@ export default function handleUserJoined({ body }, meetingId) { check(user, Object); - return addUser(meetingId, user); + addUser(meetingId, user); } diff --git a/bigbluebutton-html5/imports/api/users/server/handlers/validateAuthToken.js b/bigbluebutton-html5/imports/api/users/server/handlers/validateAuthToken.js index 1c5bd46a8df5cfaca3e548c17378596773151b33..42dd7e2e7fed6fc970ed7a8526ceadad47ff251b 100644 --- a/bigbluebutton-html5/imports/api/users/server/handlers/validateAuthToken.js +++ b/bigbluebutton-html5/imports/api/users/server/handlers/validateAuthToken.js @@ -108,23 +108,21 @@ export default function handleValidateAuthToken({ body }, meetingId) { }, }; - const cb = (err, numChanged) => { - if (err) { - return Logger.error(`Validating auth token: ${err}`); - } + try { + const numberAffected = Users.update(selector, modifier); - if (numChanged) { + if (numberAffected) { if (valid) { const sessionUserId = `${meetingId}-${userId}`; const currentConnectionId = User.connectionId ? User.connectionId : false; clearOtherSessions(sessionUserId, currentConnectionId); } - return Logger.info(`Validated auth token as ${valid} user=${userId} meeting=${meetingId}`); + Logger.info(`Validated auth token as ${valid} user=${userId} meeting=${meetingId}`); + } else { + Logger.info('No auth to validate'); } - - return Logger.info('No auth to validate'); - }; - - Users.update(selector, modifier, cb); + } catch (err) { + Logger.error(`Validating auth token: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/users/server/methods/userLeaving.js b/bigbluebutton-html5/imports/api/users/server/methods/userLeaving.js index 36abe39a2c37a71837be4289ce484c809c9e03b9..a075d36662f02270aad7bb58b6538929d0c8ac27 100755 --- a/bigbluebutton-html5/imports/api/users/server/methods/userLeaving.js +++ b/bigbluebutton-html5/imports/api/users/server/methods/userLeaving.js @@ -20,7 +20,8 @@ export default function userLeaving(meetingId, userId, connectionId) { const User = Users.findOne(selector); if (!User) { - return Logger.info(`Skipping userLeaving. Could not find ${userId} in ${meetingId}`); + Logger.info(`Skipping userLeaving. Could not find ${userId} in ${meetingId}`); + return; } const auth = AuthTokenValidation.findOne({ diff --git a/bigbluebutton-html5/imports/api/users/server/methods/userLeftMeeting.js b/bigbluebutton-html5/imports/api/users/server/methods/userLeftMeeting.js index 269e7df8b50187caf5202c8fa8f03beb0bf5bb42..38e31316ac795c70f46fd8f980c59e1f15b90504 100644 --- a/bigbluebutton-html5/imports/api/users/server/methods/userLeftMeeting.js +++ b/bigbluebutton-html5/imports/api/users/server/methods/userLeftMeeting.js @@ -12,25 +12,24 @@ export default function userLeftMeeting() { // TODO-- spread the code to method/ userId: requesterUserId, }; - const cb = (err, numChanged) => { - if (err) { - Logger.error(`leaving dummy user to collection: ${err}`); - return; - } - if (numChanged) { + try { + const numberAffected = Users.update(selector, { $set: { loggedOut: true } }); + + if (numberAffected) { Logger.info(`user left id=${requesterUserId} meeting=${meetingId}`); } - }; - - ClientConnections.removeClientConnection(this.userId, this.connection.id); + ClientConnections.removeClientConnection(this.userId, this.connection.id); - return Users.update( - selector, - { - $set: { - loggedOut: true, + Users.update( + selector, + { + $set: { + loggedOut: true, + }, }, - }, - cb, - ); + cb, + ); + } catch (err) { + Logger.error(`leaving dummy user to collection: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/users/server/modifiers/addUser.js b/bigbluebutton-html5/imports/api/users/server/modifiers/addUser.js index 68c2452b0efb5bd9c3a253f5a5f347d0afb4c7dd..94d7156119a9c312e3e2f618d04b8e8afe673b9f 100755 --- a/bigbluebutton-html5/imports/api/users/server/modifiers/addUser.js +++ b/bigbluebutton-html5/imports/api/users/server/modifiers/addUser.js @@ -94,18 +94,15 @@ export default function addUser(meetingId, userData) { }); } - const cb = (err, numChanged) => { - if (err) { - return Logger.error(`Adding user to collection: ${err}`); - } + try { + const { insertedId } = Users.upsert(selector, modifier); - const { insertedId } = numChanged; if (insertedId) { - return Logger.info(`Added user id=${userId} meeting=${meetingId}`); + Logger.info(`Added user id=${userId} meeting=${meetingId}`); + } else { + Logger.info(`Upserted user id=${userId} meeting=${meetingId}`); } - - return Logger.info(`Upserted user id=${userId} meeting=${meetingId}`); - }; - - return Users.upsert(selector, modifier, cb); + } catch (err) { + Logger.error(`Adding user to collection: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/users/server/modifiers/changePresenter.js b/bigbluebutton-html5/imports/api/users/server/modifiers/changePresenter.js index 521e3826aa01cbb343b96ee9722a95277872f9ec..dcfe69f36a2ee951340ac0e242b945c7887e2583 100755 --- a/bigbluebutton-html5/imports/api/users/server/modifiers/changePresenter.js +++ b/bigbluebutton-html5/imports/api/users/server/modifiers/changePresenter.js @@ -15,23 +15,20 @@ export default function changePresenter(presenter, userId, meetingId, changedBy) }, }; - const cb = (err, numChanged) => { - if (err) { - return Logger.error(`Changed user role: ${err}`); + try { + const meeting = Meetings.findOne({ meetingId }); + if (meeting && meeting.externalVideoUrl) { + Logger.info(`ChangePresenter:There is external video being shared. Stopping it due to presenter change, ${meeting.externalVideoUrl}`); + stopWatchingExternalVideo({ meetingId, requesterUserId: userId }); } - if (numChanged) { - return Logger.info(`Changed presenter=${presenter} id=${userId} meeting=${meetingId}` - + `${changedBy ? ` changedBy=${changedBy}` : ''}`); - } - - return null; - }; + const numberAffected = Users.update(selector, modifier); - const meeting = Meetings.findOne({ meetingId }); - if (meeting && meeting.externalVideoUrl) { - Logger.info(`ChangePresenter:There is external video being shared. Stopping it due to presenter change, ${meeting.externalVideoUrl}`); - stopWatchingExternalVideo({ meetingId, requesterUserId: userId }); + if (numberAffected) { + Logger.info(`Changed presenter=${presenter} id=${userId} meeting=${meetingId}` + + `${changedBy ? ` changedBy=${changedBy}` : ''}`); + } + } catch (err) { + Logger.error(`Changed user role: ${err}`); } - return Users.update(selector, modifier, cb); } diff --git a/bigbluebutton-html5/imports/api/users/server/modifiers/changeRole.js b/bigbluebutton-html5/imports/api/users/server/modifiers/changeRole.js index b09b4d9aafbc7b8a28ea7c09db6dbe9843b35c17..400eaac0cd17fc49a418c24735c6dc32e0ee0474 100644 --- a/bigbluebutton-html5/imports/api/users/server/modifiers/changeRole.js +++ b/bigbluebutton-html5/imports/api/users/server/modifiers/changeRole.js @@ -13,18 +13,14 @@ export default function changeRole(role, userId, meetingId, changedBy) { }, }; - const cb = (err, numChanged) => { - if (err) { - return Logger.error(`Changed user role: ${err}`); - } + try { + const numberAffected = Users.update(selector, modifier); - if (numChanged) { - return Logger.info(`Changed user role=${role} id=${userId} meeting=${meetingId}` - + `${changedBy ? ` changedBy=${changedBy}` : ''}`); + if (numberAffected) { + Logger.info(`Changed user role=${role} id=${userId} meeting=${meetingId}` + + `${changedBy ? ` changedBy=${changedBy}` : ''}`); } - - return null; - }; - - return Users.update(selector, modifier, cb); + } catch (err) { + Logger.error(`Changed user role: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/users/server/modifiers/clearUsers.js b/bigbluebutton-html5/imports/api/users/server/modifiers/clearUsers.js index 458eb4ef68d94e978f8dcc65b7559739a95a2053..c6784ee5649a7f8f0926bd971e9a2dfac988f6d9 100644 --- a/bigbluebutton-html5/imports/api/users/server/modifiers/clearUsers.js +++ b/bigbluebutton-html5/imports/api/users/server/modifiers/clearUsers.js @@ -1,16 +1,26 @@ import Logger from '/imports/startup/server/logger'; import Users from '/imports/api/users/index'; -const clearUsers = (meetingId) => { +export default function clearUsers(meetingId) { if (meetingId) { - return Users.remove({ meetingId }, () => { - Logger.info(`Cleared Users (${meetingId})`); - }); - } + try { + const numberAffected = Users.remove({ meetingId }); - return Users.remove({}, () => { - Logger.info('Cleared Users (all)'); - }); -}; + if (numberAffected) { + Logger.info(`Cleared Users (${meetingId})`); + } + } catch (err) { + Logger.error(`Error clearing Users (${meetingId}). ${err}`); + } + } else { + try { + const numberAffected = Users.remove({}); -export default clearUsers; + if (numberAffected) { + Logger.info('Cleared Users (all)'); + } + } catch (err) { + Logger.error(`Error clearing Users (all). ${err}`); + } + } +} diff --git a/bigbluebutton-html5/imports/api/users/server/modifiers/createDummyUser.js b/bigbluebutton-html5/imports/api/users/server/modifiers/createDummyUser.js index 9625884aae452b1408ed62cc25f80e4f66e8af7b..c8551f0d634e656ab9a5d70a6119246334ad6510 100644 --- a/bigbluebutton-html5/imports/api/users/server/modifiers/createDummyUser.js +++ b/bigbluebutton-html5/imports/api/users/server/modifiers/createDummyUser.js @@ -21,15 +21,13 @@ export default function createDummyUser(meetingId, userId, authToken) { validated: null, }; - const cb = (err, numChanged) => { - if (err) { - Logger.error(`Creating dummy user to collection: ${err}`); - return; - } - if (numChanged) { + try { + const insertedId = Users.insert(doc); + + if (insertedId) { Logger.info(`Created dummy user id=${userId} token=${authToken} meeting=${meetingId}`); } - }; - - return Users.insert(doc, cb); + } catch (err) { + Logger.error(`Creating dummy user to collection: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/users/server/modifiers/removeUser.js b/bigbluebutton-html5/imports/api/users/server/modifiers/removeUser.js index e783c58b8f3fe3aa04a9018e3a5a2382d7350809..a86e2c44a39c9f624f4cd2de49bc3fd29e4df550 100755 --- a/bigbluebutton-html5/imports/api/users/server/modifiers/removeUser.js +++ b/bigbluebutton-html5/imports/api/users/server/modifiers/removeUser.js @@ -31,11 +31,8 @@ export default function removeUser(meetingId, userId) { userId, }; - const cb = (err) => { - if (err) { - return Logger.error(`Removing user from collection: ${err}`); - } - + try { + VideoStreams.remove({ meetingId, userId }); const sessionUserId = `${meetingId}-${userId}`; ClientConnections.removeClientConnection(`${meetingId}--${userId}`); @@ -44,8 +41,10 @@ export default function removeUser(meetingId, userId) { clearUserInfoForRequester(meetingId, userId); - return Logger.info(`Removed user id=${userId} meeting=${meetingId}`); - }; - VideoStreams.remove({ meetingId, userId }); - return Users.remove(selector, cb); + Users.remove(selector, cb); + + Logger.info(`Removed user id=${userId} meeting=${meetingId}`); + } catch (err) { + Logger.error(`Removing user from Users collection: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/users/server/modifiers/setConnectionIdAndAuthToken.js b/bigbluebutton-html5/imports/api/users/server/modifiers/setConnectionIdAndAuthToken.js index ec044179f313d02b5172a452eee293941c62a69c..aba77f300dceb4484802c738207391f9ec26c201 100644 --- a/bigbluebutton-html5/imports/api/users/server/modifiers/setConnectionIdAndAuthToken.js +++ b/bigbluebutton-html5/imports/api/users/server/modifiers/setConnectionIdAndAuthToken.js @@ -20,16 +20,13 @@ export default function setConnectionIdAndAuthToken(meetingId, userId, connectio }, }; - const cb = (err, numChanged) => { - if (err) { - Logger.error(`Updating connectionId user=${userId}: ${err}`); - return; - } + try { + const numberAffected = Users.update(selector, modifier); - if (numChanged) { + if (numberAffected) { Logger.info(`Updated connectionId and authToken user=${userId} connectionId=${connectionId} meeting=${meetingId} authToken=${authToken}`); } - }; - - return Users.update(selector, modifier, cb); + } catch (err) { + Logger.error(`Updating connectionId user=${userId}: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/users/server/modifiers/setUserEffectiveConnectionType.js b/bigbluebutton-html5/imports/api/users/server/modifiers/setUserEffectiveConnectionType.js index 94543f5a019bd448a50e357fe928505bcd86fee7..d9888ced73b8a175fab623ada7fb874262115d84 100644 --- a/bigbluebutton-html5/imports/api/users/server/modifiers/setUserEffectiveConnectionType.js +++ b/bigbluebutton-html5/imports/api/users/server/modifiers/setUserEffectiveConnectionType.js @@ -19,15 +19,13 @@ export default function setUserEffectiveConnectionType(meetingId, userId, effect }, }; - const cb = (err, numChanged) => { - if (err) { - Logger.error(`Updating user ${userId}: ${err}`); - } + try { + const numberAffected = Users.update(selector, modifier); - if (numChanged) { + if (numberAffected) { Logger.info(`Updated user ${userId} effective connection to ${effectiveConnectionType} in meeting ${meetingId}`); } - }; - - return Users.update(selector, modifier, cb); + } catch (err) { + Logger.error(`Updating user ${userId}: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/users/server/modifiers/userEjected.js b/bigbluebutton-html5/imports/api/users/server/modifiers/userEjected.js index 61d2cb12cbba668f904644d79c2775cf6750052b..95a8c465ccc69d24bcf6e95ec15b181d3ccf8f6d 100644 --- a/bigbluebutton-html5/imports/api/users/server/modifiers/userEjected.js +++ b/bigbluebutton-html5/imports/api/users/server/modifiers/userEjected.js @@ -20,18 +20,14 @@ export default function userEjected(meetingId, userId, ejectedReason) { }, }; - const cb = (err, numChanged) => { - if (err) { - return Logger.error(`Ejecting user from collection: ${err}`); - } + try { + const numberAffected = Users.update(selector, modifier); - if (numChanged) { + if (numberAffected) { clearUserInfoForRequester(meetingId, userId); - return Logger.info(`Ejected user id=${userId} meeting=${meetingId} reason=${ejectedReason}`); + Logger.info(`Ejected user id=${userId} meeting=${meetingId} reason=${ejectedReason}`); } - - return null; - }; - - return Users.update(selector, modifier, cb); + } catch (err) { + Logger.error(`Ejecting user from collection: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/users/server/modifiers/userInactivityInspect.js b/bigbluebutton-html5/imports/api/users/server/modifiers/userInactivityInspect.js index 5dfcfea6f4b87be34f967ae7b2e0142a113eb12d..eb35a707ab722fe28682dd8aa43ee37a3ecf0f0b 100644 --- a/bigbluebutton-html5/imports/api/users/server/modifiers/userInactivityInspect.js +++ b/bigbluebutton-html5/imports/api/users/server/modifiers/userInactivityInspect.js @@ -18,17 +18,13 @@ export default function userInactivityInspect(userId, responseDelay) { }, }; - const cb = (err, numChanged) => { - if (err) { - return Logger.error(`Inactivity check for user ${userId}: ${err}`); - } + try { + const { numberAffected } = Users.update(selector, modifier); - if (numChanged) { - return Logger.info(`Updated user ${userId} with inactivity inspect`); + if (numberAffected) { + Logger.info(`Updated user ${userId} with inactivity inspect`); } - - return null; - }; - - return Users.update(selector, modifier, cb); + } catch (err) { + Logger.error(`Inactivity check for user ${userId}: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/video-streams/server/modifiers/clearVideoStreams.js b/bigbluebutton-html5/imports/api/video-streams/server/modifiers/clearVideoStreams.js index 9017d745dc1f5a308fe9380391012355dc22e0d1..7013f02a9c508c7fc7d3543bf6fee8588f0f1b16 100644 --- a/bigbluebutton-html5/imports/api/video-streams/server/modifiers/clearVideoStreams.js +++ b/bigbluebutton-html5/imports/api/video-streams/server/modifiers/clearVideoStreams.js @@ -3,12 +3,24 @@ import VideoStreams from '/imports/api/video-streams'; export default function clearVideoStreams(meetingId) { if (meetingId) { - return VideoStreams.remove({ meetingId }, () => { - Logger.info(`Cleared VideoStreams in (${meetingId})`); - }); - } + try { + const numberAffected = VideoStreams.remove({ meetingId }); + + if (numberAffected) { + Logger.info(`Cleared VideoStreams in (${meetingId})`); + } + } catch (err) { + Logger.error(`Error on clearing VideoStreams (${meetingId}). ${err}`); + } + } else { + try { + const numberAffected = VideoStreams.remove({}); - return VideoStreams.remove({}, () => { - Logger.info('Cleared VideoStreams in all meetings'); - }); + if (numberAffected) { + Logger.info('Cleared VideoStreams in all meetings'); + } + } catch (err) { + Logger.error(`Error on clearing VideoStreams (all). ${err}`); + } + } } diff --git a/bigbluebutton-html5/imports/api/video-streams/server/modifiers/sharedWebcam.js b/bigbluebutton-html5/imports/api/video-streams/server/modifiers/sharedWebcam.js index c3f9362a7dc0fcd5883a7efef13a4d9c5344d11f..6be33926f742b29439a2cd156b7f5df30b16c690 100644 --- a/bigbluebutton-html5/imports/api/video-streams/server/modifiers/sharedWebcam.js +++ b/bigbluebutton-html5/imports/api/video-streams/server/modifiers/sharedWebcam.js @@ -27,15 +27,13 @@ export default function sharedWebcam(meetingId, userId, stream) { }, }; - const cb = (err, numChanged) => { - if (err) { - return Logger.error(`Error setting stream: ${err}`); - } + try { + const { insertedId } = VideoStreams.upsert(selector, modifier); - if (numChanged) { - return Logger.info(`Updated stream=${stream} meeting=${meetingId}`); + if (insertedId) { + Logger.info(`Updated stream=${stream} meeting=${meetingId}`); } - }; - - return VideoStreams.upsert(selector, modifier, cb); + } catch (err) { + Logger.error(`Error setting stream: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/video-streams/server/modifiers/unsharedWebcam.js b/bigbluebutton-html5/imports/api/video-streams/server/modifiers/unsharedWebcam.js index 189bc5b5ef34c4990d7ba904881073a7e4e7330b..5d9ab4da5a0cf577e545a14f3393da2a543b2895 100644 --- a/bigbluebutton-html5/imports/api/video-streams/server/modifiers/unsharedWebcam.js +++ b/bigbluebutton-html5/imports/api/video-streams/server/modifiers/unsharedWebcam.js @@ -16,15 +16,11 @@ export default function unsharedWebcam(meetingId, userId, stream) { deviceId, }; - const cb = (err, numChanged) => { - if (err) { - return Logger.error(`Error removing stream: ${err}`); - } + try { + VideoStreams.remove(selector); - if (numChanged) { - return Logger.info(`Removed stream=${stream} meeting=${meetingId}`); - } - }; - - return VideoStreams.remove(selector, cb); + Logger.info(`Removed stream=${stream} meeting=${meetingId}`); + } catch (err) { + Logger.error(`Error removing stream: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/voice-call-states/server/handlers/voiceCallStateEvent.js b/bigbluebutton-html5/imports/api/voice-call-states/server/handlers/voiceCallStateEvent.js index ec19b8ba9995c86471b3696daffdadae115807dc..d713e7a91e4e62f4485ea2735d891a02fc278066 100644 --- a/bigbluebutton-html5/imports/api/voice-call-states/server/handlers/voiceCallStateEvent.js +++ b/bigbluebutton-html5/imports/api/voice-call-states/server/handlers/voiceCallStateEvent.js @@ -36,15 +36,15 @@ export default function handleVoiceCallStateEvent({ body }, meetingId) { }, }; - const cb = (err) => { - if (err) { - return Logger.error(`Update voice call state=${userId}: ${err}`); - } - - return Logger.debug('Update voice call', { - state: userId, meetingId, clientSession, callState, - }); - }; + try { + const { numberAffected } = VoiceCallState.upsert(selector, modifier); - return VoiceCallState.upsert(selector, modifier, cb); + if (numberAffected) { + Logger.debug('Update voice call', { + state: userId, meetingId, clientSession, callState, + }); + } + } catch (err) { + Logger.error(`Update voice call state=${userId}: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/voice-call-states/server/modifiers/clearVoiceCallStates.js b/bigbluebutton-html5/imports/api/voice-call-states/server/modifiers/clearVoiceCallStates.js index 6eed55eec658887b0cd11fdb11e8b287072b9dfb..11fce2e4c55e1b0fd0393f4e503d0a79592f6d99 100644 --- a/bigbluebutton-html5/imports/api/voice-call-states/server/modifiers/clearVoiceCallStates.js +++ b/bigbluebutton-html5/imports/api/voice-call-states/server/modifiers/clearVoiceCallStates.js @@ -3,12 +3,24 @@ import VoiceCallStates from '/imports/api/voice-users'; export default function clearVoiceCallStates(meetingId) { if (meetingId) { - return VoiceCallStates.remove({ meetingId }, () => { - Logger.info(`Cleared VoiceCallStates in (${meetingId})`); - }); - } + try { + const numberAffected = VoiceCallStates.remove({ meetingId }); + + if (numberAffected) { + Logger.info(`Cleared VoiceCallStates in (${meetingId})`); + } + } catch (err) { + Logger.info(`Error on clearing VoiceCallStates in (${meetingId}). ${err}`); + } + } else { + try { + const numberAffected = VoiceCallStates.remove({}); - return VoiceCallStates.remove({}, () => { - Logger.info('Cleared VoiceCallStates in all meetings'); - }); + if (numberAffected) { + Logger.info('Cleared VoiceCallStates in all meetings'); + } + } catch (err) { + Logger.error(`Error on clearing VoiceCallStates in all meetings. ${err}`); + } + } } diff --git a/bigbluebutton-html5/imports/api/voice-users/server/handlers/meetingMuted.js b/bigbluebutton-html5/imports/api/voice-users/server/handlers/meetingMuted.js index 9d14a1dc8bc2ae6e9722f5d4a6a2dfcefb5be146..b67db9f5d4eb7327b35b945f729e15bae705d5fe 100755 --- a/bigbluebutton-html5/imports/api/voice-users/server/handlers/meetingMuted.js +++ b/bigbluebutton-html5/imports/api/voice-users/server/handlers/meetingMuted.js @@ -1,5 +1,5 @@ import changeMuteMeeting from '../modifiers/changeMuteMeeting'; export default function handleMeetingMuted({ body }, meetingId) { - return changeMuteMeeting(meetingId, body); + changeMuteMeeting(meetingId, body); } diff --git a/bigbluebutton-html5/imports/api/voice-users/server/modifiers/addVoiceUser.js b/bigbluebutton-html5/imports/api/voice-users/server/modifiers/addVoiceUser.js index 3d7636dcb7b480b296d360f3594146e181609434..f0e0293361ba391f76263e952946267d6f6a1584 100644 --- a/bigbluebutton-html5/imports/api/voice-users/server/modifiers/addVoiceUser.js +++ b/bigbluebutton-html5/imports/api/voice-users/server/modifiers/addVoiceUser.js @@ -41,13 +41,13 @@ export default function addVoiceUser(meetingId, voiceUser) { if (user) modifier.$set.color = user.color; - const cb = (err) => { - if (err) { - return Logger.error(`Add voice user=${intId}: ${err}`); - } - - return Logger.info(`Add voice user=${intId} meeting=${meetingId}`); - }; + try { + const { numberAffected } = VoiceUsers.upsert(selector, modifier); - return VoiceUsers.upsert(selector, modifier, cb); + if (numberAffected) { + Logger.info(`Add voice user=${intId} meeting=${meetingId}`); + } + } catch (err) { + Logger.error(`Add voice user=${intId}: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/voice-users/server/modifiers/changeMuteMeeting.js b/bigbluebutton-html5/imports/api/voice-users/server/modifiers/changeMuteMeeting.js index 63995e242945ce46c92b2f2706e8c5274dc1dea2..e18c3cf211f6998a07e802b256c5f7a8bc5a0824 100755 --- a/bigbluebutton-html5/imports/api/voice-users/server/modifiers/changeMuteMeeting.js +++ b/bigbluebutton-html5/imports/api/voice-users/server/modifiers/changeMuteMeeting.js @@ -19,17 +19,13 @@ export default function changeMuteMeeting(meetingId, payload) { }, }; - const cb = (err, numChanged) => { - if (err) { - Logger.error(`Changing meeting mute status meeting={${meetingId}} ${err}`); - return; - } + try { + const { numberAffected } = Meetings.upsert(selector, modifier); - if (numChanged) { + if (numberAffected) { Logger.info(`Changed meeting mute status meeting=${meetingId}`); } - }; - - - return Meetings.upsert(selector, modifier, cb); + } catch (err) { + Logger.error(`Changing meeting mute status meeting={${meetingId}} ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/voice-users/server/modifiers/clearVoiceUsers.js b/bigbluebutton-html5/imports/api/voice-users/server/modifiers/clearVoiceUsers.js index c9b81dc807504f728af692164d67ca14341e071e..63fe8e284577b0af27085bed10ad1d2a35701270 100644 --- a/bigbluebutton-html5/imports/api/voice-users/server/modifiers/clearVoiceUsers.js +++ b/bigbluebutton-html5/imports/api/voice-users/server/modifiers/clearVoiceUsers.js @@ -3,12 +3,24 @@ import VoiceUsers from '/imports/api/voice-users'; export default function clearVoiceUser(meetingId) { if (meetingId) { - return VoiceUsers.remove({ meetingId }, () => { - Logger.info(`Cleared VoiceUsers in (${meetingId})`); - }); - } + try { + const numberAffected = VoiceUsers.remove({ meetingId }); + + if (numberAffected) { + Logger.info(`Cleared VoiceUsers in (${meetingId})`); + } + } catch (err) { + Logger.error(`Error on clearing VoiceUsers in ${meetingId}. ${err}`); + } + } else { + try { + const numberAffected = VoiceUsers.remove({}); - return VoiceUsers.remove({}, () => { - Logger.info('Cleared VoiceUsers in all meetings'); - }); + if (numberAffected) { + Logger.info('Cleared VoiceUsers in all meetings'); + } + } catch (err) { + Logger.error(`Error on clearing VoiceUsers. ${err}`); + } + } } diff --git a/bigbluebutton-html5/imports/api/voice-users/server/modifiers/removeVoiceUser.js b/bigbluebutton-html5/imports/api/voice-users/server/modifiers/removeVoiceUser.js index d49d8c318b0315382458a77dcbe4888f9d83644f..5e1bec81db17938d03c33c6850fb7f27dcd95562 100644 --- a/bigbluebutton-html5/imports/api/voice-users/server/modifiers/removeVoiceUser.js +++ b/bigbluebutton-html5/imports/api/voice-users/server/modifiers/removeVoiceUser.js @@ -28,15 +28,14 @@ export default function removeVoiceUser(meetingId, voiceUser) { }, }; - clearSpokeTimeout(meetingId, intId); + try { + clearSpokeTimeout(meetingId, intId); + const numberAffected = VoiceUsers.update(selector, modifier); - const cb = (err) => { - if (err) { - return Logger.error(`Remove voiceUser=${intId}: ${err}`); + if (numberAffected) { + Logger.info(`Remove voiceUser=${intId} meeting=${meetingId}`); } - - return Logger.info(`Remove voiceUser=${intId} meeting=${meetingId}`); - }; - - return VoiceUsers.update(selector, modifier, cb); + } catch (err) { + Logger.error(`Remove voiceUser=${intId}: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/voice-users/server/modifiers/updateVoiceUser.js b/bigbluebutton-html5/imports/api/voice-users/server/modifiers/updateVoiceUser.js index 7f5f6dff9e2dbe4e00aa39be1fe8dca730413ce5..270ac5b8a496f5de0bd1e92f1b0df8088a15abb6 100644 --- a/bigbluebutton-html5/imports/api/voice-users/server/modifiers/updateVoiceUser.js +++ b/bigbluebutton-html5/imports/api/voice-users/server/modifiers/updateVoiceUser.js @@ -43,14 +43,6 @@ export default function updateVoiceUser(meetingId, voiceUser) { clearSpokeTimeout(meetingId, intId); } - const cb = (err) => { - if (err) { - return Logger.error(`Update voiceUser=${intId}: ${err}`); - } - - return Logger.debug('Update voiceUser', { voiceUser: intId, meetingId }); - }; - if (!voiceUser.talking) { const timeoutHandle = Meteor.setTimeout(() => { const user = VoiceUsers.findOne({ meetingId, intId }, { @@ -66,7 +58,15 @@ export default function updateVoiceUser(meetingId, voiceUser) { if (talking || spokeDelay) return; modifier.$set.spoke = false; modifier.$set.startTime = null; - VoiceUsers.update(selector, modifier, cb); + try { + const numberAffected = VoiceUsers.update(selector, modifier); + + if (numberAffected) { + Logger.debug('Update voiceUser', { voiceUser: intId, meetingId }); + } + } catch (err) { + Logger.error(`Update voiceUser=${intId}: ${err}`); + } } }, TALKING_TIMEOUT); @@ -74,5 +74,13 @@ export default function updateVoiceUser(meetingId, voiceUser) { modifier.$set.endTime = Date.now(); } - return VoiceUsers.update(selector, modifier, cb); + try { + const numberAffected = VoiceUsers.update(selector, modifier); + + if (numberAffected) { + Logger.debug('Update voiceUser', { voiceUser: intId, meetingId }); + } + } catch (err) { + Logger.error(`Update voiceUser=${intId}: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/api/whiteboard-multi-user/server/modifiers/modifyWhiteboardAccess.js b/bigbluebutton-html5/imports/api/whiteboard-multi-user/server/modifiers/modifyWhiteboardAccess.js index 17e50c94331cb45d454af6f1aa81fbdd7fa49d87..5d1944426a0bc3aee59fb4dde9c503147d6ab444 100644 --- a/bigbluebutton-html5/imports/api/whiteboard-multi-user/server/modifiers/modifyWhiteboardAccess.js +++ b/bigbluebutton-html5/imports/api/whiteboard-multi-user/server/modifiers/modifyWhiteboardAccess.js @@ -2,7 +2,6 @@ import { check } from 'meteor/check'; import Logger from '/imports/startup/server/logger'; import WhiteboardMultiUser from '/imports/api/whiteboard-multi-user/'; - export default function modifyWhiteboardAccess(meetingId, whiteboardId, multiUser) { check(meetingId, String); check(whiteboardId, String); @@ -19,19 +18,14 @@ export default function modifyWhiteboardAccess(meetingId, whiteboardId, multiUse multiUser, }; - - const cb = (err, numChanged) => { - if (err) { - return Logger.error(`Error while adding an entry to Multi-User collection: ${err}`); - } - - const { insertedId } = numChanged; + try { + const { insertedId } = WhiteboardMultiUser.upsert(selector, modifier); if (insertedId) { - return Logger.info(`Added multiUser flag=${multiUser} meetingId=${meetingId} whiteboardId=${whiteboardId}`); + Logger.info(`Added multiUser flag=${multiUser} meetingId=${meetingId} whiteboardId=${whiteboardId}`); + } else { + Logger.info(`Upserted multiUser flag=${multiUser} meetingId=${meetingId} whiteboardId=${whiteboardId}`); } - - return Logger.info(`Upserted multiUser flag=${multiUser} meetingId=${meetingId} whiteboardId=${whiteboardId}`); - }; - - return WhiteboardMultiUser.upsert(selector, modifier, cb); + } catch (err) { + Logger.error(`Error while adding an entry to Multi-User collection: ${err}`); + } } diff --git a/bigbluebutton-html5/imports/startup/server/index.js b/bigbluebutton-html5/imports/startup/server/index.js index 481700618a65ea4e98c6a9f6cb5bb8ff7f9b5189..a12dc87c0569cc7b03304f19f9339fbca4b9637b 100755 --- a/bigbluebutton-html5/imports/startup/server/index.js +++ b/bigbluebutton-html5/imports/startup/server/index.js @@ -45,114 +45,96 @@ Meteor.startup(() => { const env = Meteor.isDevelopment ? 'development' : 'production'; const CDN_URL = APP_CONFIG.cdn; - // https://github.com/sockjs/sockjs-node/blob/1ef08901f045aae7b4df0f91ef598d7a11e82897/lib/transport/websocket.js#L74-L82 - const newHeartbeat = function heartbeat() { - const currentTime = new Date().getTime(); - - // Skipping heartbeat, because websocket is sending data - if (currentTime - this.ws.lastSentFrameTimestamp < 10000) { - Logger.info('Skipping heartbeat, because websocket is sending data', { - currentTime, - lastSentFrameTimestamp: this.ws.lastSentFrameTimestamp, - userId: this.session.connection._meteorSession.userId, - }); - return; - } - - const supportsHeartbeats = this.ws.ping(null, () => clearTimeout(this.hto_ref)); - if (supportsHeartbeats) { - this.hto_ref = setTimeout(() => { - Logger.info('Heartbeat timeout', { userId: this.session.connection._meteorSession.userId, sentAt: currentTime, now: new Date().getTime() }); - }, Meteor.server.options.heartbeatTimeout); - } else { - Logger.error('Unexpected error supportsHeartbeats=false'); - } - }; - - // https://github.com/davhani/hagty/blob/6a5c78e9ae5a5e4ade03e747fb4cc8ea2df4be0c/faye-websocket/lib/faye/websocket/api.js#L84-L88 - const newSend = function send(data) { - this.lastSentFrameTimestamp = new Date().getTime(); - - // Call https://github.com/meteor/meteor/blob/1e7e56eec8414093cd0c1c70750b894069fc972a/packages/ddp-common/heartbeat.js#L80-L88 - this.meteorHeartbeat._seenPacket = true; - if (this.meteorHeartbeat._heartbeatTimeoutHandle) { - this.meteorHeartbeat._clearHeartbeatTimeoutTimer(); - } + const { customHeartbeat } = APP_CONFIG; + + if (customHeartbeat) { + Logger.warn('Custom heartbeat functions are enabled'); + // https://github.com/sockjs/sockjs-node/blob/1ef08901f045aae7b4df0f91ef598d7a11e82897/lib/transport/websocket.js#L74-L82 + const newHeartbeat = function heartbeat() { + const currentTime = new Date().getTime(); + + // Skipping heartbeat, because websocket is sending data + if (currentTime - this.ws.lastSentFrameTimestamp < 10000) { + Logger.info('Skipping heartbeat, because websocket is sending data', { + currentTime, + lastSentFrameTimestamp: this.ws.lastSentFrameTimestamp, + userId: this.session.connection._meteorSession.userId, + }); + return; + } - if (this.readyState > 1/* API.OPEN = 1 */) return false; - if (!(data instanceof Buffer)) data = String(data); - return this._driver.messages.write(data); - }; + const supportsHeartbeats = this.ws.ping(null, () => clearTimeout(this.hto_ref)); + if (supportsHeartbeats) { + this.hto_ref = setTimeout(() => { + Logger.info('Heartbeat timeout', { + userId: this.session.connection._meteorSession.userId, + sentAt: currentTime, + now: new Date().getTime(), + }); + }, Meteor.server.options.heartbeatTimeout); + } else { + Logger.error('Unexpected error supportsHeartbeats=false'); + } + }; - Meteor.setInterval(() => { - for (const session of Meteor.server.sessions.values()) { - const { socket } = session; - const recv = socket._session.recv; + // https://github.com/davhani/hagty/blob/6a5c78e9ae5a5e4ade03e747fb4cc8ea2df4be0c/faye-websocket/lib/faye/websocket/api.js#L84-L88 + const newSend = function send(data) { + this.lastSentFrameTimestamp = new Date().getTime(); - if (session.bbbFixApplied || !recv || !recv.ws) { - continue; + // Call https://github.com/meteor/meteor/blob/1e7e56eec8414093cd0c1c70750b894069fc972a/packages/ddp-common/heartbeat.js#L80-L88 + this.meteorHeartbeat._seenPacket = true; + if (this.meteorHeartbeat._heartbeatTimeoutHandle) { + this.meteorHeartbeat._clearHeartbeatTimeoutTimer(); } - recv.ws.meteorHeartbeat = session.heartbeat; - recv.__proto__.heartbeat = newHeartbeat; - recv.ws.__proto__.send = newSend; - session.bbbFixApplied = true; - } - }, 5000); - // Commenting out in BBB 2.3 as node12 does not allow for `memwatch`. - // We are looking for alternatives + if (this.readyState > 1/* API.OPEN = 1 */) return false; + if (!(data instanceof Buffer)) data = String(data); + return this._driver.messages.write(data); + }; - /* let heapDumpMbThreshold = 100; + Meteor.setInterval(() => { + for (const session of Meteor.server.sessions.values()) { + const { socket } = session; + const recv = socket._session.recv; - const memoryMonitoringSettings = Meteor.settings.private.memoryMonitoring; - if (memoryMonitoringSettings.stat.enabled) { - memwatch.on('stats', (stats) => { - let heapDumpTriggered = false; + if (session.bbbFixApplied || !recv || !recv.ws) { + continue; + } - if (memoryMonitoringSettings.heapdump.enabled) { - heapDumpTriggered = (stats.current_base / 1048576) > heapDumpMbThreshold; + recv.ws.meteorHeartbeat = session.heartbeat; + recv.__proto__.heartbeat = newHeartbeat; + recv.ws.__proto__.send = newSend; + session.bbbFixApplied = true; } - Logger.info('memwatch stats', { ...stats, heapDumpEnabled: memoryMonitoringSettings.heapdump.enabled, heapDumpTriggered }); + }, 5000); + + if (CDN_URL.trim()) { + // Add CDN + BrowserPolicy.content.disallowEval(); + BrowserPolicy.content.allowInlineScripts(); + BrowserPolicy.content.allowInlineStyles(); + BrowserPolicy.content.allowImageDataUrl(CDN_URL); + BrowserPolicy.content.allowFontDataUrl(CDN_URL); + BrowserPolicy.content.allowOriginForAll(CDN_URL); + WebAppInternals.setBundledJsCssPrefix(CDN_URL + APP_CONFIG.basename + Meteor.settings.public.app.instanceId); + + const fontRegExp = /\.(eot|ttf|otf|woff|woff2)$/; + + WebApp.rawConnectHandlers.use('/', (req, res, next) => { + if (fontRegExp.test(req._parsedUrl.pathname)) { + res.setHeader('Access-Control-Allow-Origin', '*'); + res.setHeader('Vary', 'Origin'); + res.setHeader('Pragma', 'public'); + res.setHeader('Cache-Control', '"public"'); + } + return next(); + }); + } - if (heapDumpTriggered) { - heapdump.writeSnapshot(`./heapdump-stats-${Date.now()}.heapsnapshot`); - heapDumpMbThreshold += 100; - } - }); - } + setMinBrowserVersions(); - if (memoryMonitoringSettings.leak.enabled) { - memwatch.on('leak', (info) => { - Logger.info('memwatch leak', info); - }); - } */ - - if (CDN_URL.trim()) { - // Add CDN - BrowserPolicy.content.disallowEval(); - BrowserPolicy.content.allowInlineScripts(); - BrowserPolicy.content.allowInlineStyles(); - BrowserPolicy.content.allowImageDataUrl(CDN_URL); - BrowserPolicy.content.allowFontDataUrl(CDN_URL); - BrowserPolicy.content.allowOriginForAll(CDN_URL); - WebAppInternals.setBundledJsCssPrefix(CDN_URL + APP_CONFIG.basename + Meteor.settings.public.app.instanceId); - - const fontRegExp = /\.(eot|ttf|otf|woff|woff2)$/; - - WebApp.rawConnectHandlers.use('/', (req, res, next) => { - if (fontRegExp.test(req._parsedUrl.pathname)) { - res.setHeader('Access-Control-Allow-Origin', '*'); - res.setHeader('Vary', 'Origin'); - res.setHeader('Pragma', 'public'); - res.setHeader('Cache-Control', '"public"'); - } - return next(); - }); + Logger.warn(`SERVER STARTED.\nENV=${env},\nnodejs version=${process.version}\nCDN=${CDN_URL}\n`, APP_CONFIG); } - - setMinBrowserVersions(); - - Logger.warn(`SERVER STARTED.\nENV=${env},\nnodejs version=${process.version}\nCDN=${CDN_URL}\n`, APP_CONFIG); }); WebApp.connectHandlers.use('/check', (req, res) => { diff --git a/bigbluebutton-html5/imports/startup/server/redis.js b/bigbluebutton-html5/imports/startup/server/redis.js index 4c49d2750d3d9a3c2b8f781110965e96b29ffd66..ef8b2e6b7dbdbfc20048119726cbb148774ae3c7 100755 --- a/bigbluebutton-html5/imports/startup/server/redis.js +++ b/bigbluebutton-html5/imports/startup/server/redis.js @@ -60,7 +60,7 @@ class MeetingMessageQueue { } called = true; const queueLength = this.queue.length(); - if (queueLength > 0) { + if (queueLength > 100) { Logger.warn(`Redis: MeetingMessageQueue for meetingId=${meetingId} has queue size=${queueLength} `); } next(); diff --git a/bigbluebutton-html5/imports/ui/components/external-video-player/component.jsx b/bigbluebutton-html5/imports/ui/components/external-video-player/component.jsx index ed6cd1829e8170acf5dfa046c5265d5b7020e861..ba060c69bdc891b28352a009560af7c3beeecf22 100644 --- a/bigbluebutton-html5/imports/ui/components/external-video-player/component.jsx +++ b/bigbluebutton-html5/imports/ui/components/external-video-player/component.jsx @@ -6,6 +6,7 @@ import { sendMessage, onMessage, removeAllListeners } from './service'; import logger from '/imports/startup/client/logger'; import ArcPlayer from './custom-players/arc-player'; +import PeerTubePlayer from './custom-players/peertube'; import { styles } from './styles'; @@ -20,6 +21,7 @@ const SYNC_INTERVAL_SECONDS = 5; const THROTTLE_INTERVAL_SECONDS = 0.5; const AUTO_PLAY_BLOCK_DETECTION_TIMEOUT_SECONDS = 5; +ReactPlayer.addCustomPlayer(PeerTubePlayer); ReactPlayer.addCustomPlayer(ArcPlayer); class VideoPlayer extends Component { @@ -75,6 +77,9 @@ class VideoPlayer extends Component { controls: isPresenter ? 1 : 2, }, }, + peertube: { + isPresenter, + }, twitch: { options: { controls: true, diff --git a/bigbluebutton-html5/imports/ui/components/external-video-player/custom-players/peertube.jsx b/bigbluebutton-html5/imports/ui/components/external-video-player/custom-players/peertube.jsx new file mode 100644 index 0000000000000000000000000000000000000000..ea0c0d88a24f7c7f8323914da8dbedb8d8b93377 --- /dev/null +++ b/bigbluebutton-html5/imports/ui/components/external-video-player/custom-players/peertube.jsx @@ -0,0 +1,211 @@ +import loadScript from 'load-script'; +import React, { Component } from 'react' + +const MATCH_URL = new RegExp("(https?)://(.*)/videos/watch/(.*)"); + +const SDK_URL = 'https://unpkg.com/@peertube/embed-api/build/player.min.js'; + +// Util function to load an external SDK or return the SDK if it is already loaded +// From https://github.com/CookPete/react-player/blob/master/src/utils.js +const resolves = {}; +export function getSDK (url, sdkGlobal, sdkReady = null, isLoaded = () => true, fetchScript = loadScript) { + if (window[sdkGlobal] && isLoaded(window[sdkGlobal])) { + return Promise.resolve(window[sdkGlobal]) + } + return new Promise((resolve, reject) => { + // If we are already loading the SDK, add the resolve + // function to the existing array of resolve functions + if (resolves[url]) { + resolves[url].push(resolve); + return + } + resolves[url] = [resolve]; + const onLoaded = sdk => { + // When loaded, resolve all pending promises + resolves[url].forEach(resolve => resolve(sdk)) + }; + if (sdkReady) { + const previousOnReady = window[sdkReady]; + window[sdkReady] = function () { + if (previousOnReady) previousOnReady(); + onLoaded(window[sdkGlobal]) + } + } + fetchScript(url, err => { + if (err) { + reject(err); + } + window[sdkGlobal] = url; + if (!sdkReady) { + onLoaded(window[sdkGlobal]) + } + }) + }) +} + +export class PeerTubePlayer extends Component { + static displayName = 'PeerTubePlayer'; + + static canPlay = url => { + return MATCH_URL.test(url) + }; + + constructor(props) { + super(props); + + this.player = this; + this._player = null; + + this.currentTime = 0; + this.playbackRate = 1; + this.getCurrentTime = this.getCurrentTime.bind(this); + this.getEmbedUrl = this.getEmbedUrl.bind(this); + this.setupEvents = this.setupEvents.bind(this); + } + + componentDidMount () { + this.props.onMount && this.props.onMount(this) + } + + getEmbedUrl = () => { + const { config, url } = this.props; + const m = MATCH_URL.exec(url); + + const isPresenter = config && config.peertube && config.peertube.isPresenter; + + return `${m[1]}://${m[2]}/videos/embed/${m[3]}?api=1&controls=${true}`; + }; + + load() { + new Promise((resolve, reject) => { + this.render(); + resolve(); + }) + .then(() => { return getSDK(SDK_URL, 'PeerTube') }) + .then(() => { + this._player = new window['PeerTubePlayer'](this.container); + + this.setupEvents(); + + return this._player.ready.then(() => { + return this.props.onReady(); + }); + }); + } + + setupEvents(event) { + const player = this._player; + + if (!player) { + return; + } + + player.addEventListener("playbackStatusUpdate", (data) => { + this.currentTime = data.position; + }); + player.addEventListener("playbackStatusChange", (data) => { + if (data === 'playing') { + this.props.onPlay(); + } else { + this.props.onPause(); + } + }); + + } + + play() { + if (this._player) { + this._player.play(); + } + } + + pause() { + if (this._player) { + this._player.pause(); + } + } + + stop() { + } + + seekTo(seconds) { + if (this._player) { + this._player.seek(seconds); + } + } + + setVolume(fraction) { + // console.log("SET VOLUME"); + } + + setLoop(loop) { + // console.log("SET LOOP"); + } + + mute() { + // console.log("SET MUTE"); + } + + unmute() { + // console.log("SET UNMUTE"); + } + + getDuration() { + //console.log("GET DURATION"); + } + + getCurrentTime () { + return this.currentTime; + } + + getSecondsLoaded () { + } + + getPlaybackRate () { + + if (this._player) { + this._player.getPlaybackRate().then((rate) => { + this.playbackRate = rate; + }); + } + + return this.playbackRate; + } + + setPlaybackRate (rate) { + + if (this._player) { + this._player.setPlaybackRate(rate); + } + } + + render () { + const style = { + width: '100%', + height: '100%', + margin: 0, + padding: 0, + border: 0, + overflow: 'hidden', + }; + const { url } = this.props; + + return ( + <iframe + key={url} + style={style} + src={this.getEmbedUrl(url)} + id={"peerTubeContainer"} + allow="autoplay; fullscreen" + sandbox="allow-same-origin allow-scripts allow-popups" + ref={(container) => { + this.container = container; + }} + > + </iframe> + ) + } +} + +export default PeerTubePlayer; + diff --git a/bigbluebutton-html5/imports/ui/components/video-provider/video-list/component.jsx b/bigbluebutton-html5/imports/ui/components/video-provider/video-list/component.jsx index d2b27787858e30916fa26e349ee73e8d39082bc6..ac1340fb3ecdf3b09e336eb24b8aaf696a1c139e 100755 --- a/bigbluebutton-html5/imports/ui/components/video-provider/video-list/component.jsx +++ b/bigbluebutton-html5/imports/ui/components/video-provider/video-list/component.jsx @@ -35,6 +35,12 @@ const intlMessages = defineMessages({ unfocusDesc: { id: 'app.videoDock.webcamUnfocusDesc', }, + mirrorLabel: { + id: 'app.videoDock.webcamMirrorLabel', + }, + mirrorDesc: { + id: 'app.videoDock.webcamMirrorDesc', + }, autoplayBlockedDesc: { id: 'app.videoDock.autoplayBlockedDesc', }, @@ -84,6 +90,7 @@ class VideoList extends Component { filledArea: 0, }, autoplayBlocked: false, + mirroredCameras: [], }; this.ticking = false; @@ -209,6 +216,24 @@ class VideoList extends Component { window.dispatchEvent(new Event('videoFocusChange')); } + mirrorCamera(cameraId) { + const { mirroredCameras } = this.state; + if (this.cameraIsMirrored(cameraId)) { + this.setState({ + mirroredCameras: mirroredCameras.filter(x => x != cameraId), + }); + } else { + this.setState({ + mirroredCameras: mirroredCameras.concat([cameraId]), + }); + } + } + + cameraIsMirrored(cameraId) { + const { mirroredCameras } = this.state; + return mirroredCameras.indexOf(cameraId) >= 0; + } + handleCanvasResize() { if (!this.ticking) { window.requestAnimationFrame(() => { @@ -281,14 +306,19 @@ class VideoList extends Component { const { cameraId, userId, name } = stream; const isFocused = focusedId === cameraId; const isFocusedIntlKey = !isFocused ? 'focus' : 'unfocus'; - let actions = []; + const isMirrored = this.cameraIsMirrored(cameraId); + let actions = [{ + label: intl.formatMessage(intlMessages['mirrorLabel']), + description: intl.formatMessage(intlMessages['mirrorDesc']), + onClick: () => this.mirrorCamera(cameraId), + }]; if (numOfStreams > 2) { - actions = [{ + actions.push({ label: intl.formatMessage(intlMessages[`${isFocusedIntlKey}Label`]), description: intl.formatMessage(intlMessages[`${isFocusedIntlKey}Desc`]), onClick: () => this.handleVideoFocus(cameraId), - }]; + }); } return ( @@ -304,6 +334,7 @@ class VideoList extends Component { cameraId={cameraId} userId={userId} name={name} + mirrored={isMirrored} actions={actions} onMount={(videoRef) => { this.handleCanvasResize(); diff --git a/bigbluebutton-html5/imports/ui/components/video-provider/video-list/video-list-item/component.jsx b/bigbluebutton-html5/imports/ui/components/video-provider/video-list/video-list-item/component.jsx index f95f0f6afc441c018bf5b3025926f660d7fdd671..798d99f43fb7a379f4d70c093008bc34d05b6da5 100755 --- a/bigbluebutton-html5/imports/ui/components/video-provider/video-list/video-list-item/component.jsx +++ b/bigbluebutton-html5/imports/ui/components/video-provider/video-list/video-list-item/component.jsx @@ -143,6 +143,7 @@ class VideoListItem extends Component { numOfStreams, webcamDraggableState, swapLayout, + mirrored } = this.props; const availableActions = this.getAvailableActions(); const enableVideoMenu = Meteor.settings.public.kurento.enableVideoMenu || false; @@ -175,7 +176,7 @@ class VideoListItem extends Component { && !isFullscreen && !swapLayout, [styles.cursorGrabbing]: webcamDraggableState.dragging && !isFullscreen && !swapLayout, - [styles.mirroredVideo]: this.mirrorOwnWebcam, + [styles.mirroredVideo]: (this.mirrorOwnWebcam && !mirrored) || (!this.mirrorOwnWebcam && mirrored), })} ref={(ref) => { this.videoTag = ref; }} autoPlay diff --git a/bigbluebutton-html5/private/config/settings.yml b/bigbluebutton-html5/private/config/settings.yml index a9916dcc268b6220939e46aa37c80e5963d126b6..2b2d0df719891516de40d3144805aedc9782b60c 100755 --- a/bigbluebutton-html5/private/config/settings.yml +++ b/bigbluebutton-html5/private/config/settings.yml @@ -10,12 +10,12 @@ public: clientTitle: BigBlueButton appName: BigBlueButton HTML5 Client bbbServerVersion: 2.3-dev - copyright: "©2020 BigBlueButton Inc." + copyright: '©2020 BigBlueButton Inc.' html5ClientBuild: HTML5_CLIENT_VERSION helpLink: https://bigbluebutton.org/html5/ lockOnJoin: true - cdn: "" - basename: "/html5client" + cdn: '' + basename: '/html5client' askForFeedbackOnLogout: false # the default logoutUrl matches window.location.origin i.e. bigbluebutton.org for demo.bigbluebutton.org # in some cases we want only custom logoutUrl to be used when provided on meeting create. Default value: true @@ -27,7 +27,7 @@ public: enableTalkingIndicator: true mirrorOwnWebcam: false viewersInWebcam: 8 - ipv4FallbackDomain: "" + ipv4FallbackDomain: '' allowLogout: true allowFullscreen: true preloadNextSlides: 2 @@ -42,6 +42,7 @@ public: # can generate excessive overhead to the server. We recommend # this value to be kept under 12. breakoutRoomLimit: 8 + customHeartbeat: false defaultSettings: application: animations: true @@ -259,8 +260,8 @@ public: captions: enabled: true enableDictation: false - backgroundColor: "#000000" - fontColor: "#FFFFFF" + backgroundColor: '#000000' + fontColor: '#FFFFFF' fontFamily: Calibri fontSize: 24px takeOwnership: true @@ -298,13 +299,13 @@ public: layout: autoSwapLayout: false hidePresentation: false - webcamsDefaultPlacement: "top" + webcamsDefaultPlacement: 'top' media: - stunTurnServersFetchAddress: "/bigbluebutton/api/stuns" + stunTurnServersFetchAddress: '/bigbluebutton/api/stuns' cacheStunTurnServers: true - fallbackStunServer: '' + fallbackStunServer: '' recvonlyIceGatheringCheck: true - mediaTag: "#remote-media" + mediaTag: '#remote-media' callTransferTimeout: 5000 callHangupTimeout: 2000 callHangupMaximumRetries: 10 @@ -340,46 +341,46 @@ public: defaultPresentationFile: default.pdf panZoomThrottle: 32 restoreOnUpdate: false - uploadEndpoint: "/bigbluebutton/presentation/upload" + uploadEndpoint: '/bigbluebutton/presentation/upload' uploadSizeMin: 0 uploadSizeMax: 50000000 uploadValidMimeTypes: - - extension: .pdf - mime: application/pdf - - extension: .doc - mime: application/msword - - extension: .docx - mime: application/vnd.openxmlformats-officedocument.wordprocessingml.document - - extension: .xls - mime: application/vnd.ms-excel - - extension: .xlsx - mime: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - extension: .ppt - mime: application/vnd.ms-powerpoint - - extension: .pptx - mime: application/vnd.openxmlformats-officedocument.presentationml.presentation - - extension: .txt - mime: text/plain - - extension: .rtf - mime: application/rtf - - extension: .odt - mime: application/vnd.oasis.opendocument.text - - extension: .ods - mime: application/vnd.oasis.opendocument.spreadsheet - - extension: .odp - mime: application/vnd.oasis.opendocument.presentation - - extension: .odg - mime: application/vnd.oasis.opendocument.graphics - - extension: .odc - mime: application/vnd.oasis.opendocument.chart - - extension: .odi - mime: application/vnd.oasis.opendocument.image - - extension: .jpg - mime: image/jpeg - - extension: .jpeg - mime: image/jpeg - - extension: .png - mime: image/png + - extension: .pdf + mime: application/pdf + - extension: .doc + mime: application/msword + - extension: .docx + mime: application/vnd.openxmlformats-officedocument.wordprocessingml.document + - extension: .xls + mime: application/vnd.ms-excel + - extension: .xlsx + mime: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet + - extension: .ppt + mime: application/vnd.ms-powerpoint + - extension: .pptx + mime: application/vnd.openxmlformats-officedocument.presentationml.presentation + - extension: .txt + mime: text/plain + - extension: .rtf + mime: application/rtf + - extension: .odt + mime: application/vnd.oasis.opendocument.text + - extension: .ods + mime: application/vnd.oasis.opendocument.spreadsheet + - extension: .odp + mime: application/vnd.oasis.opendocument.presentation + - extension: .odg + mime: application/vnd.oasis.opendocument.graphics + - extension: .odc + mime: application/vnd.oasis.opendocument.chart + - extension: .odi + mime: application/vnd.oasis.opendocument.image + - extension: .jpg + mime: image/jpeg + - extension: .jpeg + mime: image/jpeg + - extension: .png + mime: image/png user: role_moderator: MODERATOR role_viewer: VIEWER @@ -392,80 +393,80 @@ public: toolbar: multiUserPenOnly: false colors: - - label: black - value: "#000000" - - label: white - value: "#ffffff" - - label: red - value: "#ff0000" - - label: orange - value: "#ff8800" - - label: eletricLime - value: "#ccff00" - - label: Lime - value: "#00ff00" - - label: Cyan - value: "#00ffff" - - label: dodgerBlue - value: "#0088ff" - - label: blue - value: "#0000ff" - - label: violet - value: "#8800ff" - - label: magenta - value: "#ff00ff" - - label: silver - value: "#c0c0c0" + - label: black + value: '#000000' + - label: white + value: '#ffffff' + - label: red + value: '#ff0000' + - label: orange + value: '#ff8800' + - label: eletricLime + value: '#ccff00' + - label: Lime + value: '#00ff00' + - label: Cyan + value: '#00ffff' + - label: dodgerBlue + value: '#0088ff' + - label: blue + value: '#0000ff' + - label: violet + value: '#8800ff' + - label: magenta + value: '#ff00ff' + - label: silver + value: '#c0c0c0' thickness: - - value: 14 - - value: 12 - - value: 10 - - value: 8 - - value: 6 - - value: 4 - - value: 2 - - value: 1 + - value: 14 + - value: 12 + - value: 10 + - value: 8 + - value: 6 + - value: 4 + - value: 2 + - value: 1 font_sizes: - - value: 36 - - value: 32 - - value: 28 - - value: 24 - - value: 20 - - value: 16 + - value: 36 + - value: 32 + - value: 28 + - value: 24 + - value: 20 + - value: 16 tools: - - icon: text_tool - value: text - - icon: line_tool - value: line - - icon: circle_tool - value: ellipse - - icon: triangle_tool - value: triangle - - icon: rectangle_tool - value: rectangle - - icon: pen_tool - value: pencil - - icon: hand - value: hand + - icon: text_tool + value: text + - icon: line_tool + value: line + - icon: circle_tool + value: ellipse + - icon: triangle_tool + value: triangle + - icon: rectangle_tool + value: rectangle + - icon: pen_tool + value: pencil + - icon: hand + value: hand presenterTools: - - text - - line - - ellipse - - triangle - - rectangle - - pencil - - hand + - text + - line + - ellipse + - triangle + - rectangle + - pencil + - hand multiUserTools: - - text - - line - - ellipse - - triangle - - rectangle - - pencil - - hand + - text + - line + - ellipse + - triangle + - rectangle + - pencil + - hand clientLog: server: - enabled: true + enabled: false level: info console: enabled: true @@ -477,7 +478,7 @@ public: method: POST throttleInterval: 400 flushOnClose: true - logTag: "" + logTag: '' private: app: host: 127.0.0.1 @@ -499,15 +500,15 @@ private: toAkkaApps: to-akka-apps-redis-channel toThirdParty: to-third-party-redis-channel subscribeTo: - - to-html5-redis-channel - - from-akka-apps-* - - from-third-party-redis-channel - - from-etherpad-redis-channel + - to-html5-redis-channel + - from-akka-apps-* + - from-third-party-redis-channel + - from-etherpad-redis-channel async: - - from-akka-apps-wb-redis-channel + - from-akka-apps-wb-redis-channel ignored: - - CheckAlivePongSysMsg - - DoLatencyTracerMsg + - CheckAlivePongSysMsg + - DoLatencyTracerMsg serverLog: level: info streamerLog: false @@ -543,4 +544,3 @@ private: version: 10 - browser: YandexBrowser version: 19 -