- pass token on video connect

This commit is contained in:
Richard Alam 2017-11-01 14:55:48 -07:00
parent 0e8ec5f3b4
commit 4e8f2abbb3
7 changed files with 45 additions and 6 deletions

View File

@ -297,6 +297,10 @@ class ReceivedJsonMsgHandlerActor(
case CreateGroupChatReqMsg.NAME => case CreateGroupChatReqMsg.NAME =>
routeGenericMsg[CreateGroupChatReqMsg](envelope, jsonNode) routeGenericMsg[CreateGroupChatReqMsg](envelope, jsonNode)
case ValidateConnAuthTokenSysMsg.NAME =>
println("************** RECEIVED ValidateConnAuthTokenSysMsg.NAME")
routeGenericMsg[ValidateConnAuthTokenSysMsg](envelope, jsonNode)
case _ => case _ =>
log.error("Cannot route envelope name " + envelope.name) log.error("Cannot route envelope name " + envelope.name)
// do nothing // do nothing

View File

@ -128,4 +128,15 @@ case class CheckAlivePongSysMsgBody(system: String, timestamp: Long)
object RecordingChapterBreakSysMsg { val NAME = "RecordingChapterBreakSysMsg" } object RecordingChapterBreakSysMsg { val NAME = "RecordingChapterBreakSysMsg" }
case class RecordingChapterBreakSysMsg(header: BbbCoreHeaderWithMeetingId, case class RecordingChapterBreakSysMsg(header: BbbCoreHeaderWithMeetingId,
body: RecordingChapterBreakSysMsgBody) extends BbbCoreMsg body: RecordingChapterBreakSysMsgBody) extends BbbCoreMsg
case class RecordingChapterBreakSysMsgBody(meetingId: String, timestamp: Long) case class RecordingChapterBreakSysMsgBody(meetingId: String, timestamp: Long)
object ValidateConnAuthTokenSysMsg { val NAME = "ValidateConnAuthTokenSysMsg" }
case class ValidateConnAuthTokenSysMsg(header: BbbClientMsgHeader,
body: ValidateConnAuthTokenSysMsgBody) extends StandardMsg
case class ValidateConnAuthTokenSysMsgBody(meetingId: String, userId: String, authToken: String, conn: String)
object ValidateConnAuthTokenSysRespMsg { val NAME = "ValidateConnAuthTokenSysRespMsg" }
case class ValidateConnAuthTokenSysRespMsg(header: BbbCoreHeaderWithMeetingId,
body: ValidateConnAuthTokenSysRespMsgBody) extends BbbCoreMsg
case class ValidateConnAuthTokenSysRespMsgBody(meetingId: String, userId: String,
authToken: String, conn: String, authzed: Boolean)

View File

@ -88,13 +88,18 @@ public class VideoApplication extends MultiThreadedApplicationAdapter {
params = new Object[2]; params = new Object[2];
params[0] = "UNKNOWN-MEETING-ID"; params[0] = "UNKNOWN-MEETING-ID";
params[1] = "UNKNOWN-USER-ID"; params[1] = "UNKNOWN-USER-ID";
params[2] = "UNKNOWN-AUTH-TOKEN";
} }
String meetingId = ((String) params[0]).toString(); String meetingId = ((String) params[0]).toString();
String userId = ((String) params[1]).toString(); String userId = ((String) params[1]).toString();
String authToken = ((String) params[2]).toString();
Red5.getConnectionLocal().setAttribute("MEETING_ID", meetingId); Red5.getConnectionLocal().setAttribute("MEETING_ID", meetingId);
Red5.getConnectionLocal().setAttribute("USERID", userId); Red5.getConnectionLocal().setAttribute("USERID", userId);
Red5.getConnectionLocal().setAttribute("AUTH_TOKEN", authToken);
publisher.validateConnAuthToken(meetingId, userId, authToken);
String connType = getConnectionType(Red5.getConnectionLocal().getType()); String connType = getConnectionType(Red5.getConnectionLocal().getType());
String sessionId = Red5.getConnectionLocal().getSessionId(); String sessionId = Red5.getConnectionLocal().getSessionId();

View File

