From c2e47a8a1e54911dd1d5a314aa4ba8590025d831 Mon Sep 17 00:00:00 2001 From: UnlegitDqrk Date: Sun, 8 Feb 2026 19:04:01 +0100 Subject: [PATCH] Bug fixes --- pom.xml | 2 +- .../packets/v1_0_0/beta/AuthPacket.java | 42 ++++++++++--------- 2 files changed, 23 insertions(+), 21 deletions(-) diff --git a/pom.xml b/pom.xml index f3ff738..2e24596 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ org.openautonomousconnection Protocol - 1.0.0-BETA.7.5 + 1.0.0-BETA.7.6 Open Autonomous Connection https://open-autonomous-connection.org/ diff --git a/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/beta/AuthPacket.java b/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/beta/AuthPacket.java index 9bef9cc..0793dad 100644 --- a/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/beta/AuthPacket.java +++ b/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/beta/AuthPacket.java @@ -18,6 +18,7 @@ import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; import java.io.IOException; +import java.security.NoSuchAlgorithmException; import java.util.UUID; /** @@ -54,12 +55,10 @@ public final class AuthPacket extends OACPacket { @Override public void onWrite(DataOutputStream objectOutputStream) throws IOException { - if (protocolBridge.isRunningAsWebServer()) { - objectOutputStream.writeUTF(protocolBridge.getProtocolVersion().name()); - return; - } + if (protocolBridge.isRunningAsINSServer()) { + objectOutputStream.writeBoolean(true); objectOutputStream.writeUTF(protocolBridge.getProtocolVersion().name()); String caPem = "N/A"; @@ -82,6 +81,12 @@ public final class AuthPacket extends OACPacket { return; } + if (protocolBridge.isRunningAsServer()) { + objectOutputStream.writeBoolean(false); + objectOutputStream.writeUTF(protocolBridge.getProtocolVersion().name()); + return; + } + if (protocolBridge.isRunningAsClient()) { UUID clientConnectionId = null; @@ -134,9 +139,10 @@ public final class AuthPacket extends OACPacket { } if (protocolBridge.isRunningAsClient()) { + boolean fromINS = objectInputStream.readBoolean(); ProtocolVersion serverVersion = ProtocolVersion.valueOf(objectInputStream.readUTF()); - try { + if (fromINS) { if (!protocolBridge.isVersionSupported(serverVersion)) { setResponseCode(INSResponseStatus.RESPONSE_AUTH_FAILED); if (protocolBridge.getProtocolClient() != null && protocolBridge.getProtocolClient().getClientINSConnection() != null) { @@ -155,9 +161,16 @@ public final class AuthPacket extends OACPacket { setResponseCode(INSResponseStatus.RESPONSE_AUTH_FAILED); } else { byte[] caBytes = caPem.getBytes(java.nio.charset.StandardCharsets.UTF_8); - java.security.MessageDigest md = java.security.MessageDigest.getInstance("SHA-256"); - String fp = java.util.HexFormat.of().formatHex(md.digest(caBytes)); + String fp = "N/A"; + try { + java.security.MessageDigest md = java.security.MessageDigest.getInstance("SHA-256"); + fp = java.util.HexFormat.of().formatHex(md.digest(caBytes)); + } catch (NoSuchAlgorithmException ignored) { + setResponseCode(INSResponseStatus.RESPONSE_AUTH_FAILED); + protocolBridge.getProtocolClient().getClientINSConnection().disconnect(); + return; + } File caPemFile = new File(protocolBridge.getProtocolClient().getFolderStructure().publicCAFolder, caPrefix + ".pem"); @@ -165,10 +178,9 @@ public final class AuthPacket extends OACPacket { protocolBridge.getProtocolClient().getFolderStructure().publicCAFolder, caPrefix + ".fp"); - boolean allowWritePem = false; if (fpFile.exists()) { - String existing = FileUtils.readFileLines(fpFile).get(0); + String existing = FileUtils.readFileLines(fpFile).getFirst(); if (!existing.equalsIgnoreCase(fp)) { if (!protocolBridge.getProtocolClient().trustNewINSFingerprint(existing, fp)) { setResponseCode(INSResponseStatus.RESPONSE_AUTH_FAILED); @@ -176,7 +188,6 @@ public final class AuthPacket extends OACPacket { return; } else { FileUtils.writeFile(fpFile, fp + System.lineSeparator()); - allowWritePem = true; } } } else { @@ -186,19 +197,10 @@ public final class AuthPacket extends OACPacket { return; } else { FileUtils.writeFile(fpFile, fp + System.lineSeparator()); - allowWritePem = true; } } - if (!allowWritePem) { - setResponseCode(INSResponseStatus.RESPONSE_AUTH_FAILED); - return; - } - try { - if (!caPemFile.exists()) caPemFile.createNewFile(); - - // FIX: Correct file assignments. FileUtils.writeFile(caPemFile, caPem); } catch (Exception exception) { protocolBridge.getLogger().exception("Failed to create/save ca-files", exception); @@ -210,7 +212,7 @@ public final class AuthPacket extends OACPacket { protocolBridge.getProtocolValues().eventManager.executeEvent( new ConnectedToProtocolINSServerEvent(protocolBridge.getProtocolClient()) ); - } catch (Exception ignored) { + } else { protocolBridge.getProtocolClient().setServerVersion(serverVersion); protocolBridge.getProtocolValues().eventManager.executeEvent( new ConnectedToProtocolServerEvent(protocolBridge.getProtocolClient())