Bug fixes
This commit is contained in:
@@ -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())
|
||||
|
||||
Reference in New Issue
Block a user