Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1046 commits
Select commit Hold shift + click to select a range
022d9a9
Create styles.js
hiroshisuga Apr 1, 2023
930ae9b
add common/
hiroshisuga Apr 1, 2023
a92c184
fix: record-and-playback/core/Gemfile & record-and-playback/core/Gemf…
snyk-bot Apr 4, 2023
d1b2d6b
fix: styles -> Styled
hiroshisuga Apr 5, 2023
c91909e
class Button -> Styled.DetachWindowButton
hiroshisuga Apr 5, 2023
63dcf03
add DetachWindowButton to export
hiroshisuga Apr 5, 2023
81a2d88
add more styles for detachbutton
hiroshisuga Apr 5, 2023
ed3e335
simplify detachbutton
hiroshisuga Apr 5, 2023
d67b1ce
fix ptoolbar position
hiroshisuga Apr 5, 2023
29ab439
Fix: export styles
hiroshisuga Apr 5, 2023
39e9a62
Remove comments in React component giving errors
hiroshisuga Apr 5, 2023
71f5bf9
comment out
hiroshisuga Apr 5, 2023
247b0c5
Merge pull request #17440 from bigbluebutton/snyk-fix-cd40574114e2df0…
antobinary Apr 5, 2023
42a95fb
fix: record-and-playback/core/Gemfile & record-and-playback/core/Gemf…
snyk-bot Apr 5, 2023
4ec2b8e
Merge pull request #17470 from bigbluebutton/snyk-fix-63be3fa75ebf48b…
antobinary Apr 5, 2023
4509cf2
comment on web.nginx location
hiroshisuga Apr 6, 2023
c50fdaa
styles -> Styled
hiroshisuga Apr 6, 2023
c855a48
styles -> Styled
hiroshisuga Apr 6, 2023
51a1ce9
[backport-pr-17463] - Backport of the new table structure for 2.5
GuiLeme Apr 6, 2023
c15b203
classname: Styled.ExternalVideoCloseButton
hiroshisuga Apr 6, 2023
74c003b
export ExternalVideoCloseButton
hiroshisuga Apr 6, 2023
ef14b03
Merge pull request #17490 from GuiLeme/backport-pr-17463
antobinary Apr 6, 2023
52c800c
Delete bbb-icons.woff
hiroshisuga Apr 6, 2023
fa1fe96
Create dummy.txt
hiroshisuga Apr 6, 2023
64764c1
new icon file
hiroshisuga Apr 6, 2023
9b6a309
Delete dummy.txt
hiroshisuga Apr 6, 2023
0722e2e
detached toolbar position fix
hiroshisuga Apr 7, 2023
9b940af
fix upload -> message.upload
hiroshisuga Apr 7, 2023
c92e130
modify presentation-menu for detaching
hiroshisuga Apr 7, 2023
2eed2b2
position of presentationMenu popup
hiroshisuga Apr 7, 2023
b443125
pass prop presentationWindow to ToolbarSubmenu
hiroshisuga Apr 8, 2023
cb8e39c
fix: use presentationWindow in submenu
hiroshisuga Apr 8, 2023
d8c2fd9
prop presentationWindow in toolbar-submenu
hiroshisuga Apr 8, 2023
e556b7e
Update component.jsx
hiroshisuga Apr 8, 2023
d6c02d2
tabindex -> tabIndex
hiroshisuga Apr 8, 2023
dbac7e8
Update component.jsx
hiroshisuga Apr 8, 2023
abdb165
add 'light' to the color preset list
hiroshisuga Apr 8, 2023
a2817c9
Update component.jsx
hiroshisuga Apr 8, 2023
4ccbfd4
suppress warning on the type of a-selector.text
hiroshisuga Apr 8, 2023
c7c6fd1
fix font submenu error
hiroshisuga Apr 8, 2023
5968ed7
type of drawObject can be object
hiroshisuga Apr 8, 2023
bafd746
type of drawObject can be object
hiroshisuga Apr 8, 2023
d0a52f3
fix detached window resizing
hiroshisuga Apr 8, 2023
cbc709d
change the order+color of end / quit meeting menu
hiroshisuga Apr 8, 2023
b36dba6
Almost rewrite style.js of upload/media
hiroshisuga Apr 8, 2023
3318b4e
add Icon import
hiroshisuga Apr 8, 2023
83fc5ad
comment out margin-left
hiroshisuga Apr 8, 2023
08f1e87
Almost rewrite components of upload/media
hiroshisuga Apr 8, 2023
74d5a7b
modify indent
hiroshisuga Apr 8, 2023
89d8261
More generic regexp for injecting styles
hiroshisuga Apr 8, 2023
972ff9c
move copyStyles to service.js
hiroshisuga Apr 9, 2023
48fe546
move copyStyles to service.js
hiroshisuga Apr 9, 2023
f1e6282
add styles in text for injection to detached
hiroshisuga Apr 9, 2023
0c79e4a
inject styles into detached window
hiroshisuga Apr 9, 2023
2278992
styles of submenu icon size and text outline
hiroshisuga Apr 9, 2023
c11f9c5
fix toggle button of hideannotations
hiroshisuga Apr 9, 2023
f0c4820
fix export QuickLinksButton
hiroshisuga Apr 10, 2023
87a4705
fix QuickLinksButton
hiroshisuga Apr 10, 2023
e738b19
[needs revise!] optionsPoll -> optionsWithLabels
hiroshisuga Apr 10, 2023
f27f1d5
revert parseCurrentSlideContent
hiroshisuga Apr 10, 2023
746b7c3
remove spaces
hiroshisuga Apr 10, 2023
ffbc388
remove poll text length restriction for WB
hiroshisuga Apr 10, 2023
9392474
push from 2.6
hiroshisuga Apr 10, 2023
8fb6799
revert the change remove poll length restriction
hiroshisuga Apr 11, 2023
69cc26e
revert revert parseCurrentSlideContent
hiroshisuga Apr 11, 2023
3760ef9
revert optionsPoll -> optionsWithLabels
hiroshisuga Apr 11, 2023
c35f3f6
fix custom poll
hiroshisuga Apr 11, 2023
14b0997
fix quickpoll label
hiroshisuga Apr 11, 2023
0175ecf
remove codes commented out
hiroshisuga Apr 11, 2023
4354e6e
remove code commented out
hiroshisuga Apr 11, 2023
f77624f
Merge pull request #169 from bigbluebutton/v2.5.x-release
hiroshisuga Apr 11, 2023
90a2c1c
Merge pull request #170 from bigbluebutton/v2.5.x-release
hiroshisuga Apr 11, 2023
8e3e5f2
remove log showing CSS
hiroshisuga Apr 11, 2023
6de87a1
cursor pointer for external video
hiroshisuga Apr 11, 2023
214f08d
cursor pointer for shared media
hiroshisuga Apr 11, 2023
556a595
styled.name
hiroshisuga Apr 11, 2023
de58fa3
Styled.Name
hiroshisuga Apr 11, 2023
429dbb0
fix position of non-sync pencils
hiroshisuga Apr 11, 2023
bb5b47a
add presentationWindow for iOS text
hiroshisuga Apr 11, 2023
2804a80
Merge pull request #17349 from sripathroy/patch-2
antobinary Apr 11, 2023
d3f946c
Merge pull request #17499 from hiroshisuga/patch-69
antobinary Apr 11, 2023
0168be7
Merge pull request #17500 from hiroshisuga/patch-70
antobinary Apr 11, 2023
57a0ae1
Merge pull request #17501 from hiroshisuga/patch-71
ramonlsouza Apr 11, 2023
d4d5551
Fix bug the text ghost remains
hiroshisuga Apr 12, 2023
3d8cf5e
revert quick poll regexp
hiroshisuga Apr 12, 2023
19e346a
fix wrong comment out (//)
hiroshisuga Apr 12, 2023
67c0a56
Apply translations in ru (#17543)
transifex-integration[bot] Apr 12, 2023
7ce610d
Update component.jsx
hiroshisuga Apr 16, 2023
deef9ac
Update WhiteboardKeyUtil.scala
hiroshisuga May 4, 2023
1f7c6fb
Update WhiteboardModel.scala
hiroshisuga May 4, 2023
a0c3c8e
Update WhiteboardModel.scala
hiroshisuga May 4, 2023
f0769e6
Delete FileUploadedSysMsgHdlr.scala
hiroshisuga May 4, 2023
3ac0f49
Create FileUploadedSysMsgHdlr.scala
hiroshisuga May 4, 2023
34288a8
Update ChangeLockSettingsInMeetingCmdMsgHdlr.scala
hiroshisuga May 4, 2023
0000694
Update GetLockSettingsReqMsgHdlr.scala
hiroshisuga May 4, 2023
2c62fce
Delete ModifyWBModePubMsgHdlr.scala
hiroshisuga May 4, 2023
e9d5732
Delete MoveWhiteboardAnnotationsPubMsgHdlr.scala
hiroshisuga May 4, 2023
d9507cf
Delete RemoveWhiteboardAnnotationsPubMsgHdlr.scala
hiroshisuga May 4, 2023
861b44e
Delete ReorderWhiteboardAnnotationsPubMsgHdlr.scala
hiroshisuga May 4, 2023
4c41e89
Update SendWhiteboardAnnotationPubMsgHdlr.scala
hiroshisuga May 4, 2023
26225a9
Update WhiteboardApp2x.scala
hiroshisuga May 4, 2023
14dae1f
Update WhiteboardApp2x.scala
hiroshisuga May 4, 2023
a60050c
Update ReceivedJsonMsgHandlerActor.scala
hiroshisuga May 4, 2023
567ec93
Delete MoveAnnotationRecordEvent.scala
hiroshisuga May 4, 2023
b7f83cb
Delete RemoveAnnotationRecordEvent.scala
hiroshisuga May 4, 2023
68e1449
Delete ReorderAnnotationRecordEvent.scala
hiroshisuga May 4, 2023
556a675
Update MeetingActor.scala
hiroshisuga May 4, 2023
402561b
Update FromAkkaAppsMsgSenderActor.scala
hiroshisuga May 4, 2023
78bc32a
Update MeetingStatus2x.scala
hiroshisuga May 4, 2023
12e35f6
Update RedisRecorderActor.scala
hiroshisuga May 4, 2023
1d13faf
Update RedisRecorderActor.scala
hiroshisuga May 4, 2023
24f4096
Update Meeting2x.scala
hiroshisuga May 4, 2023
737212a
Update UsersMsgs.scala
hiroshisuga May 4, 2023
1719de3
Update WhiteboardMsgs.scala
hiroshisuga May 4, 2023
477d0d0
Update ApiParams.java
hiroshisuga May 4, 2023
70ae23e
Update ParamsProcessorUtil.java
hiroshisuga May 4, 2023
f15c75a
Update ParamsProcessorUtil.java
hiroshisuga May 4, 2023
da46da6
Update LockSettingsParams.java
hiroshisuga May 4, 2023
ffd6e07
Update BbbWebApiGWApp.scala
hiroshisuga May 4, 2023
0771bac
Update bbb-icons.css
hiroshisuga May 4, 2023
fe246a8
Update addAnnotation.js
hiroshisuga May 4, 2023
a1ec87e
Update eventHandlers.js
hiroshisuga May 4, 2023
6efa172
Delete whiteboardMoveAnnotations.js
hiroshisuga May 4, 2023
f6a60ca
Delete whiteboardRemoveAnnotations.js
hiroshisuga May 4, 2023
cf85ce1
Delete whiteboardReorderAnnotations.js
hiroshisuga May 4, 2023
8213a04
Update methods.js
hiroshisuga May 4, 2023
c7e4b7a
Delete moveAnnotation.js
hiroshisuga May 4, 2023
074c08d
Delete removeAnnotation.js
hiroshisuga May 4, 2023
ef797ff
Delete reorderAnnotation.js
hiroshisuga May 4, 2023
836ae1d
Update sendAnnotationHelper.js
hiroshisuga May 4, 2023
b22cad8
Delete moveAnnotation.js
hiroshisuga May 4, 2023
b19ae38
Delete reorderAnnotation.js
hiroshisuga May 4, 2023
87bb054
Update eventHandlers.js
hiroshisuga May 4, 2023
2ad1084
Delete modifyWBMode.js
hiroshisuga May 4, 2023
5f68231
Update methods.js
hiroshisuga May 4, 2023
a677e7c
Delete setVisited.js
hiroshisuga May 4, 2023
92fabab
Delete setWhiteboardMode.js
hiroshisuga May 4, 2023
a38830b
Update toggleLockSettings.js
hiroshisuga May 4, 2023
f14cd36
Update addMeeting.js
hiroshisuga May 4, 2023
04be216
Update changeLockSettings.js
hiroshisuga May 4, 2023
3807de5
Delete modifyWBMode.js
hiroshisuga May 4, 2023
215b0c8
Update modifyWhiteboardAccess.js
hiroshisuga May 4, 2023
7b6dc6a
Update modifyWhiteboardAccess.js
hiroshisuga May 4, 2023
708eb91
Update component.jsx
hiroshisuga May 4, 2023
ed2fbfb
Update container.jsx
hiroshisuga May 4, 2023
2780f6b
Update service.js
hiroshisuga May 4, 2023
d586ffe
Update component.jsx
hiroshisuga May 4, 2023
89d5958
Update component.jsx
hiroshisuga May 4, 2023
49ac035
Update component.jsx
hiroshisuga May 4, 2023
e708a1f
Update component.jsx
hiroshisuga May 4, 2023
8431242
Update component.jsx
hiroshisuga May 4, 2023
f314e92
Update component.jsx
hiroshisuga May 4, 2023
05b6b75
Update component.jsx
hiroshisuga May 4, 2023
5af2762
Update container.jsx
hiroshisuga May 4, 2023
0beddfb
Update service.js
hiroshisuga May 4, 2023
ad0796b
Update service.js
hiroshisuga May 4, 2023
3568c66
Update component.jsx
hiroshisuga May 4, 2023
1590cfc
Update component.jsx
hiroshisuga May 4, 2023
8e5f473
Update component.jsx
hiroshisuga May 4, 2023
218a28f
Update component.jsx
hiroshisuga May 4, 2023
103b19e
Update styles.js
hiroshisuga May 4, 2023
b58ffc5
Update service.js
hiroshisuga May 4, 2023
c49753c
Update service.js
hiroshisuga May 4, 2023
4b82afe
Update component.jsx
hiroshisuga May 4, 2023
e2488cd
Update styles.js
hiroshisuga May 4, 2023
395271d
Update component.jsx
hiroshisuga May 4, 2023
032fff9
Update component.jsx
hiroshisuga May 4, 2023
1018f5a
Update service.js
hiroshisuga May 4, 2023
01f03fa
Update component.jsx
hiroshisuga May 4, 2023
fe15a69
Update component.jsx
hiroshisuga May 4, 2023
431834a
Update component.jsx
hiroshisuga May 4, 2023
49d85b9
Update component.jsx
hiroshisuga May 4, 2023
9ca66c2
Delete container.jsx
hiroshisuga May 4, 2023
b2546be
Update component.jsx
hiroshisuga May 4, 2023
9c5f8ad
Update container.jsx
hiroshisuga May 4, 2023
ff4b445
Update component.jsx
hiroshisuga May 4, 2023
9321036
Delete component.jsx
hiroshisuga May 4, 2023
b85a5ae
Update component.jsx
hiroshisuga May 4, 2023
f2ceb00
Delete component.jsx
hiroshisuga May 4, 2023
8347d82
Update component.jsx
hiroshisuga May 4, 2023
97d7fed
Update component.jsx
hiroshisuga May 4, 2023
e5b3e68
Update component.jsx
hiroshisuga May 4, 2023
aeb1501
Update component.jsx
hiroshisuga May 4, 2023
f2cb3ca
Update component.jsx
hiroshisuga May 4, 2023
f061d93
Update container.jsx
hiroshisuga May 4, 2023
458fc64
Update service.js
hiroshisuga May 4, 2023
592d7f2
Update service.js
hiroshisuga May 4, 2023
280c19e
Update component.jsx
hiroshisuga May 4, 2023
d62c08a
Update service.js
hiroshisuga May 4, 2023
fa9994b
Update component.jsx
hiroshisuga May 4, 2023
2bcdab4
Update container.jsx
hiroshisuga May 4, 2023
2feee1d
Update component.jsx
hiroshisuga May 4, 2023
da9874e
Update component.jsx
hiroshisuga May 4, 2023
e8fbd21
Update component.jsx
hiroshisuga May 4, 2023
cc0f5b5
Update component.jsx
hiroshisuga May 4, 2023
6ef6533
Update component.jsx
hiroshisuga May 4, 2023
4acd94e
Update service.js
hiroshisuga May 4, 2023
87a2f5c
Update component.jsx
hiroshisuga May 4, 2023
7922e53
Update component.jsx
hiroshisuga May 4, 2023
17979ba
Update component.jsx
hiroshisuga May 4, 2023
f25df6a
Update component.jsx
hiroshisuga May 4, 2023
fde7c87
Update component.jsx
hiroshisuga May 4, 2023
329f611
Update container.jsx
hiroshisuga May 4, 2023
988af7a
Update component.jsx
hiroshisuga May 4, 2023
2d1873d
Update settings.yml
hiroshisuga May 4, 2023
591314a
Update en.json
hiroshisuga May 4, 2023
d4ab168
Update ja.json
hiroshisuga May 4, 2023
9826339
Update ja.json
hiroshisuga May 4, 2023
dd37fa5
Delete eraser.svg
hiroshisuga May 4, 2023
6722d20
Delete marker.svg
hiroshisuga May 4, 2023
41474a8
Update presentation.yml
hiroshisuga May 4, 2023
6d8bb00
Update presentation.rb
hiroshisuga May 4, 2023
9f74e8d
Update presentation.rb
hiroshisuga May 4, 2023
007e075
Update presentation.rb
hiroshisuga May 4, 2023
2da2a78
Delete eraser.png
hiroshisuga May 4, 2023
db5bccd
Delete marker.png
hiroshisuga May 4, 2023
74b17c0
Add files via upload
hiroshisuga May 4, 2023
b58c43e
Merge branch 'bigbluebutton:v2.5.x-release' into v2.5.x-release
hiroshisuga May 4, 2023
4fc221c
Merge pull request #185 from hiroshisuga/testv25xToMerge
hiroshisuga May 4, 2023
297b339
resolve conflict
hiroshisuga May 5, 2023
009b6be
Merge pull request #187 from hiroshisuga/test2.6_toShowDiff_genupload
hiroshisuga May 5, 2023
8546f45
Update fr.json
hiroshisuga May 5, 2023
48804dd
Update Gemfile
hiroshisuga May 5, 2023
702b06e
Update Gemfile.lock
hiroshisuga May 5, 2023
c344f8e
Update bigbluebutton.properties
hiroshisuga May 5, 2023
be0b540
Update component.jsx
hiroshisuga May 5, 2023
31b7c74
Update bigbluebutton.properties
hiroshisuga May 5, 2023
c259e69
Update archive.rb
hiroshisuga May 5, 2023
4c696f0
better comment out
hiroshisuga May 5, 2023
9f4784e
remove }
hiroshisuga May 5, 2023
6232a9c
bad semicolons
hiroshisuga May 5, 2023
bcef2aa
missing import QuickLinksDropdown
hiroshisuga May 5, 2023
1557c25
get isFullscreen and fullscreenRef from props
hiroshisuga May 5, 2023
d94087c
Update deploy.sh
hiroshisuga May 6, 2023
695fd4f
Update bbb-web.nginx
hiroshisuga May 6, 2023
271b821
Update deploy.sh
hiroshisuga May 6, 2023
7288a71
Update service.js
hiroshisuga May 6, 2023
e4aec91
replace 99 with MAX_CUSTOM_FIELDS
hiroshisuga May 6, 2023
938b9ff
change icon and its size for quick link dropdown
hiroshisuga May 6, 2023
45335d1
remove smartmedia icon, move quicklink icon there
hiroshisuga May 6, 2023
45c56c8
Update component.jsx
hiroshisuga May 6, 2023
b5a7dfa
add answers that was removed by mistake
hiroshisuga May 6, 2023
0bafcf4
functional Yes/No button
hiroshisuga May 6, 2023
e8ee44d
日本語翻訳
hiroshisuga Jun 3, 2023
daa25f2
Merge branch 'dev2.6.9_genupload_qpoll_qlink' into test269_genupload_…
hiroshisuga Jun 11, 2023
b10e09e
Merge branch 'test269_showdiff_genupload_qpoll_qlink' into dev2.6.9_g…
hiroshisuga Jun 11, 2023
b191f66
Merge pull request #206 from hiroshisuga/test269_genupload_qpoll_qlink
hiroshisuga Jun 11, 2023
be9d54b
Fix: add variables to parseCurrentSlideContent
hiroshisuga Jun 12, 2023
7392628
Fix: quicklinks button style not transferred
hiroshisuga Jun 22, 2023
c0361be
Fix: quicklinks button style not transferred
hiroshisuga Jun 23, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package org.bigbluebutton.core.apps.upload

import org.bigbluebutton.common2.msgs._
import org.bigbluebutton.core.bus.MessageBus
import org.bigbluebutton.core.running.LiveMeeting

trait FileUploadedSysMsgHdlr {
this: UploadApp2x =>

def handle(
msg: FileUploadedSysMsg,
liveMeeting: LiveMeeting,
bus: MessageBus
): Unit = {

val meetingId = liveMeeting.props.meetingProp.intId
val userId = msg.header.userId

def broadcastFileUploadedEvtMsg(msg: FileUploadedSysMsg): Unit = {
val uploadId = msg.body.uploadId
val source = msg.body.source
val filename = msg.body.filename

val routing = Routing.addMsgToClientRouting(MessageTypes.DIRECT, meetingId, userId)
val envelope = BbbCoreEnvelope(FileUploadedEvtMsg.NAME, routing)
val header = BbbClientMsgHeader(FileUploadedEvtMsg.NAME, meetingId, userId)
val body = FileUploadedEvtMsgBody(uploadId, source, filename)
val event = FileUploadedEvtMsg(header, body)
val msgEvent = BbbCommonEnvCoreMsg(envelope, event)

bus.outGW.send(msgEvent)
}

broadcastFileUploadedEvtMsg(msg)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package org.bigbluebutton.core.apps.upload

import akka.actor.ActorContext
import akka.event.Logging

class UploadApp2x(implicit val context: ActorContext)
extends UploadRequestReqMsgHdlr
with FileUploadedSysMsgHdlr {

val log = Logging(context.system, getClass)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
package org.bigbluebutton.core.apps.upload

import org.bigbluebutton.common2.msgs._
import org.bigbluebutton.core.bus.MessageBus
import org.bigbluebutton.core.running.LiveMeeting
import org.bigbluebutton.core.apps.{ PermissionCheck, RightsManagementTrait }
import org.bigbluebutton.core.util.RandomStringGenerator

trait UploadRequestReqMsgHdlr extends RightsManagementTrait {
this: UploadApp2x =>

def handle(
msg: UploadRequestReqMsg,
liveMeeting: LiveMeeting,
bus: MessageBus
): Unit = {

val meetingId = liveMeeting.props.meetingProp.intId
val userId = msg.header.userId
val source = msg.body.source
val filename = msg.body.filename
val timestamp = msg.body.timestamp

// To system
def broadcastUploadRequestSysMsg(
msg: UploadRequestReqMsg,
token: String
): Unit = {

val routing = collection.immutable.HashMap("sender" -> "bbb-apps-akka")
val envelope = BbbCoreEnvelope(UploadRequestSysMsg.NAME, routing)
val header = BbbCoreHeaderWithMeetingId(UploadRequestSysMsg.NAME, meetingId)
val body = UploadRequestSysMsgBody(source, filename, userId, token)
val event = UploadRequestSysMsg(header, body)
val msgEvent = BbbCommonEnvCoreMsg(envelope, event)

bus.outGW.send(msgEvent)
}

// To client
def broadcastUploadRequestRespMsg(
msg: UploadRequestReqMsg,
success: Boolean = false,
token: String = null
): Unit = {

val routing = Routing.addMsgToClientRouting(MessageTypes.DIRECT, meetingId, userId)
val envelope = BbbCoreEnvelope(UploadRequestRespMsg.NAME, routing)
val header = BbbClientMsgHeader(UploadRequestRespMsg.NAME, meetingId, userId)
val body = UploadRequestRespMsgBody(source, filename, userId, success, timestamp, token)
val event = UploadRequestRespMsg(header, body)
val msgEvent = BbbCommonEnvCoreMsg(envelope, event)

bus.outGW.send(msgEvent)
}

if (permissionFailed(PermissionCheck.GUEST_LEVEL, PermissionCheck.MOD_LEVEL, liveMeeting.users2x, userId)) {
broadcastUploadRequestRespMsg(msg)
} else {
val token = RandomStringGenerator.randomAlphanumericString(32)
broadcastUploadRequestSysMsg(msg, token)
broadcastUploadRequestRespMsg(msg, true, token)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -363,6 +363,12 @@ class ReceivedJsonMsgHandlerActor(
case GetScreenshareStatusReqMsg.NAME =>
routeGenericMsg[GetScreenshareStatusReqMsg](envelope, jsonNode)

// Upload
case UploadRequestReqMsg.NAME =>
routeGenericMsg[UploadRequestReqMsg](envelope, jsonNode)
case FileUploadedSysMsg.NAME =>
routeGenericMsg[FileUploadedSysMsg](envelope, jsonNode)

// Lock settings
case LockUserInMeetingCmdMsg.NAME =>
routeGenericMsg[LockUserInMeetingCmdMsg](envelope, jsonNode)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2017 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/

package org.bigbluebutton.core.record.events

trait AbstractUploadRecordEvent extends RecordEvent {
setModule("UPLOAD")
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2017 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/

package org.bigbluebutton.core.record.events

class FileUploadedRecordEvent extends AbstractUploadRecordEvent {
import FileUploadedRecordEvent._

setEvent("FileUploadedEvent")

def setUserId(userId: String) {
eventMap.put(USER_ID, userId)
}

def setUploadId(uploadId: String) {
eventMap.put(UPLOAD_ID, uploadId)
}

def setSource(source: String) {
eventMap.put(SOURCE, source)
}

def setFilename(filename: String) {
eventMap.put(FILENAME, filename)
}
}

object FileUploadedRecordEvent {
protected final val USER_ID = "userId"
protected final val UPLOAD_ID = "uploadId"
protected final val SOURCE = "source"
protected final val FILENAME = "filename"
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import akka.actor.SupervisorStrategy.Resume
import org.bigbluebutton.SystemConfiguration
import org.bigbluebutton.core.apps.groupchats.GroupChatHdlrs
import org.bigbluebutton.core.apps.presentationpod._
import org.bigbluebutton.core.apps.upload.UploadApp2x
import org.bigbluebutton.core.apps.users._
import org.bigbluebutton.core.apps.whiteboard.ClientToServerLatencyTracerMsgHdlr
import org.bigbluebutton.core.domain._
Expand Down Expand Up @@ -133,6 +134,7 @@ class MeetingActor(
val usersApp = new UsersApp(liveMeeting, outGW, eventBus)
val groupChatApp = new GroupChatHdlrs
val presentationPodsApp = new PresentationPodHdlrs
val uploadApp = new UploadApp2x
val pollApp = new PollApp2x
val webcamApp2x = new WebcamApp2x
val wbApp = new WhiteboardApp2x
Expand Down Expand Up @@ -538,6 +540,10 @@ class MeetingActor(
case m: UpdateCaptionOwnerPubMsg => captionApp2x.handle(m, liveMeeting, msgBus)
case m: SendCaptionHistoryReqMsg => captionApp2x.handle(m, liveMeeting, msgBus)

// Upload
case m: UploadRequestReqMsg => uploadApp.handle(m, liveMeeting, msgBus)
case m: FileUploadedSysMsg => uploadApp.handle(m, liveMeeting, msgBus)

// Guests
case m: GetGuestsWaitingApprovalReqMsg => handleGetGuestsWaitingApprovalReqMsg(m)
case m: SetGuestPolicyCmdMsg => handleSetGuestPolicyMsg(m)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,11 @@ class AnalyticsActor(val includeChat: Boolean) extends Actor with ActorLogging {
case m: SetPrivateGuestLobbyMessageCmdMsg => logMessage(msg)
case m: PrivateGuestLobbyMsgChangedEvtMsg => logMessage(msg)

// Upload
case m: UploadRequestReqMsg => logMessage(msg)
case m: UploadRequestRespMsg => logMessage(msg)
case m: FileUploadedEvtMsg => logMessage(msg)

// System
case m: ClientToServerLatencyTracerMsg => traceMessage(msg)
case m: ServerToClientLatencyTracerMsg => traceMessage(msg)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,9 @@ class RedisRecorderActor(
case m: MeetingEndingEvtMsg => handleEndAndKickAllSysMsg(m)
case m: MeetingCreatedEvtMsg => handleStarterConfigurations(m)

// Upload
case m: FileUploadedEvtMsg => handleFileUploadedEvtMsg(m)

// Recording
case m: RecordingChapterBreakSysMsg => handleRecordingChapterBreakSysMsg(m)

Expand Down Expand Up @@ -579,6 +582,16 @@ class RedisRecorderActor(
record(msg.header.meetingId, ev.toMap.asJava)
}

private def handleFileUploadedEvtMsg(msg: FileUploadedEvtMsg): Unit = {
val ev = new FileUploadedRecordEvent()
ev.setUserId(msg.header.userId)
ev.setUploadId(msg.body.uploadId)
ev.setSource(msg.body.source)
ev.setFilename(msg.body.filename)

record(msg.header.meetingId, ev.toMap.asJava)
}

private def handleRecordingChapterBreakSysMsg(msg: RecordingChapterBreakSysMsg): Unit = {
val ev = new RecordChapterBreakRecordEvent()
ev.setMeetingId(msg.header.meetingId)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package org.bigbluebutton.common2.msgs

// client to akka-apps
object UploadRequestReqMsg { val NAME = "UploadRequestReqMsg" }
case class UploadRequestReqMsg(header: BbbClientMsgHeader, body: UploadRequestReqMsgBody) extends StandardMsg
case class UploadRequestReqMsgBody(source: String, filename: String, timestamp: Long)

// akka-apps to client
object UploadRequestRespMsg { val NAME = "UploadRequestRespMsg" }
case class UploadRequestRespMsg(header: BbbClientMsgHeader, body: UploadRequestRespMsgBody) extends StandardMsg
case class UploadRequestRespMsgBody(source: String, filename: String, userId: String, success: Boolean, timestamp: Long, token: String = null)

object FileUploadedEvtMsg { val NAME = "FileUploadedEvtMsg" }
case class FileUploadedEvtMsg(header: BbbClientMsgHeader, body: FileUploadedEvtMsgBody) extends StandardMsg
case class FileUploadedEvtMsgBody(uploadId: String, source: String, filename: String)

// akka-apps to bbb-web
object UploadRequestSysMsg { val NAME = "UploadRequestSysMsg" }
case class UploadRequestSysMsg(header: BbbCoreHeaderWithMeetingId, body: UploadRequestSysMsgBody) extends BbbCoreMsg
case class UploadRequestSysMsgBody(source: String, filename: String, userId: String, token: String)

// bbb-web to akka-apps
object FileUploadedSysMsg { val NAME = "FileUploadedSysMsg" }
case class FileUploadedSysMsg(header: BbbClientMsgHeader, body: FileUploadedSysMsgBody) extends StandardMsg
case class FileUploadedSysMsgBody(uploadId: String, source: String, filename: String, contentType: String)
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
import org.bigbluebutton.api.domain.RegisteredUser;
import org.bigbluebutton.api.domain.User;
import org.bigbluebutton.api.domain.UserSession;
import org.bigbluebutton.api.domain.UploadedFile;
import org.bigbluebutton.api.messaging.MessageListener;
import org.bigbluebutton.api.messaging.converters.messages.DestroyMeetingMessage;
import org.bigbluebutton.api.messaging.converters.messages.EndMeetingMessage;
Expand Down Expand Up @@ -272,6 +273,33 @@ private void kickOffProcessingOfRecording(Meeting m) {
}
}

public Boolean isUploadRequestValid(String meetingId, String source, String filename, String userId, String token) {
Meeting m = getMeeting(meetingId);
if (m != null) {
return m.isUploadRequestValid(source, filename, userId, token);
} else {
return false;
}
}

public Boolean isDownloadRequestValid(String meetingId, String source, String uploadId) {
Meeting m = getMeeting(meetingId);
if (m != null) {
return m.hasUploadedFile(source, uploadId);
} else {
return false;
}
}

public UploadedFile getUploadedFile(String meetingId, String uploadId) {
Meeting m = getMeeting(meetingId);
if (m != null) {
return m.getUploadedFile(uploadId);
} else {
return null;
}
}

public Boolean authzTokenIsValid(String authzToken) { // Note we DO NOT expire the token
return uploadAuthzTokens.containsKey(authzToken);
}
Expand Down Expand Up @@ -617,6 +645,22 @@ public void processRecording(Meeting m) {
}
}

public void fileUploaded(
String uploadId,
String source,
String filename,
String contentType,
String extension,
String userId,
String meetingId
) {
Meeting m = getMeeting(meetingId);
if (m != null) {
m.addUploadedFile(source, filename, contentType, extension, uploadId);
gw.fileUploaded(uploadId, source, filename, contentType, userId, meetingId);
}
}

public void endMeeting(String meetingId) {
handle(new EndMeeting(meetingId));
}
Expand Down Expand Up @@ -734,6 +778,13 @@ private void processGuestStatusChangedEventMsg(GuestStatusChangedEventMsg messag

}

private void processUploadRequest(UploadRequest message) {
Meeting m = getMeeting(message.meetingId);
if (m != null) {
m.addUploadRequest(message.source, message.filename, message.userId, message.token);
}
}

private void processPresentationUploadToken(PresentationUploadToken message) {
uploadAuthzTokens.put(message.authzToken, message);
}
Expand Down Expand Up @@ -1157,6 +1208,8 @@ public void run() {
processRegisterUser((RegisterUser) message);
} else if (message instanceof CreateBreakoutRoom) {
processCreateBreakoutRoom((CreateBreakoutRoom) message);
} else if (message instanceof UploadRequest) {
processUploadRequest((UploadRequest) message);
} else if (message instanceof PresentationUploadToken) {
processPresentationUploadToken((PresentationUploadToken) message);
} else if (message instanceof PositionInWaitingQueueUpdated) {
Expand Down
Loading