From efdc52292508337f36f30af96a98b4079aaab06b Mon Sep 17 00:00:00 2001 From: Robert von Burg Date: Tue, 28 Jan 2020 12:32:58 +0100 Subject: [PATCH] [Minof] Inject StrolchSessionHandler into WebSocketClient by constructor --- .../java/li/strolch/websocket/WebSocketClient.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/li.strolch.websocket/src/main/java/li/strolch/websocket/WebSocketClient.java b/li.strolch.websocket/src/main/java/li/strolch/websocket/WebSocketClient.java index c86564457..203dca507 100644 --- a/li.strolch.websocket/src/main/java/li/strolch/websocket/WebSocketClient.java +++ b/li.strolch.websocket/src/main/java/li/strolch/websocket/WebSocketClient.java @@ -21,7 +21,6 @@ import li.strolch.agent.api.ComponentContainer; import li.strolch.agent.api.ObserverHandler; import li.strolch.model.Tags; import li.strolch.privilege.model.Certificate; -import li.strolch.rest.RestfulStrolchComponent; import li.strolch.rest.StrolchSessionHandler; import li.strolch.utils.helper.ExceptionHelper; import org.slf4j.Logger; @@ -31,6 +30,7 @@ public class WebSocketClient implements MessageHandler.Whole { public static final Logger logger = LoggerFactory.getLogger(WebSocketClient.class); + private StrolchSessionHandler sessionHandler; private ComponentContainer container; private final Session session; private final EndpointConfig config; @@ -41,6 +41,7 @@ public class WebSocketClient implements MessageHandler.Whole { public WebSocketClient(ComponentContainer container, Session session, EndpointConfig config) { this.container = container; + this.sessionHandler = container.getComponent(StrolchSessionHandler.class); this.session = session; this.config = config; this.remoteIp = WebSocketRemoteIp.get(); @@ -74,7 +75,7 @@ public class WebSocketClient implements MessageHandler.Whole { } } - private void assertAuthenticated(String type) { + public void assertAuthenticated(String type) { if (this.certificate == null) { logger.error("Received " + type + " request, but not yet authed!"); @@ -83,8 +84,7 @@ public class WebSocketClient implements MessageHandler.Whole { } try { - StrolchSessionHandler sessionHandler = RestfulStrolchComponent.getInstance().getSessionHandler(); - sessionHandler.validate(this.certificate, this.remoteIp); + this.sessionHandler.validate(this.certificate, this.remoteIp); } catch (RuntimeException e) { logger.error("Received " + type + " request, but authentication is not valid anymore: " + ExceptionHelper .getExceptionMessage(e)); @@ -150,8 +150,7 @@ public class WebSocketClient implements MessageHandler.Whole { String username = jsonObject.get("username").getAsString(); try { - StrolchSessionHandler sessionHandler = RestfulStrolchComponent.getInstance().getSessionHandler(); - this.certificate = sessionHandler.validate(authToken, this.remoteIp); + this.certificate = this.sessionHandler.validate(authToken, this.remoteIp); if (!this.certificate.getUsername().equals(username)) { logger.error("Invalid authentication for " + username); close(CloseReason.CloseCodes.UNEXPECTED_CONDITION, "Invalid authentication"); @@ -190,6 +189,8 @@ public class WebSocketClient implements MessageHandler.Whole { } public synchronized void sendMessage(String data) { + assertAuthenticated("sendMessage"); + try { this.session.getBasicRemote().sendText(data); } catch (Exception e) {