From 47981872be7d154193018eeb1211dc3a22ad5921 Mon Sep 17 00:00:00 2001 From: FatBoy-DOTC Date: Sun, 9 Feb 2025 14:13:28 -0600 Subject: [PATCH] network message validation --- src/engine/net/AbstractConnection.java | 2 +- src/engine/util/KeyCloneAudit.java | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/engine/net/AbstractConnection.java b/src/engine/net/AbstractConnection.java index 8fb86d11..910273d9 100644 --- a/src/engine/net/AbstractConnection.java +++ b/src/engine/net/AbstractConnection.java @@ -38,7 +38,7 @@ public abstract class AbstractConnection implements protected final AtomicBoolean execTask = new AtomicBoolean(false); protected final ReentrantLock writeLock = new ReentrantLock(); protected final ReentrantLock readLock = new ReentrantLock(); - protected long lastMsgTime = System.currentTimeMillis(); + public long lastMsgTime = System.currentTimeMillis(); protected long lastKeepAliveTime = System.currentTimeMillis(); protected long lastOpcode = -1; protected ConcurrentLinkedQueue outbox = new ConcurrentLinkedQueue<>(); diff --git a/src/engine/util/KeyCloneAudit.java b/src/engine/util/KeyCloneAudit.java index ea1049e9..56900a9c 100644 --- a/src/engine/util/KeyCloneAudit.java +++ b/src/engine/util/KeyCloneAudit.java @@ -2,6 +2,7 @@ package engine.util; import engine.gameManager.ConfigManager; import engine.gameManager.DbManager; +import engine.net.client.Protocol; import engine.net.client.msg.ClientNetMsg; import engine.objects.Group; import engine.objects.PlayerCharacter; @@ -32,6 +33,14 @@ public enum KeyCloneAudit { public static boolean auditNetMsg(ClientNetMsg msg){ boolean valid = true; + if(msg.getProtocolMsg().equals(Protocol.KEEPALIVESERVERCLIENT)) + return true; + + Long msgDelay = System.currentTimeMillis() - msg.getOrigin().lastMsgTime; + + if(msgDelay < 100) + return false; + return valid;