private void processSessionInitRequest(ActorContext context, SessionInitMessage message) throws GeneralSecurityException, PlatformEncDecException, InvalidSdkTokenException, EndpointVerificationException { ClientSync request = decodeRequest(message); EndpointObjectHash key = getEndpointObjectHash(request); String sdkToken = getSdkToken(request); if (isSdkTokenValid(sdkToken)) { String appToken = getAppToken(sdkToken); verifyEndpoint(key, appToken); SessionInfo session = new SessionInfo( message.getChannelUuid(), message.getPlatformId(), message.getChannelContext(), message.getChannelType(), crypt.getSessionCipherPair(), key, appToken, sdkToken, message.getKeepAlive(), message.isEncrypted()); message.onSessionCreated(session); forwardToOpsActor(context, session, request, message); } else { LOG.info("Invalid sdk token received: {}", sdkToken); throw new InvalidSdkTokenException(); } }
void redirect(RedirectionRule redirection, SessionInitMessage message) { try { redirectMeter.mark(); ClientSync request = decodeRequest(message); ServerSync response = buildRedirectionResponse(redirection, request); EndpointObjectHash key = getEndpointObjectHash(request); String sdkToken = getSdkToken(request); String appToken = getAppToken(sdkToken); SessionInfo sessionInfo = new SessionInfo( message.getChannelUuid(), message.getPlatformId(), message.getChannelContext(), message.getChannelType(), crypt.getSessionCipherPair(), key, appToken, sdkToken, message.getKeepAlive(), message.isEncrypted()); SessionResponse responseMessage = new NettySessionResponseMessage( sessionInfo, response, message.getMessageBuilder(), message.getErrorBuilder()); LOG.debug("Redirect Response: {}", response); processSessionResponse(responseMessage); } catch (Exception ex) { processErrors(message.getChannelContext(), message.getErrorBuilder(), ex); } }