@ -8,6 +8,9 @@ import java.util.HashMap;
import java.util.Map; import java.util.Map;
import com.google.gson.Gson; import com.google.gson.Gson;
import org.bigbluebutton.common2.msgs.BbbClientMsgHeader;
import org.bigbluebutton.common2.msgs.ValidateConnAuthTokenSysMsg;
import org.bigbluebutton.common2.msgs.ValidateConnAuthTokenSysMsgBody;
public class MessagePublisher { public class MessagePublisher {
@ -16,7 +19,20 @@ public class MessagePublisher {
public void setMessageSender(MessageSender sender) { public void setMessageSender(MessageSender sender) {
this.sender = sender; this.sender = sender;
} }
public void validateConnAuthToken(String meetingId, String userId, String authToken) {
BbbClientMsgHeader header = new BbbClientMsgHeader("ValidateConnAuthTokenSysMsg", meetingId, userId);
ValidateConnAuthTokenSysMsgBody body = new ValidateConnAuthTokenSysMsgBody(meetingId,
userId, authToken, "VIDEO");
ValidateConnAuthTokenSysMsg msg = new ValidateConnAuthTokenSysMsg(header, body);
Gson gson = new Gson();
String json = gson.toJson(msg);
System.out.println("**** SENDING " + json);
sender.send("to-akka-apps-redis-channel", json);
}
// Polling // Polling
public void userSharedWebcamMessage(String meetingId, String userId, String streamId) { public void userSharedWebcamMessage(String meetingId, String userId, String streamId) {
UserSharedWebcamMessage msg = new UserSharedWebcamMessage(meetingId, userId, streamId); UserSharedWebcamMessage msg = new UserSharedWebcamMessage(meetingId, userId, streamId);

View File

@ -79,6 +79,8 @@ public class MessageSender {
public void run() { public void run() {
Jedis jedis = redisPool.getResource(); Jedis jedis = redisPool.getResource();
try { try {
System.out.println("**** PUBLISH TO " + channel + " msg=" + message);
jedis.publish(channel, message); jedis.publish(channel, message);
} catch(Exception e){ } catch(Exception e){
log.warn("Cannot publish the message to redis", e); log.warn("Cannot publish the message to redis", e);

View File

@ -154,7 +154,8 @@ package org.bigbluebutton.main.model
var curTime:Number = new Date().getTime(); var curTime:Number = new Date().getTime();
// Create connection with the server. // Create connection with the server.
nc.connect( this.baseURI, "portTestMeetingId-" + curTime, "portTestDummyUserId-" + curTime); nc.connect( this.baseURI, "portTestMeetingId-" + curTime,
"portTestDummyUserId-" + curTime, "portTestDummyToken-" + curTime);
status = "Connecting..."; status = "Connecting...";
} catch( e : ArgumentError ) { } catch( e : ArgumentError ) {
// Invalid parameters. // Invalid parameters.

View File

@ -29,14 +29,13 @@ package org.bigbluebutton.modules.videoconf.business
import flash.media.H264VideoStreamSettings; import flash.media.H264VideoStreamSettings;
import flash.net.NetConnection; import flash.net.NetConnection;
import flash.net.NetStream; import flash.net.NetStream;
import org.as3commons.logging.api.ILogger; import org.as3commons.logging.api.ILogger;
import org.as3commons.logging.api.getClassLogger; import org.as3commons.logging.api.getClassLogger;
import org.bigbluebutton.core.BBB; import org.bigbluebutton.core.BBB;
import org.bigbluebutton.core.Options; import org.bigbluebutton.core.Options;
import org.bigbluebutton.core.UsersUtil; import org.bigbluebutton.core.UsersUtil;
import org.bigbluebutton.core.managers.ReconnectionManager; import org.bigbluebutton.core.managers.ReconnectionManager;
import org.bigbluebutton.main.api.JSLog; import org.bigbluebutton.core.model.LiveMeeting;
import org.bigbluebutton.main.events.BBBEvent; import org.bigbluebutton.main.events.BBBEvent;
import org.bigbluebutton.modules.videoconf.events.ConnectedEvent; import org.bigbluebutton.modules.videoconf.events.ConnectedEvent;
import org.bigbluebutton.modules.videoconf.events.StartBroadcastEvent; import org.bigbluebutton.modules.videoconf.events.StartBroadcastEvent;
@ -82,7 +81,8 @@ package org.bigbluebutton.modules.videoconf.business
} }
public function connect():void { public function connect():void {
nc.connect(_url, UsersUtil.getInternalMeetingID(), UsersUtil.getMyUserID()); nc.connect(_url, UsersUtil.getInternalMeetingID(),
UsersUtil.getMyUserID(), LiveMeeting.inst().me.authToken);
} }
private function onAsyncError(event:AsyncErrorEvent):void{ private function onAsyncError(event:AsyncErrorEvent):void{