From bb5f312d630bbbba8eb10b0af9bc1b045f8295fe Mon Sep 17 00:00:00 2001 From: Tinglyyy Date: Mon, 29 Sep 2025 18:21:54 +0200 Subject: [PATCH] Revert "Revert "- Code cleanup"" This reverts commit 95ac2b988b5b3846d8389bea2efb538f26a5c861. --- .../protocol/ProtocolBridge.java | 29 +- .../protocol/listeners/ClientListener.java | 4 +- .../protocol/listeners/DNSServerListener.java | 4 +- .../protocol/listeners/WebServerListener.java | 1 - .../protocol/packets/OACPacket.java | 6 +- .../packets/v1_0_0/beta/AuthPacket.java | 29 +- .../v1_0_0/beta/GetDestinationPacket.java | 2 +- .../v1_0_0/beta/UnsupportedClassicPacket.java | 5 +- .../v1_0_0/beta/ValidateDomainPacket.java | 9 +- .../v1_0_0/classic/Classic_DomainPacket.java | 6 +- .../v1_0_0/classic/Classic_MessagePacket.java | 6 +- .../v1_0_0/classic/Classic_PingPacket.java | 4 +- .../protocol/side/client/ProtocolClient.java | 109 +++-- .../protocol/side/client/WebClient.java | 36 +- .../side/dns/ConnectedProtocolClient.java | 8 +- .../protocol/side/dns/ProtocolDNSServer.java | 96 ++-- .../events/ConnectedProtocolClientEvent.java | 4 +- .../protocol/side/web/ConnectedWebClient.java | 435 +++++++++--------- .../protocol/side/web/ProtocolWebServer.java | 102 ++-- .../side/web/managers/AuthManager.java | 2 +- .../side/web/managers/RuleManager.java | 3 +- .../side/web/managers/SessionManager.java | 54 +-- .../protocol/versions/ProtocolVersion.java | 4 +- .../protocol/versions/v1_0_0/beta/Domain.java | 3 +- .../v1_0_0/classic/ClassicHandlerClient.java | 1 - .../classic/Classic_ClientListener.java | 4 +- .../v1_0_0/classic/Classic_Domain.java | 2 +- 27 files changed, 472 insertions(+), 496 deletions(-) diff --git a/src/main/java/org/openautonomousconnection/protocol/ProtocolBridge.java b/src/main/java/org/openautonomousconnection/protocol/ProtocolBridge.java index 6666294..811b1b2 100644 --- a/src/main/java/org/openautonomousconnection/protocol/ProtocolBridge.java +++ b/src/main/java/org/openautonomousconnection/protocol/ProtocolBridge.java @@ -1,8 +1,10 @@ package org.openautonomousconnection.protocol; +import dev.unlegitdqrk.unlegitlibrary.utils.Logger; +import lombok.Getter; +import lombok.Setter; import org.openautonomousconnection.protocol.listeners.ClientListener; import org.openautonomousconnection.protocol.listeners.DNSServerListener; -import org.openautonomousconnection.protocol.listeners.WebServerListener; import org.openautonomousconnection.protocol.packets.OACPacket; import org.openautonomousconnection.protocol.packets.v1_0_0.beta.AuthPacket; import org.openautonomousconnection.protocol.packets.v1_0_0.beta.GetDestinationPacket; @@ -16,9 +18,6 @@ import org.openautonomousconnection.protocol.versions.ProtocolVersion; import org.openautonomousconnection.protocol.versions.v1_0_0.classic.ClassicHandlerClient; import org.openautonomousconnection.protocol.versions.v1_0_0.classic.ClassicHandlerServer; import org.openautonomousconnection.protocol.versions.v1_0_0.classic.Classic_ClientListener; -import lombok.Getter; -import lombok.Setter; -import dev.unlegitdqrk.unlegitlibrary.utils.Logger; import java.io.File; import java.io.IOException; @@ -169,19 +168,19 @@ public class ProtocolBridge { private boolean validateProtocolSide() { return (isRunningAsClient() && protocolVersion.getProtocolSide() == ProtocolVersion.ProtocolSide.CLIENT) || - (isRunningAsClient() && protocolVersion.getProtocolSide() == ProtocolVersion.ProtocolSide.CLIENT_WEB) || - (isRunningAsClient() && protocolVersion.getProtocolSide() == ProtocolVersion.ProtocolSide.CLIENT_DNS) || - (isRunningAsClient() && protocolVersion.getProtocolSide() == ProtocolVersion.ProtocolSide.ALL) || + (isRunningAsClient() && protocolVersion.getProtocolSide() == ProtocolVersion.ProtocolSide.CLIENT_WEB) || + (isRunningAsClient() && protocolVersion.getProtocolSide() == ProtocolVersion.ProtocolSide.CLIENT_DNS) || + (isRunningAsClient() && protocolVersion.getProtocolSide() == ProtocolVersion.ProtocolSide.ALL) || - (isRunningAsWebServer() && protocolVersion.getProtocolSide() == ProtocolVersion.ProtocolSide.WEB) || - (isRunningAsWebServer() && protocolVersion.getProtocolSide() == ProtocolVersion.ProtocolSide.CLIENT_WEB) || - (isRunningAsWebServer() && protocolVersion.getProtocolSide() == ProtocolVersion.ProtocolSide.WEB_DNS) || - (isRunningAsWebServer() && protocolVersion.getProtocolSide() == ProtocolVersion.ProtocolSide.ALL) || + (isRunningAsWebServer() && protocolVersion.getProtocolSide() == ProtocolVersion.ProtocolSide.WEB) || + (isRunningAsWebServer() && protocolVersion.getProtocolSide() == ProtocolVersion.ProtocolSide.CLIENT_WEB) || + (isRunningAsWebServer() && protocolVersion.getProtocolSide() == ProtocolVersion.ProtocolSide.WEB_DNS) || + (isRunningAsWebServer() && protocolVersion.getProtocolSide() == ProtocolVersion.ProtocolSide.ALL) || - (isRunningAsDNSServer() && protocolVersion.getProtocolSide() == ProtocolVersion.ProtocolSide.DNS) || - (isRunningAsDNSServer() && protocolVersion.getProtocolSide() == ProtocolVersion.ProtocolSide.WEB_DNS) || - (isRunningAsDNSServer() && protocolVersion.getProtocolSide() == ProtocolVersion.ProtocolSide.CLIENT_DNS) || - (isRunningAsDNSServer() && protocolVersion.getProtocolSide() == ProtocolVersion.ProtocolSide.ALL); + (isRunningAsDNSServer() && protocolVersion.getProtocolSide() == ProtocolVersion.ProtocolSide.DNS) || + (isRunningAsDNSServer() && protocolVersion.getProtocolSide() == ProtocolVersion.ProtocolSide.WEB_DNS) || + (isRunningAsDNSServer() && protocolVersion.getProtocolSide() == ProtocolVersion.ProtocolSide.CLIENT_DNS) || + (isRunningAsDNSServer() && protocolVersion.getProtocolSide() == ProtocolVersion.ProtocolSide.ALL); } public final boolean isVersionSupported(ProtocolVersion targetVersion) { diff --git a/src/main/java/org/openautonomousconnection/protocol/listeners/ClientListener.java b/src/main/java/org/openautonomousconnection/protocol/listeners/ClientListener.java index 9e3226d..51cde48 100644 --- a/src/main/java/org/openautonomousconnection/protocol/listeners/ClientListener.java +++ b/src/main/java/org/openautonomousconnection/protocol/listeners/ClientListener.java @@ -1,11 +1,11 @@ package org.openautonomousconnection.protocol.listeners; -import org.openautonomousconnection.protocol.ProtocolBridge; -import org.openautonomousconnection.protocol.packets.v1_0_0.beta.AuthPacket; import dev.unlegitdqrk.unlegitlibrary.event.EventListener; import dev.unlegitdqrk.unlegitlibrary.event.Listener; import dev.unlegitdqrk.unlegitlibrary.network.system.client.events.ClientConnectedEvent; import dev.unlegitdqrk.unlegitlibrary.network.system.client.events.ClientDisconnectedEvent; +import org.openautonomousconnection.protocol.ProtocolBridge; +import org.openautonomousconnection.protocol.packets.v1_0_0.beta.AuthPacket; import java.io.IOException; diff --git a/src/main/java/org/openautonomousconnection/protocol/listeners/DNSServerListener.java b/src/main/java/org/openautonomousconnection/protocol/listeners/DNSServerListener.java index 48f6930..7bcbd08 100644 --- a/src/main/java/org/openautonomousconnection/protocol/listeners/DNSServerListener.java +++ b/src/main/java/org/openautonomousconnection/protocol/listeners/DNSServerListener.java @@ -1,11 +1,11 @@ package org.openautonomousconnection.protocol.listeners; -import org.openautonomousconnection.protocol.ProtocolBridge; -import org.openautonomousconnection.protocol.side.dns.ConnectedProtocolClient; import dev.unlegitdqrk.unlegitlibrary.event.EventListener; import dev.unlegitdqrk.unlegitlibrary.event.Listener; import dev.unlegitdqrk.unlegitlibrary.network.system.server.events.ConnectionHandlerConnectedEvent; import dev.unlegitdqrk.unlegitlibrary.network.system.server.events.ConnectionHandlerDisconnectedEvent; +import org.openautonomousconnection.protocol.ProtocolBridge; +import org.openautonomousconnection.protocol.side.dns.ConnectedProtocolClient; public class DNSServerListener extends EventListener { diff --git a/src/main/java/org/openautonomousconnection/protocol/listeners/WebServerListener.java b/src/main/java/org/openautonomousconnection/protocol/listeners/WebServerListener.java index 07ceec3..dd7131c 100644 --- a/src/main/java/org/openautonomousconnection/protocol/listeners/WebServerListener.java +++ b/src/main/java/org/openautonomousconnection/protocol/listeners/WebServerListener.java @@ -5,7 +5,6 @@ import dev.unlegitdqrk.unlegitlibrary.event.Listener; import dev.unlegitdqrk.unlegitlibrary.network.system.server.events.ConnectionHandlerConnectedEvent; import dev.unlegitdqrk.unlegitlibrary.network.system.server.events.ConnectionHandlerDisconnectedEvent; import org.openautonomousconnection.protocol.ProtocolBridge; -import org.openautonomousconnection.protocol.side.dns.ConnectedProtocolClient; import org.openautonomousconnection.protocol.side.web.ConnectedWebClient; public class WebServerListener extends EventListener { diff --git a/src/main/java/org/openautonomousconnection/protocol/packets/OACPacket.java b/src/main/java/org/openautonomousconnection/protocol/packets/OACPacket.java index 078b0f1..2e1e764 100644 --- a/src/main/java/org/openautonomousconnection/protocol/packets/OACPacket.java +++ b/src/main/java/org/openautonomousconnection/protocol/packets/OACPacket.java @@ -1,10 +1,10 @@ package org.openautonomousconnection.protocol.packets; -import org.openautonomousconnection.protocol.versions.ProtocolVersion; -import org.openautonomousconnection.protocol.versions.v1_0_0.beta.DNSResponseCode; -import lombok.Getter; import dev.unlegitdqrk.unlegitlibrary.network.system.packets.Packet; import dev.unlegitdqrk.unlegitlibrary.network.system.packets.PacketHandler; +import lombok.Getter; +import org.openautonomousconnection.protocol.versions.ProtocolVersion; +import org.openautonomousconnection.protocol.versions.v1_0_0.beta.DNSResponseCode; import java.io.IOException; import java.io.ObjectInputStream; 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 7a95064..2d6987b 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 @@ -1,18 +1,17 @@ package org.openautonomousconnection.protocol.packets.v1_0_0.beta; +import dev.unlegitdqrk.unlegitlibrary.file.FileUtils; +import dev.unlegitdqrk.unlegitlibrary.network.system.packets.PacketHandler; +import dev.unlegitdqrk.unlegitlibrary.network.system.server.ConnectionHandler; +import dev.unlegitdqrk.unlegitlibrary.network.utils.NetworkUtils; import org.openautonomousconnection.protocol.ProtocolBridge; import org.openautonomousconnection.protocol.packets.OACPacket; import org.openautonomousconnection.protocol.side.client.events.ConnectedToProtocolServer; import org.openautonomousconnection.protocol.side.dns.ConnectedProtocolClient; import org.openautonomousconnection.protocol.side.dns.events.ConnectedProtocolClientEvent; import org.openautonomousconnection.protocol.side.web.ConnectedWebClient; -import org.openautonomousconnection.protocol.side.web.events.ConnectedWebClientEvent; import org.openautonomousconnection.protocol.versions.ProtocolVersion; import org.openautonomousconnection.protocol.versions.v1_0_0.beta.DNSResponseCode; -import dev.unlegitdqrk.unlegitlibrary.file.FileUtils; -import dev.unlegitdqrk.unlegitlibrary.network.system.packets.PacketHandler; -import dev.unlegitdqrk.unlegitlibrary.network.system.server.ConnectionHandler; -import dev.unlegitdqrk.unlegitlibrary.network.utils.NetworkUtils; import java.io.File; import java.io.IOException; @@ -21,22 +20,18 @@ import java.io.ObjectOutputStream; public class AuthPacket extends OACPacket { + File certificatesFolder = new File("certificates"); + File publicFolder = new File(certificatesFolder, "public"); + File publicCAFolder = new File(publicFolder, "ca"); + File publicServerFolder = new File(publicFolder, "server"); + File privateFolder = new File(certificatesFolder, "private"); + File privateCAFolder = new File(privateFolder, "ca"); + File privateServerFolder = new File(privateFolder, "server"); // Registration Constructor public AuthPacket() { super(4, ProtocolVersion.PV_1_0_0_BETA); } - File certificatesFolder = new File("certificates"); - - File publicFolder = new File(certificatesFolder, "public"); - File privateFolder = new File(certificatesFolder, "private"); - - File privateCAFolder = new File(privateFolder, "ca"); - File privateServerFolder = new File(privateFolder, "server"); - - File publicCAFolder = new File(publicFolder, "ca"); - File publicServerFolder = new File(publicFolder, "server"); - @Override public void onWrite(PacketHandler packetHandler, ObjectOutputStream objectOutputStream) throws IOException, ClassNotFoundException { if (ProtocolBridge.getInstance().isRunningAsDNSServer()) { @@ -97,7 +92,7 @@ public class AuthPacket extends OACPacket { ConnectedWebClient client = ProtocolBridge.getInstance().getProtocolWebServer().getClientByID(clientID); client.setClientVersion(clientVersion); } - } else if (ProtocolBridge.getInstance().isRunningAsClient()) { + } else if (ProtocolBridge.getInstance().isRunningAsClient()) { ProtocolVersion serverVersion = (ProtocolVersion) objectInputStream.readObject(); if (!ProtocolBridge.getInstance().isVersionSupported(serverVersion)) { diff --git a/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/beta/GetDestinationPacket.java b/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/beta/GetDestinationPacket.java index e450886..193a918 100644 --- a/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/beta/GetDestinationPacket.java +++ b/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/beta/GetDestinationPacket.java @@ -1,11 +1,11 @@ package org.openautonomousconnection.protocol.packets.v1_0_0.beta; +import dev.unlegitdqrk.unlegitlibrary.network.system.packets.PacketHandler; import org.openautonomousconnection.protocol.ProtocolBridge; import org.openautonomousconnection.protocol.packets.OACPacket; import org.openautonomousconnection.protocol.versions.ProtocolVersion; import org.openautonomousconnection.protocol.versions.v1_0_0.beta.DNSResponseCode; import org.openautonomousconnection.protocol.versions.v1_0_0.beta.Domain; -import dev.unlegitdqrk.unlegitlibrary.network.system.packets.PacketHandler; import java.io.IOException; import java.io.ObjectInputStream; diff --git a/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/beta/UnsupportedClassicPacket.java b/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/beta/UnsupportedClassicPacket.java index 497e136..23a922e 100644 --- a/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/beta/UnsupportedClassicPacket.java +++ b/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/beta/UnsupportedClassicPacket.java @@ -1,10 +1,10 @@ package org.openautonomousconnection.protocol.packets.v1_0_0.beta; +import dev.unlegitdqrk.unlegitlibrary.network.system.packets.PacketHandler; import org.openautonomousconnection.protocol.ProtocolBridge; import org.openautonomousconnection.protocol.packets.OACPacket; import org.openautonomousconnection.protocol.versions.ProtocolVersion; import org.openautonomousconnection.protocol.versions.v1_0_0.beta.DNSResponseCode; -import dev.unlegitdqrk.unlegitlibrary.network.system.packets.PacketHandler; import java.io.IOException; import java.io.ObjectInputStream; @@ -51,6 +51,7 @@ public class UnsupportedClassicPacket extends OACPacket { if (ProtocolBridge.getInstance().isRunningAsDNSServer()) ProtocolBridge.getInstance().getClassicHandlerServer().unsupportedClassicPacket(className, content, ProtocolBridge.getInstance().getProtocolDNSServer().getClientByID(clientID)); - else if (ProtocolBridge.getInstance().isRunningAsClient()) ProtocolBridge.getInstance().getClassicHandlerClient().unsupportedClassicPacket(className, content); + else if (ProtocolBridge.getInstance().isRunningAsClient()) + ProtocolBridge.getInstance().getClassicHandlerClient().unsupportedClassicPacket(className, content); } } diff --git a/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/beta/ValidateDomainPacket.java b/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/beta/ValidateDomainPacket.java index 297dd0b..4a33a48 100644 --- a/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/beta/ValidateDomainPacket.java +++ b/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/beta/ValidateDomainPacket.java @@ -1,10 +1,10 @@ package org.openautonomousconnection.protocol.packets.v1_0_0.beta; +import dev.unlegitdqrk.unlegitlibrary.network.system.packets.PacketHandler; import org.openautonomousconnection.protocol.ProtocolBridge; import org.openautonomousconnection.protocol.packets.OACPacket; import org.openautonomousconnection.protocol.versions.ProtocolVersion; import org.openautonomousconnection.protocol.versions.v1_0_0.beta.Domain; -import dev.unlegitdqrk.unlegitlibrary.network.system.packets.PacketHandler; import java.io.IOException; import java.io.ObjectInputStream; @@ -27,7 +27,8 @@ public class ValidateDomainPacket extends OACPacket { public void onWrite(PacketHandler packetHandler, ObjectOutputStream objectOutputStream) throws IOException, ClassNotFoundException { if (ProtocolBridge.getInstance().isRunningAsClient()) objectOutputStream.writeInt(ProtocolBridge.getInstance().getProtocolClient().getClientDNSConnection().getClientID()); - else if (ProtocolBridge.getInstance().isRunningAsDNSServer()) setResponseCode(ProtocolBridge.getInstance().getProtocolDNSServer().validateDomain(domain)); + else if (ProtocolBridge.getInstance().isRunningAsDNSServer()) + setResponseCode(ProtocolBridge.getInstance().getProtocolDNSServer().validateDomain(domain)); objectOutputStream.writeObject(domain); } @@ -49,7 +50,7 @@ public class ValidateDomainPacket extends OACPacket { ProtocolBridge.getInstance().getProtocolDNSServer().validationPacketSendFailed(domain, ProtocolBridge.getInstance().getProtocolDNSServer().getClientByID(clientID), e); } - return; - } else if (ProtocolBridge.getInstance().isRunningAsClient()) ProtocolBridge.getInstance().getProtocolClient().validationCompleted(domain, getResponseCode()); + } else if (ProtocolBridge.getInstance().isRunningAsClient()) + ProtocolBridge.getInstance().getProtocolClient().validationCompleted(domain, getResponseCode()); } } diff --git a/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/classic/Classic_DomainPacket.java b/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/classic/Classic_DomainPacket.java index aeb788d..a99c774 100644 --- a/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/classic/Classic_DomainPacket.java +++ b/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/classic/Classic_DomainPacket.java @@ -1,5 +1,6 @@ package org.openautonomousconnection.protocol.packets.v1_0_0.classic; +import dev.unlegitdqrk.unlegitlibrary.network.system.packets.PacketHandler; import org.openautonomousconnection.protocol.ProtocolBridge; import org.openautonomousconnection.protocol.packets.OACPacket; import org.openautonomousconnection.protocol.packets.v1_0_0.beta.UnsupportedClassicPacket; @@ -8,7 +9,6 @@ import org.openautonomousconnection.protocol.versions.v1_0_0.classic.Classic_Dom import org.openautonomousconnection.protocol.versions.v1_0_0.classic.Classic_DomainPacketReceivedEvent; import org.openautonomousconnection.protocol.versions.v1_0_0.classic.Classic_ProtocolVersion; import org.openautonomousconnection.protocol.versions.v1_0_0.classic.Classic_RequestDomain; -import dev.unlegitdqrk.unlegitlibrary.network.system.packets.PacketHandler; import java.io.IOException; import java.io.ObjectInputStream; @@ -39,7 +39,7 @@ public class Classic_DomainPacket extends OACPacket { objectOutputStream.writeInt(clientID); objectOutputStream.writeObject(requestDomain); objectOutputStream.writeObject(domain); - } else if (ProtocolBridge.getInstance().isRunningAsClient()) { + } else if (ProtocolBridge.getInstance().isRunningAsClient()) { clientID = ProtocolBridge.getInstance().getProtocolClient().getClientDNSConnection().getClientID(); objectOutputStream.writeInt(clientID); objectOutputStream.writeObject(requestDomain); @@ -67,7 +67,7 @@ public class Classic_DomainPacket extends OACPacket { ProtocolBridge.getInstance().getProtocolDNSServer().getNetworkServer().getConnectionHandlerByID(clientID).sendPacket(new Classic_DomainPacket(clientID, requestDomain, domain)); else ProtocolBridge.getInstance().getProtocolDNSServer().getNetworkServer().getConnectionHandlerByID(clientID).sendPacket(new UnsupportedClassicPacket(Classic_PingPacket.class, new Object[]{clientID, requestDomain, domain})); - } else if (ProtocolBridge.getInstance().isRunningAsClient()) { + } else if (ProtocolBridge.getInstance().isRunningAsClient()) { clientID = objectInputStream.readInt(); requestDomain = (Classic_RequestDomain) objectInputStream.readObject(); domain = (Classic_Domain) objectInputStream.readObject(); diff --git a/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/classic/Classic_MessagePacket.java b/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/classic/Classic_MessagePacket.java index 06b91e6..dc1a289 100644 --- a/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/classic/Classic_MessagePacket.java +++ b/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/classic/Classic_MessagePacket.java @@ -1,10 +1,10 @@ package org.openautonomousconnection.protocol.packets.v1_0_0.classic; +import dev.unlegitdqrk.unlegitlibrary.network.system.packets.PacketHandler; import org.openautonomousconnection.protocol.ProtocolBridge; import org.openautonomousconnection.protocol.packets.OACPacket; import org.openautonomousconnection.protocol.versions.ProtocolVersion; import org.openautonomousconnection.protocol.versions.v1_0_0.classic.Classic_ProtocolVersion; -import dev.unlegitdqrk.unlegitlibrary.network.system.packets.PacketHandler; import java.io.IOException; import java.io.ObjectInputStream; @@ -28,7 +28,7 @@ public class Classic_MessagePacket extends OACPacket { @Override public void onWrite(PacketHandler packetHandler, ObjectOutputStream objectOutputStream) throws IOException, ClassNotFoundException { if (ProtocolBridge.getInstance().isRunningAsDNSServer()) objectOutputStream.writeInt(clientID); - else if (ProtocolBridge.getInstance().isRunningAsClient()) { + else if (ProtocolBridge.getInstance().isRunningAsClient()) { clientID = ProtocolBridge.getInstance().getProtocolClient().getClientDNSConnection().getClientID(); objectOutputStream.writeInt(clientID); } @@ -45,7 +45,7 @@ public class Classic_MessagePacket extends OACPacket { Classic_ProtocolVersion protocolVersion = (Classic_ProtocolVersion) objectInputStream.readObject(); ProtocolBridge.getInstance().getClassicHandlerServer().handleMessage(ProtocolBridge.getInstance().getProtocolDNSServer().getClientByID(clientID), message, protocolVersion); - } else if (ProtocolBridge.getInstance().isRunningAsClient()) { + } else if (ProtocolBridge.getInstance().isRunningAsClient()) { clientID = objectInputStream.readInt(); String message = objectInputStream.readUTF(); Classic_ProtocolVersion protocolVersion = (Classic_ProtocolVersion) objectInputStream.readObject(); diff --git a/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/classic/Classic_PingPacket.java b/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/classic/Classic_PingPacket.java index 1a967c0..94d10bd 100644 --- a/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/classic/Classic_PingPacket.java +++ b/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/classic/Classic_PingPacket.java @@ -1,5 +1,6 @@ package org.openautonomousconnection.protocol.packets.v1_0_0.classic; +import dev.unlegitdqrk.unlegitlibrary.network.system.packets.PacketHandler; import org.openautonomousconnection.protocol.ProtocolBridge; import org.openautonomousconnection.protocol.packets.OACPacket; import org.openautonomousconnection.protocol.packets.v1_0_0.beta.UnsupportedClassicPacket; @@ -9,7 +10,6 @@ import org.openautonomousconnection.protocol.versions.v1_0_0.classic.Classic_Dom import org.openautonomousconnection.protocol.versions.v1_0_0.classic.Classic_PingPacketReceivedEvent; import org.openautonomousconnection.protocol.versions.v1_0_0.classic.Classic_ProtocolVersion; import org.openautonomousconnection.protocol.versions.v1_0_0.classic.Classic_RequestDomain; -import dev.unlegitdqrk.unlegitlibrary.network.system.packets.PacketHandler; import java.io.IOException; import java.io.ObjectInputStream; @@ -43,7 +43,7 @@ public class Classic_PingPacket extends OACPacket { objectOutputStream.writeObject(requestDomain); objectOutputStream.writeObject(domain); objectOutputStream.writeBoolean(reachable); - } else if (ProtocolBridge.getInstance().isRunningAsClient()) { + } else if (ProtocolBridge.getInstance().isRunningAsClient()) { clientID = ProtocolBridge.getInstance().getProtocolClient().getClientDNSConnection().getClientID(); objectOutputStream.writeInt(clientID); objectOutputStream.writeObject(requestDomain); diff --git a/src/main/java/org/openautonomousconnection/protocol/side/client/ProtocolClient.java b/src/main/java/org/openautonomousconnection/protocol/side/client/ProtocolClient.java index f9a9e6f..25e504a 100644 --- a/src/main/java/org/openautonomousconnection/protocol/side/client/ProtocolClient.java +++ b/src/main/java/org/openautonomousconnection/protocol/side/client/ProtocolClient.java @@ -1,5 +1,10 @@ package org.openautonomousconnection.protocol.side.client; +import dev.unlegitdqrk.unlegitlibrary.network.system.client.NetworkClient; +import dev.unlegitdqrk.unlegitlibrary.network.system.client.events.ClientDisconnectedEvent; +import dev.unlegitdqrk.unlegitlibrary.network.utils.NetworkUtils; +import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider; +import lombok.Getter; import org.openautonomousconnection.protocol.ProtocolBridge; import org.openautonomousconnection.protocol.exceptions.UnsupportedProtocolException; import org.openautonomousconnection.protocol.packets.OACPacket; @@ -10,70 +15,20 @@ import org.openautonomousconnection.protocol.packets.v1_0_0.classic.Classic_Ping import org.openautonomousconnection.protocol.versions.ProtocolVersion; import org.openautonomousconnection.protocol.versions.v1_0_0.beta.DNSResponseCode; import org.openautonomousconnection.protocol.versions.v1_0_0.beta.Domain; -import lombok.Getter; -import dev.unlegitdqrk.unlegitlibrary.network.system.client.NetworkClient; -import dev.unlegitdqrk.unlegitlibrary.network.system.client.events.ClientDisconnectedEvent; -import dev.unlegitdqrk.unlegitlibrary.network.utils.NetworkUtils; -import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.ClassicConverter; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.Classic_Domain; import org.openautonomousconnection.protocol.versions.v1_0_0.classic.Classic_RequestDomain; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; -import java.net.ConnectException; import java.security.cert.CertificateException; public abstract class ProtocolClient extends DefaultMethodsOverrider { - public final class ClientCertificateFolderStructure { - public final File certificatesFolder; - - public final File publicFolder; - public final File privateFolder; - - public final File privateCAFolder; - public final File privateClientFolder; - - public final File publicCAFolder; - public final File publicClientFolder; - - public ClientCertificateFolderStructure() { - certificatesFolder = new File("certificates"); - - publicFolder = new File(certificatesFolder, "public"); - privateFolder = new File(certificatesFolder, "private"); - - privateCAFolder = new File(privateFolder, "ca"); - privateClientFolder = new File(privateFolder, "client"); - - publicCAFolder = new File(publicFolder, "ca"); - publicClientFolder = new File(publicFolder, "client"); - - if (!certificatesFolder.exists()) certificatesFolder.mkdirs(); - - if (!publicFolder.exists()) publicFolder.mkdirs(); - if (!privateFolder.exists()) privateFolder.mkdirs(); - - if (!privateCAFolder.exists()) privateCAFolder.mkdirs(); - if (!privateClientFolder.exists()) privateClientFolder.mkdirs(); - - if (!publicCAFolder.exists()) publicCAFolder.mkdirs(); - if (!publicClientFolder.exists()) publicClientFolder.mkdirs(); - } - } - private final NetworkClient clientToDNS; // Handles everything with DNS-Connection + @Getter + private final ClientCertificateFolderStructure folderStructure; private WebClient webClient; private ProtocolVersion serverVersion = null; - @Getter - private final ClientCertificateFolderStructure folderStructure; - - public final NetworkClient getClientDNSConnection() { - return clientToDNS; - } - public ProtocolClient() throws CertificateException, IOException { folderStructure = new ClientCertificateFolderStructure(); @@ -84,8 +39,13 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider { build(); } + public final NetworkClient getClientDNSConnection() { + return clientToDNS; + } + public final void createWebConnection(Domain domain, int pipelinePort, int webPort) throws Exception { - if (!ProtocolBridge.getInstance().isProtocolSupported(ProtocolVersion.Protocol.OAC)) throw new UnsupportedProtocolException(); + if (!ProtocolBridge.getInstance().isProtocolSupported(ProtocolVersion.Protocol.OAC)) + throw new UnsupportedProtocolException(); if (webClient != null) { try { @@ -103,10 +63,12 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider { if (folder == null) throw new FileNotFoundException("Folder does not exist"); File[] files = folder.listFiles(); - if (files == null || files.length == 0) throw new FileNotFoundException("Folder " + folder.getAbsolutePath() + " is empty"); + if (files == null || files.length == 0) + throw new FileNotFoundException("Folder " + folder.getAbsolutePath() + " is empty"); for (File file : files) { - if (!file.getName().startsWith(prefix) || !file.getName().endsWith(extension)) throw new CertificateException(file.getAbsolutePath() + " is not valid"); + if (!file.getName().startsWith(prefix) || !file.getName().endsWith(extension)) + throw new CertificateException(file.getAbsolutePath() + " is not valid"); if (!found) found = file.getName().equalsIgnoreCase(prefix + NetworkUtils.getPublicIPAddress() + extension); } @@ -207,4 +169,41 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider { public abstract void validationCompleted(Domain domain, DNSResponseCode responseCode); public abstract void getDestinationCompleted(Domain domain, String destination, DNSResponseCode validationResponse); + + public final class ClientCertificateFolderStructure { + public final File certificatesFolder; + + public final File publicFolder; + public final File privateFolder; + + public final File privateCAFolder; + public final File privateClientFolder; + + public final File publicCAFolder; + public final File publicClientFolder; + + public ClientCertificateFolderStructure() { + certificatesFolder = new File("certificates"); + + publicFolder = new File(certificatesFolder, "public"); + privateFolder = new File(certificatesFolder, "private"); + + privateCAFolder = new File(privateFolder, "ca"); + privateClientFolder = new File(privateFolder, "client"); + + publicCAFolder = new File(publicFolder, "ca"); + publicClientFolder = new File(publicFolder, "client"); + + if (!certificatesFolder.exists()) certificatesFolder.mkdirs(); + + if (!publicFolder.exists()) publicFolder.mkdirs(); + if (!privateFolder.exists()) privateFolder.mkdirs(); + + if (!privateCAFolder.exists()) privateCAFolder.mkdirs(); + if (!privateClientFolder.exists()) privateClientFolder.mkdirs(); + + if (!publicCAFolder.exists()) publicCAFolder.mkdirs(); + if (!publicClientFolder.exists()) publicClientFolder.mkdirs(); + } + } } diff --git a/src/main/java/org/openautonomousconnection/protocol/side/client/WebClient.java b/src/main/java/org/openautonomousconnection/protocol/side/client/WebClient.java index fea7d43..c2496bd 100644 --- a/src/main/java/org/openautonomousconnection/protocol/side/client/WebClient.java +++ b/src/main/java/org/openautonomousconnection/protocol/side/client/WebClient.java @@ -1,9 +1,6 @@ package org.openautonomousconnection.protocol.side.client; import dev.unlegitdqrk.unlegitlibrary.network.system.client.NetworkClient; -import dev.unlegitdqrk.unlegitlibrary.network.system.client.events.*; -import dev.unlegitdqrk.unlegitlibrary.network.system.packets.Packet; -import lombok.Getter; import org.openautonomousconnection.protocol.ProtocolBridge; import org.openautonomousconnection.protocol.versions.v1_0_0.beta.Domain; @@ -21,19 +18,8 @@ import java.net.Socket; public final class WebClient { private final NetworkClient clientToWebPipeline; // Handles everything with Pipeline-Connection private SSLSocket clientToWebServer; // Handles everything with Web-Connection - - private final Thread receiveThread = new Thread(this::receive); - private ObjectOutputStream outputStream; + private ObjectOutputStream outputStream; private final Thread receiveThread = new Thread(this::receive); private ObjectInputStream inputStream; - - public final NetworkClient getClientPipelineConnection() { - return clientToWebPipeline; - } - - public final SSLSocket getClientWebConnection() { - return clientToWebServer; - } - public WebClient(Domain domain, int pipelinePort, int webPort) throws Exception { clientToWebPipeline = new NetworkClient.ClientBuilder().setLogger(ProtocolBridge.getInstance().getLogger()). setHost(domain.getDestination()).setPort(pipelinePort). @@ -54,9 +40,9 @@ public final class WebClient { if (proxy != null) { Socket rawSocket = new Socket(proxy); rawSocket.connect(new InetSocketAddress(domain.getDestination(), webPort), 0); - tempSocket = (SSLSocket)sslSocketFactory.createSocket(rawSocket, domain.getDestination(), webPort, true); + tempSocket = (SSLSocket) sslSocketFactory.createSocket(rawSocket, domain.getDestination(), webPort, true); } else { - tempSocket = (SSLSocket)sslSocketFactory.createSocket(domain.getDestination(), webPort); + tempSocket = (SSLSocket) sslSocketFactory.createSocket(domain.getDestination(), webPort); } clientToWebServer = tempSocket; @@ -85,7 +71,15 @@ public final class WebClient { } } - public final boolean isConnected() { + public NetworkClient getClientPipelineConnection() { + return clientToWebPipeline; + } + + public SSLSocket getClientWebConnection() { + return clientToWebServer; + } + + public boolean isConnected() { return this.clientToWebServer != null && this.clientToWebServer.isConnected() && !this.clientToWebServer.isClosed() && this.receiveThread.isAlive() && !this.receiveThread.isInterrupted() && ProtocolBridge.getInstance().getProtocolClient().getClientDNSConnection().isConnected() && clientToWebPipeline.isConnected(); @@ -93,7 +87,7 @@ public final class WebClient { private void receive() { try { - while(this.isConnected()) { + while (this.isConnected()) { Object received = this.inputStream.readObject(); } } catch (Exception var2) { @@ -105,7 +99,7 @@ public final class WebClient { } } - public synchronized final boolean closeConnection() throws IOException { + public synchronized boolean closeConnection() throws IOException { if (!this.isConnected()) { return false; } else { @@ -133,4 +127,6 @@ public final class WebClient { return true; } } + + } diff --git a/src/main/java/org/openautonomousconnection/protocol/side/dns/ConnectedProtocolClient.java b/src/main/java/org/openautonomousconnection/protocol/side/dns/ConnectedProtocolClient.java index 4fb4888..14ed7a9 100644 --- a/src/main/java/org/openautonomousconnection/protocol/side/dns/ConnectedProtocolClient.java +++ b/src/main/java/org/openautonomousconnection/protocol/side/dns/ConnectedProtocolClient.java @@ -1,9 +1,9 @@ package org.openautonomousconnection.protocol.side.dns; +import dev.unlegitdqrk.unlegitlibrary.network.system.server.ConnectionHandler; +import lombok.Getter; import org.openautonomousconnection.protocol.packets.OACPacket; import org.openautonomousconnection.protocol.versions.ProtocolVersion; -import lombok.Getter; -import dev.unlegitdqrk.unlegitlibrary.network.system.server.ConnectionHandler; public final class ConnectedProtocolClient { @@ -20,7 +20,7 @@ public final class ConnectedProtocolClient { return clientVersion == null ? ProtocolVersion.PV_1_0_0_CLASSIC : clientVersion; } - public final void setClientVersion(ProtocolVersion clientVersion) { + public void setClientVersion(ProtocolVersion clientVersion) { if (clientVersion == null) this.clientVersion = clientVersion; } @@ -74,7 +74,7 @@ public final class ConnectedProtocolClient { return getClientVersion() == targetVersion || getClientVersion().getCompatibleVersions().contains(targetVersion); } - public final boolean supportClientProtocol(ProtocolVersion.Protocol protocol) { + public boolean supportClientProtocol(ProtocolVersion.Protocol protocol) { boolean yes = false; for (ProtocolVersion compatibleVersion : getClientVersion().getCompatibleVersions()) { yes = compatibleVersion.getSupportedProtocols().contains(protocol); diff --git a/src/main/java/org/openautonomousconnection/protocol/side/dns/ProtocolDNSServer.java b/src/main/java/org/openautonomousconnection/protocol/side/dns/ProtocolDNSServer.java index dcb2c3a..144f21a 100644 --- a/src/main/java/org/openautonomousconnection/protocol/side/dns/ProtocolDNSServer.java +++ b/src/main/java/org/openautonomousconnection/protocol/side/dns/ProtocolDNSServer.java @@ -1,13 +1,13 @@ package org.openautonomousconnection.protocol.side.dns; -import org.openautonomousconnection.protocol.ProtocolBridge; -import org.openautonomousconnection.protocol.versions.v1_0_0.beta.DNSResponseCode; -import org.openautonomousconnection.protocol.versions.v1_0_0.beta.Domain; -import lombok.Getter; import dev.unlegitdqrk.unlegitlibrary.file.ConfigurationManager; import dev.unlegitdqrk.unlegitlibrary.network.system.server.NetworkServer; import dev.unlegitdqrk.unlegitlibrary.network.utils.NetworkUtils; import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider; +import lombok.Getter; +import org.openautonomousconnection.protocol.ProtocolBridge; +import org.openautonomousconnection.protocol.versions.v1_0_0.beta.DNSResponseCode; +import org.openautonomousconnection.protocol.versions.v1_0_0.beta.Domain; import java.io.File; import java.io.FileNotFoundException; @@ -17,57 +17,15 @@ import java.util.ArrayList; import java.util.List; public abstract class ProtocolDNSServer extends DefaultMethodsOverrider { - public final class ServerCertificateFolderStructure { - public final File certificatesFolder; - - public final File publicFolder; - public final File privateFolder; - - public final File privateCAFolder; - public final File privateServerFolder; - - public final File publicCAFolder; - public final File publicServerFolder; - - public ServerCertificateFolderStructure() { - certificatesFolder = new File("certificates"); - - publicFolder = new File(certificatesFolder, "public"); - privateFolder = new File(certificatesFolder, "private"); - - privateCAFolder = new File(privateFolder, "ca"); - privateServerFolder = new File(privateFolder, "server"); - - publicCAFolder = new File(publicFolder, "ca"); - publicServerFolder = new File(publicFolder, "server"); - - if (!certificatesFolder.exists()) certificatesFolder.mkdirs(); - - if (!publicFolder.exists()) publicFolder.mkdirs(); - if (!privateFolder.exists()) privateFolder.mkdirs(); - - if (!privateCAFolder.exists()) privateCAFolder.mkdirs(); - if (!privateServerFolder.exists()) privateServerFolder.mkdirs(); - - if (!publicCAFolder.exists()) publicCAFolder.mkdirs(); - if (!publicServerFolder.exists()) publicServerFolder.mkdirs(); - } - - public final String caPrefix = "ca_dns_"; - public final String certPrefix = "cert_dns_"; - } - @Getter private final NetworkServer networkServer; - + private final ConfigurationManager configurationManager; @Getter private List clients; @Getter private ServerCertificateFolderStructure folderStructure; - private final ConfigurationManager configurationManager; - public ProtocolDNSServer(File configFile) throws IOException, CertificateException { if (!configFile.exists()) configFile.createNewFile(); @@ -112,10 +70,12 @@ public abstract class ProtocolDNSServer extends DefaultMethodsOverrider { if (folder == null) throw new FileNotFoundException("Folder does not exist"); File[] files = folder.listFiles(); - if (files == null || files.length == 0) throw new FileNotFoundException("Folder " + folder.getAbsolutePath() + " is empty"); + if (files == null || files.length == 0) + throw new FileNotFoundException("Folder " + folder.getAbsolutePath() + " is empty"); for (File file : files) { - if (!file.getName().startsWith(prefix) || !file.getName().endsWith(extension)) throw new CertificateException(file.getAbsolutePath() + " is not valid"); + if (!file.getName().startsWith(prefix) || !file.getName().endsWith(extension)) + throw new CertificateException(file.getAbsolutePath() + " is not valid"); if (!found) found = file.getName().equalsIgnoreCase(prefix + NetworkUtils.getPublicIPAddress() + extension); } @@ -149,4 +109,42 @@ public abstract class ProtocolDNSServer extends DefaultMethodsOverrider { public abstract void validationPacketSendFailed(Domain domain, ConnectedProtocolClient client, Exception exception); public abstract void domainDestinationPacketFailedSend(ConnectedProtocolClient client, Domain domain, DNSResponseCode validationResponse, Exception exception); + + public final class ServerCertificateFolderStructure { + public final File certificatesFolder; + + public final File publicFolder; + public final File privateFolder; + + public final File privateCAFolder; + public final File privateServerFolder; + + public final File publicCAFolder; + public final File publicServerFolder; + public final String caPrefix = "ca_dns_"; + public final String certPrefix = "cert_dns_"; + public ServerCertificateFolderStructure() { + certificatesFolder = new File("certificates"); + + publicFolder = new File(certificatesFolder, "public"); + privateFolder = new File(certificatesFolder, "private"); + + privateCAFolder = new File(privateFolder, "ca"); + privateServerFolder = new File(privateFolder, "server"); + + publicCAFolder = new File(publicFolder, "ca"); + publicServerFolder = new File(publicFolder, "server"); + + if (!certificatesFolder.exists()) certificatesFolder.mkdirs(); + + if (!publicFolder.exists()) publicFolder.mkdirs(); + if (!privateFolder.exists()) privateFolder.mkdirs(); + + if (!privateCAFolder.exists()) privateCAFolder.mkdirs(); + if (!privateServerFolder.exists()) privateServerFolder.mkdirs(); + + if (!publicCAFolder.exists()) publicCAFolder.mkdirs(); + if (!publicServerFolder.exists()) publicServerFolder.mkdirs(); + } + } } diff --git a/src/main/java/org/openautonomousconnection/protocol/side/dns/events/ConnectedProtocolClientEvent.java b/src/main/java/org/openautonomousconnection/protocol/side/dns/events/ConnectedProtocolClientEvent.java index e9b0d74..9839409 100644 --- a/src/main/java/org/openautonomousconnection/protocol/side/dns/events/ConnectedProtocolClientEvent.java +++ b/src/main/java/org/openautonomousconnection/protocol/side/dns/events/ConnectedProtocolClientEvent.java @@ -1,8 +1,8 @@ package org.openautonomousconnection.protocol.side.dns.events; -import org.openautonomousconnection.protocol.side.dns.ConnectedProtocolClient; -import lombok.Getter; import dev.unlegitdqrk.unlegitlibrary.event.impl.Event; +import lombok.Getter; +import org.openautonomousconnection.protocol.side.dns.ConnectedProtocolClient; public final class ConnectedProtocolClientEvent extends Event { diff --git a/src/main/java/org/openautonomousconnection/protocol/side/web/ConnectedWebClient.java b/src/main/java/org/openautonomousconnection/protocol/side/web/ConnectedWebClient.java index a8a8ed6..446ed23 100644 --- a/src/main/java/org/openautonomousconnection/protocol/side/web/ConnectedWebClient.java +++ b/src/main/java/org/openautonomousconnection/protocol/side/web/ConnectedWebClient.java @@ -1,12 +1,6 @@ package org.openautonomousconnection.protocol.side.web; -import dev.unlegitdqrk.unlegitlibrary.network.system.packets.Packet; import dev.unlegitdqrk.unlegitlibrary.network.system.server.ConnectionHandler; -import dev.unlegitdqrk.unlegitlibrary.network.system.server.NetworkServer; -import dev.unlegitdqrk.unlegitlibrary.network.system.server.events.ConnectionHandlerDisconnectedEvent; -import dev.unlegitdqrk.unlegitlibrary.network.system.server.events.S_PacketReceivedEvent; -import dev.unlegitdqrk.unlegitlibrary.network.system.server.events.S_PacketReceivedFailedEvent; -import dev.unlegitdqrk.unlegitlibrary.network.system.server.events.S_UnknownObjectReceivedEvent; import lombok.Getter; import org.openautonomousconnection.protocol.ProtocolBridge; import org.openautonomousconnection.protocol.packets.OACPacket; @@ -17,7 +11,6 @@ import org.openautonomousconnection.protocol.versions.ProtocolVersion; import javax.net.ssl.SSLSocket; import java.io.*; -import java.net.SocketException; import java.net.URLDecoder; import java.nio.charset.StandardCharsets; import java.nio.file.Files; @@ -33,216 +26,15 @@ public final class ConnectedWebClient { private SSLSocket webSocket; private ObjectOutputStream outputStream; private ObjectInputStream inputStream; - private final Thread receiveThread = new Thread(this::receive); - - private ProtocolVersion clientVersion = null; + private ProtocolVersion clientVersion = null; private final Thread receiveThread = new Thread(this::receive); + @Getter + private boolean clientVersionLoaded = false; public ConnectedWebClient(ConnectionHandler pipelineConnection) { this.pipelineConnection = pipelineConnection; } - public void setWebSocket(SSLSocket webSocket) { - if (webSocket != null) this.webSocket = webSocket; - this.receiveThread.start(); - } - - public boolean isConnected() { - return this.webSocket != null && this.webSocket.isConnected() && !this.webSocket.isClosed() && this.receiveThread.isAlive() && pipelineConnection.isConnected(); - } - - - public synchronized boolean disconnect() { - if (!this.isConnected()) { - return false; - } else { - pipelineConnection.disconnect(); - - if (this.receiveThread.isAlive()) { - this.receiveThread.interrupt(); - } - - try { - this.outputStream.close(); - this.inputStream.close(); - this.webSocket.close(); - } catch (IOException var2) { - } - - this.webSocket = null; - this.outputStream = null; - this.inputStream = null; - return true; - } - } - - @Getter - private boolean clientVersionLoaded = false; - - public ProtocolVersion getClientVersion() { - return clientVersion == null ? ProtocolVersion.PV_1_0_0_CLASSIC : clientVersion; - } - - public final void setClientVersion(ProtocolVersion clientVersion) { - if (!clientVersionLoaded) clientVersionLoaded = true; - if (clientVersion == null) this.clientVersion = clientVersion; - } - - public boolean isStableClient() { - return !isBetaClient() && !isClassicClient(); - } - - public boolean supportClientStable() { - boolean yes = false; - for (ProtocolVersion compatibleVersion : getClientVersion().getCompatibleVersions()) { - yes = compatibleVersion.getProtocolType() == ProtocolVersion.ProtocolType.STABLE; - if (yes) break; - } - - return isStableClient() || yes; - } - - public boolean isBetaClient() { - return getClientVersion().getProtocolType() == ProtocolVersion.ProtocolType.BETA; - } - - public boolean supportClientBeta() { - boolean yes = false; - for (ProtocolVersion compatibleVersion : getClientVersion().getCompatibleVersions()) { - yes = compatibleVersion.getProtocolType() == ProtocolVersion.ProtocolType.BETA; - if (yes) break; - } - - return isBetaClient() || yes; - } - - public boolean isClassicClient() { - return getClientVersion().getProtocolType() == ProtocolVersion.ProtocolType.CLASSIC; - } - - public boolean supportClientClassic() { - boolean yes = false; - for (ProtocolVersion compatibleVersion : getClientVersion().getCompatibleVersions()) { - yes = compatibleVersion.getProtocolType() == ProtocolVersion.ProtocolType.CLASSIC; - if (yes) break; - } - - return isClassicClient() || yes; - } - - public boolean supportClientPacket(OACPacket packet) { - return supportClientVersion(packet.getProtocolVersion()); - } - - public boolean supportClientVersion(ProtocolVersion targetVersion) { - return getClientVersion() == targetVersion || getClientVersion().getCompatibleVersions().contains(targetVersion); - } - - public final boolean supportClientProtocol(ProtocolVersion.Protocol protocol) { - boolean yes = false; - for (ProtocolVersion compatibleVersion : getClientVersion().getCompatibleVersions()) { - yes = compatibleVersion.getSupportedProtocols().contains(protocol); - if (yes) break; - } - - return getClientVersion().getSupportedProtocols().contains(protocol) || yes; - } - - private void receive() { - try { - while(this.isConnected()) { - Object received = this.inputStream.readObject(); - - try (InputStream in = webSocket.getInputStream(); OutputStream out = webSocket.getOutputStream()) { - BufferedReader reader = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8)); - String line; - String path = "/main.html"; - Map headers = new HashMap<>(); - while ((line = reader.readLine()) != null && !line.isEmpty()) { - if (line.toLowerCase().startsWith("get") || line.toLowerCase().startsWith("post")) { - path = line.split(" ")[1]; - } - if (line.contains(":")) { - String[] parts = line.split(":", 2); - headers.put(parts[0].trim().toLowerCase(), parts[1].trim()); - } - } - - path = URLDecoder.decode(path, StandardCharsets.UTF_8); - path = normalizePath(path); - - File file = new File(ProtocolBridge.getInstance().getProtocolWebServer().getContentFolder(), path); - - String sessionId = null; - if (headers.containsKey("cookie")) { - for (String cookie : headers.get("cookie").split(";")) { - cookie = cookie.trim(); - if (cookie.startsWith("SESSIONID=")) { - sessionId = cookie.substring("SESSIONID=".length()); - } - } - } - - if (!file.exists() || !file.isFile()) { - sendResponse(out, 404, new File(ProtocolBridge.getInstance().getProtocolWebServer().getErrorsFolder(), "404.html")); - return; - } - - String clientIp = webSocket.getInetAddress().getHostAddress(); - String userAgent = headers.getOrDefault("user-agent", null); - - boolean loggedIn = sessionId != null && SessionManager.isValid(sessionId, clientIp, userAgent); - - if (path.equals("/403-login") && headers.getOrDefault("content-type","").startsWith("application/x-www-form-urlencoded")) { - Map postParams = parsePostParams(in); - String login = postParams.get("login"); - String password = postParams.get("password"); - - if (AuthManager.checkAuth(login, password)) { - String newSessionId = SessionManager.create(login, clientIp, userAgent); - Map cookies = Map.of("Set-Cookie", "SESSIONID=" + newSessionId + "; HttpOnly; Path=/"); - sendRedirect(out, "/main.html", cookies); - return; - } else { - sendRedirect(out, "/403.php", null); - return; - } - } - - if (isMultipart(headers)) { - handleMultipart(in, headers, new File(ProtocolBridge.getInstance().getProtocolWebServer().getContentFolder(), "uploads")); - } - - if (RuleManager.requiresAuth(path) && !loggedIn) { - PHPResponse phpResp = renderPHPWithCookies(new File(ProtocolBridge.getInstance().getProtocolWebServer().getContentFolder(), "403.php")); - sendResponse(out, 200, phpResp.body.getBytes(StandardCharsets.UTF_8), "text/html", phpResp.cookies); - return; - } - - - if (RuleManager.isDenied(path) && !RuleManager.isAllowed(path)) { - sendResponse(out, 403, new File(ProtocolBridge.getInstance().getProtocolWebServer().getErrorsFolder(), "403.php")); - return; - } - - if (path.endsWith(".php")) { - PHPResponse phpResp = renderPHPWithCookies(file); - sendResponse(out, 200, phpResp.body.getBytes(StandardCharsets.UTF_8), "text/html", phpResp.cookies); - } else { - sendResponse(out, 200, Files.readAllBytes(file.toPath()), getContentType(path), null); - } - - } catch (Exception e) { - e.printStackTrace(); - } finally { - disconnect(); - } - } - } catch (Exception var2) { - this.disconnect(); - } - } - - private static void sendRedirect(OutputStream out, String location, Map cookies) throws IOException { + private static void sendRedirect(OutputStream out, String location, Map cookies) throws IOException { out.write(("HTTP/1.1 302 Found\r\n").getBytes()); out.write(("Location: " + location + "\r\n").getBytes()); if (cookies != null) { @@ -254,23 +46,24 @@ public final class ConnectedWebClient { out.flush(); } - private static Map parsePostParams(InputStream in) throws IOException { + private static Map parsePostParams(InputStream in) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8)); StringBuilder sb = new StringBuilder(); while (reader.ready()) { sb.append((char) reader.read()); } - Map map = new HashMap<>(); + Map map = new HashMap<>(); String[] pairs = sb.toString().split("&"); for (String p : pairs) { - String[] kv = p.split("=",2); - if (kv.length == 2) map.put(URLDecoder.decode(kv[0], StandardCharsets.UTF_8), URLDecoder.decode(kv[1], StandardCharsets.UTF_8)); + String[] kv = p.split("=", 2); + if (kv.length == 2) + map.put(URLDecoder.decode(kv[0], StandardCharsets.UTF_8), URLDecoder.decode(kv[1], StandardCharsets.UTF_8)); } return map; } private static String normalizePath(String path) { - path = path.replace("/", File.separator).replace("\\","/"); + path = path.replace("/", File.separator).replace("\\", "/"); while (path.contains("..")) path = path.replace("..", ""); if (path.startsWith("/")) path = path.substring(1); return path; @@ -288,7 +81,7 @@ public final class ConnectedWebClient { return map; } - private static boolean isMultipart(Map headers) { + private static boolean isMultipart(Map headers) { String contentType = headers.get("content-type"); return contentType != null && contentType.startsWith("multipart/form-data"); } @@ -355,7 +148,7 @@ public final class ConnectedWebClient { return output.toString(StandardCharsets.UTF_8); } - private static void sendResponse(OutputStream out, int code, File file, Map headers) throws IOException { + private static void sendResponse(OutputStream out, int code, File file, Map headers) throws IOException { byte[] body = Files.readAllBytes(file.toPath()); sendResponse(out, code, body, "text/html", headers); } @@ -378,7 +171,10 @@ public final class ConnectedWebClient { out.write(("Content-Type: " + contentType + "\r\n").getBytes()); out.write(("Content-Length: " + body.length + "\r\n").getBytes()); if (headers != null) headers.forEach((k, v) -> { - try { out.write((k + ": " + v + "\r\n").getBytes()); } catch (IOException ignored) {} + try { + out.write((k + ": " + v + "\r\n").getBytes()); + } catch (IOException ignored) { + } }); out.write("\r\n".getBytes()); out.write(body); @@ -452,6 +248,203 @@ public final class ConnectedWebClient { return new PHPResponse(body, cookies); } + public void setWebSocket(SSLSocket webSocket) { + if (webSocket != null) this.webSocket = webSocket; + this.receiveThread.start(); + } + + public boolean isConnected() { + return this.webSocket != null && this.webSocket.isConnected() && !this.webSocket.isClosed() && this.receiveThread.isAlive() && pipelineConnection.isConnected(); + } + + public synchronized boolean disconnect() { + if (!this.isConnected()) { + return false; + } else { + pipelineConnection.disconnect(); + + if (this.receiveThread.isAlive()) { + this.receiveThread.interrupt(); + } + + try { + this.outputStream.close(); + this.inputStream.close(); + this.webSocket.close(); + } catch (IOException var2) { + } + + this.webSocket = null; + this.outputStream = null; + this.inputStream = null; + return true; + } + } + + public ProtocolVersion getClientVersion() { + return clientVersion == null ? ProtocolVersion.PV_1_0_0_CLASSIC : clientVersion; + } + + public void setClientVersion(ProtocolVersion clientVersion) { + if (!clientVersionLoaded) clientVersionLoaded = true; + if (clientVersion == null) this.clientVersion = clientVersion; + } + + public boolean isStableClient() { + return !isBetaClient() && !isClassicClient(); + } + + public boolean supportClientStable() { + boolean yes = false; + for (ProtocolVersion compatibleVersion : getClientVersion().getCompatibleVersions()) { + yes = compatibleVersion.getProtocolType() == ProtocolVersion.ProtocolType.STABLE; + if (yes) break; + } + + return isStableClient() || yes; + } + + public boolean isBetaClient() { + return getClientVersion().getProtocolType() == ProtocolVersion.ProtocolType.BETA; + } + + public boolean supportClientBeta() { + boolean yes = false; + for (ProtocolVersion compatibleVersion : getClientVersion().getCompatibleVersions()) { + yes = compatibleVersion.getProtocolType() == ProtocolVersion.ProtocolType.BETA; + if (yes) break; + } + + return isBetaClient() || yes; + } + + public boolean isClassicClient() { + return getClientVersion().getProtocolType() == ProtocolVersion.ProtocolType.CLASSIC; + } + + public boolean supportClientClassic() { + boolean yes = false; + for (ProtocolVersion compatibleVersion : getClientVersion().getCompatibleVersions()) { + yes = compatibleVersion.getProtocolType() == ProtocolVersion.ProtocolType.CLASSIC; + if (yes) break; + } + + return isClassicClient() || yes; + } + + public boolean supportClientPacket(OACPacket packet) { + return supportClientVersion(packet.getProtocolVersion()); + } + + public boolean supportClientVersion(ProtocolVersion targetVersion) { + return getClientVersion() == targetVersion || getClientVersion().getCompatibleVersions().contains(targetVersion); + } + + public boolean supportClientProtocol(ProtocolVersion.Protocol protocol) { + boolean yes = false; + for (ProtocolVersion compatibleVersion : getClientVersion().getCompatibleVersions()) { + yes = compatibleVersion.getSupportedProtocols().contains(protocol); + if (yes) break; + } + + return getClientVersion().getSupportedProtocols().contains(protocol) || yes; + } + + private void receive() { + try { + while (this.isConnected()) { + Object received = this.inputStream.readObject(); + + try (InputStream in = webSocket.getInputStream(); OutputStream out = webSocket.getOutputStream()) { + BufferedReader reader = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8)); + String line; + String path = "/main.html"; + Map headers = new HashMap<>(); + while ((line = reader.readLine()) != null && !line.isEmpty()) { + if (line.toLowerCase().startsWith("get") || line.toLowerCase().startsWith("post")) { + path = line.split(" ")[1]; + } + if (line.contains(":")) { + String[] parts = line.split(":", 2); + headers.put(parts[0].trim().toLowerCase(), parts[1].trim()); + } + } + + path = URLDecoder.decode(path, StandardCharsets.UTF_8); + path = normalizePath(path); + + File file = new File(ProtocolBridge.getInstance().getProtocolWebServer().getContentFolder(), path); + + String sessionId = null; + if (headers.containsKey("cookie")) { + for (String cookie : headers.get("cookie").split(";")) { + cookie = cookie.trim(); + if (cookie.startsWith("SESSIONID=")) { + sessionId = cookie.substring("SESSIONID=".length()); + } + } + } + + if (!file.exists() || !file.isFile()) { + sendResponse(out, 404, new File(ProtocolBridge.getInstance().getProtocolWebServer().getErrorsFolder(), "404.html")); + return; + } + + String clientIp = webSocket.getInetAddress().getHostAddress(); + String userAgent = headers.getOrDefault("user-agent", null); + + boolean loggedIn = sessionId != null && SessionManager.isValid(sessionId, clientIp, userAgent); + + if (path.equals("/403-login") && headers.getOrDefault("content-type", "").startsWith("application/x-www-form-urlencoded")) { + Map postParams = parsePostParams(in); + String login = postParams.get("login"); + String password = postParams.get("password"); + + if (AuthManager.checkAuth(login, password)) { + String newSessionId = SessionManager.create(login, clientIp, userAgent); + Map cookies = Map.of("Set-Cookie", "SESSIONID=" + newSessionId + "; HttpOnly; Path=/"); + sendRedirect(out, "/main.html", cookies); + return; + } else { + sendRedirect(out, "/403.php", null); + return; + } + } + + if (isMultipart(headers)) { + handleMultipart(in, headers, new File(ProtocolBridge.getInstance().getProtocolWebServer().getContentFolder(), "uploads")); + } + + if (RuleManager.requiresAuth(path) && !loggedIn) { + PHPResponse phpResp = renderPHPWithCookies(new File(ProtocolBridge.getInstance().getProtocolWebServer().getContentFolder(), "403.php")); + sendResponse(out, 200, phpResp.body.getBytes(StandardCharsets.UTF_8), "text/html", phpResp.cookies); + return; + } + + + if (RuleManager.isDenied(path) && !RuleManager.isAllowed(path)) { + sendResponse(out, 403, new File(ProtocolBridge.getInstance().getProtocolWebServer().getErrorsFolder(), "403.php")); + return; + } + + if (path.endsWith(".php")) { + PHPResponse phpResp = renderPHPWithCookies(file); + sendResponse(out, 200, phpResp.body.getBytes(StandardCharsets.UTF_8), "text/html", phpResp.cookies); + } else { + sendResponse(out, 200, Files.readAllBytes(file.toPath()), getContentType(path), null); + } + + } catch (Exception e) { + e.printStackTrace(); + } finally { + disconnect(); + } + } + } catch (Exception var2) { + this.disconnect(); + } + } + private static class PHPResponse { String body; Map cookies; @@ -461,4 +454,6 @@ public final class ConnectedWebClient { this.cookies = cookies; } } + + } diff --git a/src/main/java/org/openautonomousconnection/protocol/side/web/ProtocolWebServer.java b/src/main/java/org/openautonomousconnection/protocol/side/web/ProtocolWebServer.java index 6d522d9..85e544a 100644 --- a/src/main/java/org/openautonomousconnection/protocol/side/web/ProtocolWebServer.java +++ b/src/main/java/org/openautonomousconnection/protocol/side/web/ProtocolWebServer.java @@ -17,67 +17,21 @@ import java.io.IOException; import java.security.cert.CertificateException; import java.util.ArrayList; import java.util.List; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; public class ProtocolWebServer { - public final class ServerCertificateFolderStructure { - public final File certificatesFolder; - - public final File publicFolder; - public final File privateFolder; - - public final File privateCAFolder; - public final File privateServerFolder; - - public final File publicCAFolder; - public final File publicServerFolder; - - public ServerCertificateFolderStructure() { - certificatesFolder = new File("certificates"); - - publicFolder = new File(certificatesFolder, "public"); - privateFolder = new File(certificatesFolder, "private"); - - privateCAFolder = new File(privateFolder, "ca"); - privateServerFolder = new File(privateFolder, "server"); - - publicCAFolder = new File(publicFolder, "ca"); - publicServerFolder = new File(publicFolder, "server"); - - if (!certificatesFolder.exists()) certificatesFolder.mkdirs(); - - if (!publicFolder.exists()) publicFolder.mkdirs(); - if (!privateFolder.exists()) privateFolder.mkdirs(); - - if (!privateCAFolder.exists()) privateCAFolder.mkdirs(); - if (!privateServerFolder.exists()) privateServerFolder.mkdirs(); - - if (!publicCAFolder.exists()) publicCAFolder.mkdirs(); - if (!publicServerFolder.exists()) publicServerFolder.mkdirs(); - } - - public final String caPrefix = "ca_server_"; - public final String certPrefix = "cert_server_"; - } - - @Getter - private NetworkServer pipelineServer; - @Getter - private SSLServerSocket webServer; - @Getter private final File contentFolder; @Getter private final File errorsFolder; - @Getter private final ServerCertificateFolderStructure folderStructure; - private final ConfigurationManager configurationManager; private final File certFile; private final File keyFile; - + @Getter + private NetworkServer pipelineServer; + @Getter + private SSLServerSocket webServer; @Getter private List clients; @@ -146,8 +100,8 @@ public class ProtocolWebServer { } public final void startWebServer() throws Exception { - webServer = (SSLServerSocket)NetworkServer.ServerBuilder. - createSSLServerSocketFactory(folderStructure.publicCAFolder, certFile,keyFile). + webServer = (SSLServerSocket) NetworkServer.ServerBuilder. + createSSLServerSocketFactory(folderStructure.publicCAFolder, certFile, keyFile). createServerSocket(configurationManager.getInt("port")); webServer.setSoTimeout(0); webServer.setEnabledProtocols(pipelineServer.getServerSocket().getEnabledProtocols()); @@ -194,10 +148,12 @@ public class ProtocolWebServer { if (folder == null) throw new FileNotFoundException("Folder does not exist"); File[] files = folder.listFiles(); - if (files == null || files.length == 0) throw new FileNotFoundException("Folder " + folder.getAbsolutePath() + " is empty"); + if (files == null || files.length == 0) + throw new FileNotFoundException("Folder " + folder.getAbsolutePath() + " is empty"); for (File file : files) { - if (!file.getName().startsWith(prefix) || !file.getName().endsWith(extension)) throw new CertificateException(file.getAbsolutePath() + " is not valid"); + if (!file.getName().startsWith(prefix) || !file.getName().endsWith(extension)) + throw new CertificateException(file.getAbsolutePath() + " is not valid"); if (!found) found = file.getName().equalsIgnoreCase(prefix + NetworkUtils.getPublicIPAddress() + extension); } @@ -232,4 +188,42 @@ public class ProtocolWebServer { return configurationManager; } + + public final class ServerCertificateFolderStructure { + public final File certificatesFolder; + + public final File publicFolder; + public final File privateFolder; + + public final File privateCAFolder; + public final File privateServerFolder; + + public final File publicCAFolder; + public final File publicServerFolder; + public final String caPrefix = "ca_server_"; + public final String certPrefix = "cert_server_"; + public ServerCertificateFolderStructure() { + certificatesFolder = new File("certificates"); + + publicFolder = new File(certificatesFolder, "public"); + privateFolder = new File(certificatesFolder, "private"); + + privateCAFolder = new File(privateFolder, "ca"); + privateServerFolder = new File(privateFolder, "server"); + + publicCAFolder = new File(publicFolder, "ca"); + publicServerFolder = new File(publicFolder, "server"); + + if (!certificatesFolder.exists()) certificatesFolder.mkdirs(); + + if (!publicFolder.exists()) publicFolder.mkdirs(); + if (!privateFolder.exists()) privateFolder.mkdirs(); + + if (!privateCAFolder.exists()) privateCAFolder.mkdirs(); + if (!privateServerFolder.exists()) privateServerFolder.mkdirs(); + + if (!publicCAFolder.exists()) publicCAFolder.mkdirs(); + if (!publicServerFolder.exists()) publicServerFolder.mkdirs(); + } + } } diff --git a/src/main/java/org/openautonomousconnection/protocol/side/web/managers/AuthManager.java b/src/main/java/org/openautonomousconnection/protocol/side/web/managers/AuthManager.java index 8120b06..fe20f13 100644 --- a/src/main/java/org/openautonomousconnection/protocol/side/web/managers/AuthManager.java +++ b/src/main/java/org/openautonomousconnection/protocol/side/web/managers/AuthManager.java @@ -10,7 +10,7 @@ import java.util.Map; public class AuthManager { - private static Map users = new HashMap<>(); + private static final Map users = new HashMap<>(); public static void loadAuthFile(File authFile) throws IOException { if (!authFile.exists()) authFile.createNewFile(); diff --git a/src/main/java/org/openautonomousconnection/protocol/side/web/managers/RuleManager.java b/src/main/java/org/openautonomousconnection/protocol/side/web/managers/RuleManager.java index d68857b..020cd82 100644 --- a/src/main/java/org/openautonomousconnection/protocol/side/web/managers/RuleManager.java +++ b/src/main/java/org/openautonomousconnection/protocol/side/web/managers/RuleManager.java @@ -15,7 +15,8 @@ public class RuleManager { public static void loadRules(File rulesFile) throws Exception { String json = new String(Files.readAllBytes(rulesFile.toPath())); - Map> map = new Gson().fromJson(json, new TypeToken>>(){}.getType()); + Map> map = new Gson().fromJson(json, new TypeToken>>() { + }.getType()); allow = map.getOrDefault("allow", List.of()); deny = map.getOrDefault("deny", List.of()); auth = map.getOrDefault("auth", List.of()); diff --git a/src/main/java/org/openautonomousconnection/protocol/side/web/managers/SessionManager.java b/src/main/java/org/openautonomousconnection/protocol/side/web/managers/SessionManager.java index a4eefef..e34c7ad 100644 --- a/src/main/java/org/openautonomousconnection/protocol/side/web/managers/SessionManager.java +++ b/src/main/java/org/openautonomousconnection/protocol/side/web/managers/SessionManager.java @@ -13,33 +13,6 @@ public class SessionManager { private static final Map sessions = new ConcurrentHashMap<>(); private static final SecureRandom secureRandom = new SecureRandom(); - private static class Session { - @Getter - String login; - String ip; - String userAgent; - long expiresAt; - - Session(String login, String ip, String userAgent) throws IOException { - this.login = login; - this.ip = ip; - this.userAgent = userAgent; - this.expiresAt = System.currentTimeMillis() + (long) Main.getConfigurationManager().getInt("sessionexpireminutes") * 60 * 1000;;; - } - - boolean isExpired() { - return System.currentTimeMillis() > expiresAt; - } - - boolean matches(String ip, String userAgent) { - return this.ip.equals(ip) && this.userAgent.equals(userAgent); - } - - void refresh() throws IOException { - this.expiresAt = System.currentTimeMillis() + (long) Main.getConfigurationManager().getInt("sessionexpireminutes") * 60 * 1000;;; - } - } - public static String create(String login, String ip, String userAgent) throws IOException { byte[] bytes = new byte[32]; secureRandom.nextBytes(bytes); @@ -76,4 +49,31 @@ public class SessionManager { long now = System.currentTimeMillis(); sessions.entrySet().removeIf(entry -> entry.getValue().isExpired()); } + + private static class Session { + @Getter + String login; + String ip; + String userAgent; + long expiresAt; + + Session(String login, String ip, String userAgent) throws IOException { + this.login = login; + this.ip = ip; + this.userAgent = userAgent; + this.expiresAt = System.currentTimeMillis() + Main.getConfigurationManager().getInt("sessionexpireminutes") * 60 * 1000; + } + + boolean isExpired() { + return System.currentTimeMillis() > expiresAt; + } + + boolean matches(String ip, String userAgent) { + return this.ip.equals(ip) && this.userAgent.equals(userAgent); + } + + void refresh() throws IOException { + this.expiresAt = System.currentTimeMillis() + Main.getConfigurationManager().getInt("sessionexpireminutes") * 60 * 1000; + } + } } diff --git a/src/main/java/org/openautonomousconnection/protocol/versions/ProtocolVersion.java b/src/main/java/org/openautonomousconnection/protocol/versions/ProtocolVersion.java index c4f8474..5234077 100644 --- a/src/main/java/org/openautonomousconnection/protocol/versions/ProtocolVersion.java +++ b/src/main/java/org/openautonomousconnection/protocol/versions/ProtocolVersion.java @@ -50,9 +50,7 @@ public enum ProtocolVersion implements Serializable { public enum Protocol implements Serializable { HTTP, HTTPS, - OAC - - ; + OAC; @Override public final String toString() { diff --git a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/beta/Domain.java b/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/beta/Domain.java index 75900b3..dd6ff84 100644 --- a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/beta/Domain.java +++ b/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/beta/Domain.java @@ -1,7 +1,7 @@ package org.openautonomousconnection.protocol.versions.v1_0_0.beta; -import org.openautonomousconnection.protocol.ProtocolBridge; import lombok.Getter; +import org.openautonomousconnection.protocol.ProtocolBridge; import java.io.Serializable; import java.util.Arrays; @@ -22,6 +22,7 @@ public class Domain implements Serializable { private String fragment; @Getter private String protocol; + public Domain(String fullDomain) { // Remove protocol String domainWithPath = fullDomain.contains("://") ? fullDomain.split("://", 2)[1] : fullDomain; diff --git a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/ClassicHandlerClient.java b/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/ClassicHandlerClient.java index 08885df..4bd9c92 100644 --- a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/ClassicHandlerClient.java +++ b/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/ClassicHandlerClient.java @@ -1,7 +1,6 @@ package org.openautonomousconnection.protocol.versions.v1_0_0.classic; import org.openautonomousconnection.protocol.ProtocolBridge; -import org.openautonomousconnection.protocol.packets.v1_0_0.classic.Classic_DomainPacket; import org.openautonomousconnection.protocol.packets.v1_0_0.classic.Classic_MessagePacket; import java.io.IOException; diff --git a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/Classic_ClientListener.java b/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/Classic_ClientListener.java index 98c077b..09c783a 100644 --- a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/Classic_ClientListener.java +++ b/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/Classic_ClientListener.java @@ -1,9 +1,9 @@ package org.openautonomousconnection.protocol.versions.v1_0_0.classic; -import org.openautonomousconnection.protocol.ProtocolBridge; -import org.openautonomousconnection.protocol.packets.v1_0_0.classic.Classic_PingPacket; import dev.unlegitdqrk.unlegitlibrary.event.EventListener; import dev.unlegitdqrk.unlegitlibrary.event.Listener; +import org.openautonomousconnection.protocol.ProtocolBridge; +import org.openautonomousconnection.protocol.packets.v1_0_0.classic.Classic_PingPacket; import java.io.BufferedReader; import java.io.IOException; diff --git a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/Classic_Domain.java b/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/Classic_Domain.java index ec689cc..f5491f6 100644 --- a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/Classic_Domain.java +++ b/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/Classic_Domain.java @@ -1,7 +1,7 @@ package org.openautonomousconnection.protocol.versions.v1_0_0.classic; -import org.openautonomousconnection.protocol.versions.v1_0_0.beta.Domain; import lombok.Getter; +import org.openautonomousconnection.protocol.versions.v1_0_0.beta.Domain; import java.io.Serializable;