Bug fixes
This commit is contained in:
2
pom.xml
2
pom.xml
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
<groupId>org.openautonomousconnection</groupId>
|
<groupId>org.openautonomousconnection</groupId>
|
||||||
<artifactId>Protocol</artifactId>
|
<artifactId>Protocol</artifactId>
|
||||||
<version>1.0.0-BETA.7.5</version>
|
<version>1.0.0-BETA.7.6</version>
|
||||||
<organization>
|
<organization>
|
||||||
<name>Open Autonomous Connection</name>
|
<name>Open Autonomous Connection</name>
|
||||||
<url>https://open-autonomous-connection.org/</url>
|
<url>https://open-autonomous-connection.org/</url>
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ import java.io.DataInputStream;
|
|||||||
import java.io.DataOutputStream;
|
import java.io.DataOutputStream;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.security.NoSuchAlgorithmException;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -54,12 +55,10 @@ public final class AuthPacket extends OACPacket {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onWrite(DataOutputStream objectOutputStream) throws IOException {
|
public void onWrite(DataOutputStream objectOutputStream) throws IOException {
|
||||||
if (protocolBridge.isRunningAsWebServer()) {
|
|
||||||
objectOutputStream.writeUTF(protocolBridge.getProtocolVersion().name());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (protocolBridge.isRunningAsINSServer()) {
|
if (protocolBridge.isRunningAsINSServer()) {
|
||||||
|
objectOutputStream.writeBoolean(true);
|
||||||
objectOutputStream.writeUTF(protocolBridge.getProtocolVersion().name());
|
objectOutputStream.writeUTF(protocolBridge.getProtocolVersion().name());
|
||||||
|
|
||||||
String caPem = "N/A";
|
String caPem = "N/A";
|
||||||
@@ -82,6 +81,12 @@ public final class AuthPacket extends OACPacket {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (protocolBridge.isRunningAsServer()) {
|
||||||
|
objectOutputStream.writeBoolean(false);
|
||||||
|
objectOutputStream.writeUTF(protocolBridge.getProtocolVersion().name());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (protocolBridge.isRunningAsClient()) {
|
if (protocolBridge.isRunningAsClient()) {
|
||||||
UUID clientConnectionId = null;
|
UUID clientConnectionId = null;
|
||||||
|
|
||||||
@@ -134,9 +139,10 @@ public final class AuthPacket extends OACPacket {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (protocolBridge.isRunningAsClient()) {
|
if (protocolBridge.isRunningAsClient()) {
|
||||||
|
boolean fromINS = objectInputStream.readBoolean();
|
||||||
ProtocolVersion serverVersion = ProtocolVersion.valueOf(objectInputStream.readUTF());
|
ProtocolVersion serverVersion = ProtocolVersion.valueOf(objectInputStream.readUTF());
|
||||||
|
|
||||||
try {
|
if (fromINS) {
|
||||||
if (!protocolBridge.isVersionSupported(serverVersion)) {
|
if (!protocolBridge.isVersionSupported(serverVersion)) {
|
||||||
setResponseCode(INSResponseStatus.RESPONSE_AUTH_FAILED);
|
setResponseCode(INSResponseStatus.RESPONSE_AUTH_FAILED);
|
||||||
if (protocolBridge.getProtocolClient() != null && protocolBridge.getProtocolClient().getClientINSConnection() != null) {
|
if (protocolBridge.getProtocolClient() != null && protocolBridge.getProtocolClient().getClientINSConnection() != null) {
|
||||||
@@ -155,9 +161,16 @@ public final class AuthPacket extends OACPacket {
|
|||||||
setResponseCode(INSResponseStatus.RESPONSE_AUTH_FAILED);
|
setResponseCode(INSResponseStatus.RESPONSE_AUTH_FAILED);
|
||||||
} else {
|
} else {
|
||||||
byte[] caBytes = caPem.getBytes(java.nio.charset.StandardCharsets.UTF_8);
|
byte[] caBytes = caPem.getBytes(java.nio.charset.StandardCharsets.UTF_8);
|
||||||
java.security.MessageDigest md = java.security.MessageDigest.getInstance("SHA-256");
|
String fp = "N/A";
|
||||||
String fp = java.util.HexFormat.of().formatHex(md.digest(caBytes));
|
|
||||||
|
|
||||||
|
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");
|
File caPemFile = new File(protocolBridge.getProtocolClient().getFolderStructure().publicCAFolder, caPrefix + ".pem");
|
||||||
|
|
||||||
@@ -165,10 +178,9 @@ public final class AuthPacket extends OACPacket {
|
|||||||
protocolBridge.getProtocolClient().getFolderStructure().publicCAFolder,
|
protocolBridge.getProtocolClient().getFolderStructure().publicCAFolder,
|
||||||
caPrefix + ".fp");
|
caPrefix + ".fp");
|
||||||
|
|
||||||
boolean allowWritePem = false;
|
|
||||||
|
|
||||||
if (fpFile.exists()) {
|
if (fpFile.exists()) {
|
||||||
String existing = FileUtils.readFileLines(fpFile).get(0);
|
String existing = FileUtils.readFileLines(fpFile).getFirst();
|
||||||
if (!existing.equalsIgnoreCase(fp)) {
|
if (!existing.equalsIgnoreCase(fp)) {
|
||||||
if (!protocolBridge.getProtocolClient().trustNewINSFingerprint(existing, fp)) {
|
if (!protocolBridge.getProtocolClient().trustNewINSFingerprint(existing, fp)) {
|
||||||
setResponseCode(INSResponseStatus.RESPONSE_AUTH_FAILED);
|
setResponseCode(INSResponseStatus.RESPONSE_AUTH_FAILED);
|
||||||
@@ -176,7 +188,6 @@ public final class AuthPacket extends OACPacket {
|
|||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
FileUtils.writeFile(fpFile, fp + System.lineSeparator());
|
FileUtils.writeFile(fpFile, fp + System.lineSeparator());
|
||||||
allowWritePem = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -186,19 +197,10 @@ public final class AuthPacket extends OACPacket {
|
|||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
FileUtils.writeFile(fpFile, fp + System.lineSeparator());
|
FileUtils.writeFile(fpFile, fp + System.lineSeparator());
|
||||||
allowWritePem = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!allowWritePem) {
|
|
||||||
setResponseCode(INSResponseStatus.RESPONSE_AUTH_FAILED);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (!caPemFile.exists()) caPemFile.createNewFile();
|
|
||||||
|
|
||||||
// FIX: Correct file assignments.
|
|
||||||
FileUtils.writeFile(caPemFile, caPem);
|
FileUtils.writeFile(caPemFile, caPem);
|
||||||
} catch (Exception exception) {
|
} catch (Exception exception) {
|
||||||
protocolBridge.getLogger().exception("Failed to create/save ca-files", 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(
|
protocolBridge.getProtocolValues().eventManager.executeEvent(
|
||||||
new ConnectedToProtocolINSServerEvent(protocolBridge.getProtocolClient())
|
new ConnectedToProtocolINSServerEvent(protocolBridge.getProtocolClient())
|
||||||
);
|
);
|
||||||
} catch (Exception ignored) {
|
} else {
|
||||||
protocolBridge.getProtocolClient().setServerVersion(serverVersion);
|
protocolBridge.getProtocolClient().setServerVersion(serverVersion);
|
||||||
protocolBridge.getProtocolValues().eventManager.executeEvent(
|
protocolBridge.getProtocolValues().eventManager.executeEvent(
|
||||||
new ConnectedToProtocolServerEvent(protocolBridge.getProtocolClient())
|
new ConnectedToProtocolServerEvent(protocolBridge.getProtocolClient())
|
||||||
|
|||||||
Reference in New Issue
Block a user