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();