From b5d8feab6235697faf23f617a86190c2f3b12e21 Mon Sep 17 00:00:00 2001 From: heavyrian2012 Date: Fri, 18 Nov 2022 22:10:53 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=A2=E6=88=B7=E7=AB=AF=E8=BF=9E=E6=8E=A5?= =?UTF-8?q?=E6=97=B6=E6=A3=80=E6=9F=A5=E6=98=AF=E5=90=A6=E8=B7=9F=E8=8E=B7?= =?UTF-8?q?=E5=8F=96token=E7=9A=84=E5=B9=B3=E5=8F=B0=E4=B8=80=E8=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/io/moquette/imhandler/RouteHandler.java | 5 +++++ .../io/moquette/persistence/MemoryMessagesStore.java | 9 +++++++++ broker/src/main/java/io/moquette/spi/IMessagesStore.java | 1 + 3 files changed, 15 insertions(+) diff --git a/broker/src/main/java/io/moquette/imhandler/RouteHandler.java b/broker/src/main/java/io/moquette/imhandler/RouteHandler.java index 85234cbc..1e6ee26b 100644 --- a/broker/src/main/java/io/moquette/imhandler/RouteHandler.java +++ b/broker/src/main/java/io/moquette/imhandler/RouteHandler.java @@ -40,6 +40,11 @@ public class RouteHandler extends IMHandler { return ErrorCode.ERROR_CODE_SECRECT_KEY_MISMATCH; } + if(request.getPlatform() != session.getPlatform() && m_messagesStore.existSignatures()) { + LOG.error("Session <{}, {}> platform is {} mismatch the request {}", session.getUsername(), session.getClientID(), session.getPlatform(), request.getPlatform()); + return ErrorCode.ERROR_CODE_SECRECT_KEY_MISMATCH; + } + String serverIp = mServer.getServerIp(); String longPort = mServer.getLongPort(); String shortPort = mServer.getShortPort(); diff --git a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java index 589bbf23..1922c4f7 100755 --- a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java +++ b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java @@ -4356,6 +4356,10 @@ public class MemoryMessagesStore implements IMessagesStore { @Override public boolean checkSignature(String signature) { + if(mClientSignatureSet.isEmpty()) { + return true; + } + if(StringUtil.isNullOrEmptyAfterTrim(signature)) { if(mRejectEmptySignature) { LOG.info("Failed check signature, no signature"); @@ -4373,6 +4377,11 @@ public class MemoryMessagesStore implements IMessagesStore { } } + @Override + public boolean existSignatures() { + return !mClientSignatureSet.isEmpty(); + } + @Override public void storeRetained(Topic topic, StoredMessage storedMessage) { LOG.debug("Store retained message for topic={}, CId={}", topic, storedMessage.getClientID()); diff --git a/broker/src/main/java/io/moquette/spi/IMessagesStore.java b/broker/src/main/java/io/moquette/spi/IMessagesStore.java index f94268dd..7b3b6f6f 100755 --- a/broker/src/main/java/io/moquette/spi/IMessagesStore.java +++ b/broker/src/main/java/io/moquette/spi/IMessagesStore.java @@ -251,6 +251,7 @@ public interface IMessagesStore { String getShortUUID(); boolean checkSignature(String signature); + boolean existSignatures(); /** * Used to initialize all persistent store structures */