openvidu-server: add "data" property to POST /api/sessions/ID/connection

pull/370/head
pabloFuente 2019-10-31 10:31:27 +01:00
parent fb74074d9e
commit dfa7d7539c
4 changed files with 16 additions and 9 deletions

View File

@ -153,7 +153,8 @@ public abstract class SessionManager {
public abstract void removeFilterEventListener(Session session, Participant subscriber, String streamId, public abstract void removeFilterEventListener(Session session, Participant subscriber, String streamId,
String eventType); String eventType);
public abstract Participant publishIpcam(Session session, MediaOptions mediaOptions) throws Exception; public abstract Participant publishIpcam(Session session, MediaOptions mediaOptions, String serverMetadata)
throws Exception;
public abstract String getParticipantPrivateIdFromStreamId(String sessionId, String streamId) public abstract String getParticipantPrivateIdFromStreamId(String sessionId, String streamId)
throws OpenViduException; throws OpenViduException;
@ -307,7 +308,8 @@ public abstract class SessionManager {
} }
} }
public boolean isTokenValidInSession(String token, String sessionId, String participanPrivatetId) { public boolean isTokenValidInSession(String token, String sessionId, String participanPrivatetId,
String serverMetadata) {
if (!this.isInsecureParticipant(participanPrivatetId)) { if (!this.isInsecureParticipant(participanPrivatetId)) {
if (this.sessionidTokenTokenobj.get(sessionId) != null) { if (this.sessionidTokenTokenobj.get(sessionId) != null) {
return this.sessionidTokenTokenobj.get(sessionId).containsKey(token); return this.sessionidTokenTokenobj.get(sessionId).containsKey(token);
@ -317,7 +319,7 @@ public abstract class SessionManager {
} else { } else {
this.initializeCollections(sessionId); this.initializeCollections(sessionId);
this.sessionidTokenTokenobj.get(sessionId).putIfAbsent(token, this.sessionidTokenTokenobj.get(sessionId).putIfAbsent(token,
new Token(token, OpenViduRole.PUBLISHER, "", new Token(token, OpenViduRole.PUBLISHER, serverMetadata,
this.coturnCredentialsService.isCoturnAvailable() this.coturnCredentialsService.isCoturnAvailable()
? this.coturnCredentialsService.createUser() ? this.coturnCredentialsService.createUser()
: null, : null,

View File

@ -847,7 +847,7 @@ public class KurentoSessionManager extends SessionManager {
} }
@Override @Override
public Participant publishIpcam(Session session, MediaOptions mediaOptions) throws Exception { public Participant publishIpcam(Session session, MediaOptions mediaOptions, String serverMetadata) throws Exception {
final String sessionId = session.getSessionId(); final String sessionId = session.getSessionId();
final KurentoMediaOptions kMediaOptions = (KurentoMediaOptions) mediaOptions; final KurentoMediaOptions kMediaOptions = (KurentoMediaOptions) mediaOptions;
@ -887,7 +887,7 @@ public class KurentoSessionManager extends SessionManager {
this.newInsecureParticipant(rtspConnectionId); this.newInsecureParticipant(rtspConnectionId);
String token = RandomStringUtils.randomAlphanumeric(16).toLowerCase(); String token = RandomStringUtils.randomAlphanumeric(16).toLowerCase();
Token tokenObj = null; Token tokenObj = null;
if (this.isTokenValidInSession(token, sessionId, rtspConnectionId)) { if (this.isTokenValidInSession(token, sessionId, rtspConnectionId, serverMetadata)) {
tokenObj = this.consumeToken(sessionId, rtspConnectionId, token); tokenObj = this.consumeToken(sessionId, rtspConnectionId, token);
} }
Participant ipcamParticipant = this.newIpcamParticipant(sessionId, rtspConnectionId, tokenObj, location, Participant ipcamParticipant = this.newIpcamParticipant(sessionId, rtspConnectionId, tokenObj, location,

View File

@ -683,11 +683,13 @@ public class SessionRestController {
String rtspUri; String rtspUri;
Boolean adaptativeBitrate; Boolean adaptativeBitrate;
Boolean onlyPlayWithSubscribers; Boolean onlyPlayWithSubscribers;
String data;
try { try {
type = (String) params.get("type"); type = (String) params.get("type");
rtspUri = (String) params.get("rtspUri"); rtspUri = (String) params.get("rtspUri");
adaptativeBitrate = (Boolean) params.get("adaptativeBitrate"); adaptativeBitrate = (Boolean) params.get("adaptativeBitrate");
onlyPlayWithSubscribers = (Boolean) params.get("onlyPlayWithSubscribers"); onlyPlayWithSubscribers = (Boolean) params.get("onlyPlayWithSubscribers");
data = (String) params.get("data");
} catch (ClassCastException e) { } catch (ClassCastException e) {
return this.generateErrorResponse("Type error in some parameter", return this.generateErrorResponse("Type error in some parameter",
"/api/sessions/" + sessionId + "/connection", HttpStatus.BAD_REQUEST); "/api/sessions/" + sessionId + "/connection", HttpStatus.BAD_REQUEST);
@ -700,6 +702,7 @@ public class SessionRestController {
type = type != null ? type : "IPCAM"; type = type != null ? type : "IPCAM";
adaptativeBitrate = adaptativeBitrate != null ? adaptativeBitrate : true; adaptativeBitrate = adaptativeBitrate != null ? adaptativeBitrate : true;
onlyPlayWithSubscribers = onlyPlayWithSubscribers != null ? onlyPlayWithSubscribers : true; onlyPlayWithSubscribers = onlyPlayWithSubscribers != null ? onlyPlayWithSubscribers : true;
data = data != null ? data : "";
boolean hasAudio = true; boolean hasAudio = true;
boolean hasVideo = true; boolean hasVideo = true;
@ -709,10 +712,11 @@ public class SessionRestController {
Integer frameRate = null; Integer frameRate = null;
String videoDimensions = null; String videoDimensions = null;
KurentoMediaOptions mediaOptions = new KurentoMediaOptions(true, null, hasAudio, hasVideo, audioActive, KurentoMediaOptions mediaOptions = new KurentoMediaOptions(true, null, hasAudio, hasVideo, audioActive,
videoActive, typeOfVideo, frameRate, videoDimensions, null, false, rtspUri, adaptativeBitrate, onlyPlayWithSubscribers); videoActive, typeOfVideo, frameRate, videoDimensions, null, false, rtspUri, adaptativeBitrate,
onlyPlayWithSubscribers);
try { try {
Participant ipcamParticipant = this.sessionManager.publishIpcam(session, mediaOptions); Participant ipcamParticipant = this.sessionManager.publishIpcam(session, mediaOptions, data);
return new ResponseEntity<>(ipcamParticipant.toJson().toString(), getResponseHeaders(), HttpStatus.OK); return new ResponseEntity<>(ipcamParticipant.toJson().toString(), getResponseHeaders(), HttpStatus.OK);
} catch (MalformedURLException e) { } catch (MalformedURLException e) {
return this.generateErrorResponse("\"rtspUri\" parameter is not a valid rtsp uri", return this.generateErrorResponse("\"rtspUri\" parameter is not a valid rtsp uri",

View File

@ -237,7 +237,7 @@ public class RpcHandler extends DefaultJsonRpcHandler<JsonObject> {
} }
} }
if (sessionManager.isTokenValidInSession(token, sessionId, participantPrivatetId)) { if (sessionManager.isTokenValidInSession(token, sessionId, participantPrivatetId, "")) {
String clientMetadata = getStringParam(request, ProtocolElements.JOINROOM_METADATA_PARAM); String clientMetadata = getStringParam(request, ProtocolElements.JOINROOM_METADATA_PARAM);
@ -651,7 +651,8 @@ public class RpcHandler extends DefaultJsonRpcHandler<JsonObject> {
@Override @Override
public void handleUncaughtException(Session rpcSession, Exception exception) { public void handleUncaughtException(Session rpcSession, Exception exception) {
log.error("Uncaught exception for WebSocket session: {} - Exception: {}", rpcSession != null ? rpcSession.getSessionId() : "RpcSession NULL", exception); log.error("Uncaught exception for WebSocket session: {} - Exception: {}",
rpcSession != null ? rpcSession.getSessionId() : "RpcSession NULL", exception);
} }
@Override @Override