diff --git a/openvidu-server/src/main/java/io/openvidu/server/core/SessionManager.java b/openvidu-server/src/main/java/io/openvidu/server/core/SessionManager.java index 9c030c55..7d4cc7bf 100644 --- a/openvidu-server/src/main/java/io/openvidu/server/core/SessionManager.java +++ b/openvidu-server/src/main/java/io/openvidu/server/core/SessionManager.java @@ -153,7 +153,8 @@ public abstract class SessionManager { public abstract void removeFilterEventListener(Session session, Participant subscriber, String streamId, 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) 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.sessionidTokenTokenobj.get(sessionId) != null) { return this.sessionidTokenTokenobj.get(sessionId).containsKey(token); @@ -317,7 +319,7 @@ public abstract class SessionManager { } else { this.initializeCollections(sessionId); this.sessionidTokenTokenobj.get(sessionId).putIfAbsent(token, - new Token(token, OpenViduRole.PUBLISHER, "", + new Token(token, OpenViduRole.PUBLISHER, serverMetadata, this.coturnCredentialsService.isCoturnAvailable() ? this.coturnCredentialsService.createUser() : null, diff --git a/openvidu-server/src/main/java/io/openvidu/server/kurento/core/KurentoSessionManager.java b/openvidu-server/src/main/java/io/openvidu/server/kurento/core/KurentoSessionManager.java index cbda9245..9dfac0fe 100644 --- a/openvidu-server/src/main/java/io/openvidu/server/kurento/core/KurentoSessionManager.java +++ b/openvidu-server/src/main/java/io/openvidu/server/kurento/core/KurentoSessionManager.java @@ -847,7 +847,7 @@ public class KurentoSessionManager extends SessionManager { } @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 KurentoMediaOptions kMediaOptions = (KurentoMediaOptions) mediaOptions; @@ -887,7 +887,7 @@ public class KurentoSessionManager extends SessionManager { this.newInsecureParticipant(rtspConnectionId); String token = RandomStringUtils.randomAlphanumeric(16).toLowerCase(); Token tokenObj = null; - if (this.isTokenValidInSession(token, sessionId, rtspConnectionId)) { + if (this.isTokenValidInSession(token, sessionId, rtspConnectionId, serverMetadata)) { tokenObj = this.consumeToken(sessionId, rtspConnectionId, token); } Participant ipcamParticipant = this.newIpcamParticipant(sessionId, rtspConnectionId, tokenObj, location, diff --git a/openvidu-server/src/main/java/io/openvidu/server/rest/SessionRestController.java b/openvidu-server/src/main/java/io/openvidu/server/rest/SessionRestController.java index cfb9fd6f..462710d5 100644 --- a/openvidu-server/src/main/java/io/openvidu/server/rest/SessionRestController.java +++ b/openvidu-server/src/main/java/io/openvidu/server/rest/SessionRestController.java @@ -683,11 +683,13 @@ public class SessionRestController { String rtspUri; Boolean adaptativeBitrate; Boolean onlyPlayWithSubscribers; + String data; try { type = (String) params.get("type"); rtspUri = (String) params.get("rtspUri"); adaptativeBitrate = (Boolean) params.get("adaptativeBitrate"); onlyPlayWithSubscribers = (Boolean) params.get("onlyPlayWithSubscribers"); + data = (String) params.get("data"); } catch (ClassCastException e) { return this.generateErrorResponse("Type error in some parameter", "/api/sessions/" + sessionId + "/connection", HttpStatus.BAD_REQUEST); @@ -700,6 +702,7 @@ public class SessionRestController { type = type != null ? type : "IPCAM"; adaptativeBitrate = adaptativeBitrate != null ? adaptativeBitrate : true; onlyPlayWithSubscribers = onlyPlayWithSubscribers != null ? onlyPlayWithSubscribers : true; + data = data != null ? data : ""; boolean hasAudio = true; boolean hasVideo = true; @@ -709,10 +712,11 @@ public class SessionRestController { Integer frameRate = null; String videoDimensions = null; 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 { - Participant ipcamParticipant = this.sessionManager.publishIpcam(session, mediaOptions); + Participant ipcamParticipant = this.sessionManager.publishIpcam(session, mediaOptions, data); return new ResponseEntity<>(ipcamParticipant.toJson().toString(), getResponseHeaders(), HttpStatus.OK); } catch (MalformedURLException e) { return this.generateErrorResponse("\"rtspUri\" parameter is not a valid rtsp uri", diff --git a/openvidu-server/src/main/java/io/openvidu/server/rpc/RpcHandler.java b/openvidu-server/src/main/java/io/openvidu/server/rpc/RpcHandler.java index cecd3156..25debc26 100644 --- a/openvidu-server/src/main/java/io/openvidu/server/rpc/RpcHandler.java +++ b/openvidu-server/src/main/java/io/openvidu/server/rpc/RpcHandler.java @@ -237,7 +237,7 @@ public class RpcHandler extends DefaultJsonRpcHandler { } } - if (sessionManager.isTokenValidInSession(token, sessionId, participantPrivatetId)) { + if (sessionManager.isTokenValidInSession(token, sessionId, participantPrivatetId, "")) { String clientMetadata = getStringParam(request, ProtocolElements.JOINROOM_METADATA_PARAM); @@ -651,7 +651,8 @@ public class RpcHandler extends DefaultJsonRpcHandler { @Override 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