From 425fe0983ca92079b0600b5e4e53feab86471607 Mon Sep 17 00:00:00 2001 From: pabloFuente Date: Mon, 24 Jan 2022 12:04:54 +0100 Subject: [PATCH] openvidu-server: allow setting custom ConnectionId for debug purposes Allows applications to set a custom string for the the connection ID, which is a great help for debugging purposes, as it will appear in all server logs and also will be used to set media server object names (with obj.setName() API) --- .../io/openvidu/server/core/SessionManager.java | 15 +++++++++++++++ .../main/java/io/openvidu/server/core/Token.java | 6 +++++- 2 files changed, 20 insertions(+), 1 deletion(-) 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 60e46b7f..84653b01 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 @@ -336,6 +336,21 @@ public abstract class SessionManager { } Token tokenObj = tokenGenerator.generateToken(session.getSessionId(), serverMetadata, record, role, kurentoOptions); + + // Internal dev feature: allows customizing connectionId + if (serverMetadata.contains("openviduCustomConnectionId")) { + try { + JsonObject serverMetadataJson = JsonParser.parseString(serverMetadata).getAsJsonObject(); + String customConnectionId = serverMetadataJson.get("openviduCustomConnectionId").getAsString(); + customConnectionId = customConnectionId.replaceAll(IdentifierPrefixes.PARTICIPANT_PUBLIC_ID, ""); + tokenObj.setConnectionId(IdentifierPrefixes.PARTICIPANT_PUBLIC_ID + customConnectionId); + } catch (Exception e) { + log.debug( + "Tried to parse server metadata as JSON after encountering \"openviduCustomConnectionId\" string but failed with {}: {}", + e.getClass().getCanonicalName(), e.getMessage()); + } + } + session.storeToken(tokenObj); return tokenObj; } diff --git a/openvidu-server/src/main/java/io/openvidu/server/core/Token.java b/openvidu-server/src/main/java/io/openvidu/server/core/Token.java index 7e1af315..09d68bac 100644 --- a/openvidu-server/src/main/java/io/openvidu/server/core/Token.java +++ b/openvidu-server/src/main/java/io/openvidu/server/core/Token.java @@ -37,7 +37,7 @@ public class Token { private ConnectionProperties connectionProperties; private TurnCredentials turnCredentials; - private final String connectionId = IdentifierPrefixes.PARTICIPANT_PUBLIC_ID + private String connectionId = IdentifierPrefixes.PARTICIPANT_PUBLIC_ID + RandomStringUtils.randomAlphabetic(1).toUpperCase() + RandomStringUtils.randomAlphanumeric(9); public Token(String token, String sessionId, ConnectionProperties connectionProperties, @@ -118,6 +118,10 @@ public class Token { public String getConnectionId() { return connectionId; } + + public void setConnectionId(String connectionId) { + this.connectionId = connectionId; + } public JsonObject toJson() { JsonObject json = new JsonObject();