From 50cd7b57ac7dda2b68f6e67acab4b3fc311fb0f7 Mon Sep 17 00:00:00 2001 From: Finn Date: Sun, 18 Jan 2026 21:48:43 +0100 Subject: [PATCH] Updated to latest UnlegitLibrary version and implemented UDP --- pom.xml | 4 +- .../protocol/ProtocolBridge.java | 86 +++--------- ...tocolSettings.java => ProtocolValues.java} | 13 +- .../protocol/listeners/ClientListener.java | 10 +- .../listeners/CustomServerListener.java | 25 ++-- .../packets/v1_0_0/beta/AuthPacket.java | 13 +- .../packets/v1_0_0/beta/INSQueryPacket.java | 9 +- .../v1_0_0/beta/INSResponsePacket.java | 9 +- .../v1_0_0/beta/UnsupportedClassicPacket.java | 88 ------------ .../v1_0_0/classic/Classic_DomainPacket.java | 87 ------------ .../v1_0_0/classic/Classic_MessagePacket.java | 65 --------- .../v1_0_0/classic/Classic_PingPacket.java | 93 ------------- .../protocol/side/client/ProtocolClient.java | 49 ++++--- .../side/client/ProtocolWebClient.java | 9 ++ .../protocol/side/ins/ProtocolINSServer.java | 72 ++++------ .../side/server/CustomConnectedClient.java | 8 +- .../side/server/ProtocolCustomServer.java | 32 +++-- .../protocol/side/web/ConnectedWebClient.java | 4 - .../protocol/side/web/ProtocolWebServer.java | 31 +++-- .../protocol/side/web/WebServerConfig.java | 51 ------- .../side/web/managers/SessionManager.java | 4 +- .../{utils => }/Classic_ProtocolVersion.java | 2 +- .../Classic_DomainPacketReceivedEvent.java | 51 ------- .../Classic_PingPacketReceivedEvent.java | 52 ------- .../handlers/ClassicHandlerClient.java | 47 ------- .../handlers/ClassicHandlerINSServer.java | 24 ---- .../handlers/ClassicHandlerWebServer.java | 16 --- .../handlers/builtin/ClientClassic.java | 74 ---------- .../classic/handlers/builtin/INSClassic.java | 93 ------------- .../classic/handlers/builtin/WebClassic.java | 56 -------- .../v1_0_0/classic/helper/ClassicHelper.java | 41 ------ .../v1_0_0/classic/helper/ParsedDomain.java | 4 - .../v1_0_0/classic/helper/TargetName.java | 7 - .../classic/objects/Classic_Domain.java | 69 --------- .../classic/objects/Classic_LocalDomain.java | 14 -- .../objects/Classic_RequestDomain.java | 17 --- .../v1_0_0/classic/site/Classic_SiteType.java | 44 ------ .../classic/site/Classic_WebsitesContent.java | 71 ---------- .../classic/utils/Classic_ClientListener.java | 131 ------------------ .../classic/utils/Classic_DomainUtils.java | 100 ------------- 40 files changed, 172 insertions(+), 1503 deletions(-) rename src/main/java/org/openautonomousconnection/protocol/{ProtocolSettings.java => ProtocolValues.java} (69%) delete mode 100644 src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/beta/UnsupportedClassicPacket.java delete mode 100644 src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/classic/Classic_DomainPacket.java delete mode 100644 src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/classic/Classic_MessagePacket.java delete mode 100644 src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/classic/Classic_PingPacket.java delete mode 100644 src/main/java/org/openautonomousconnection/protocol/side/web/WebServerConfig.java rename src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/{utils => }/Classic_ProtocolVersion.java (97%) delete mode 100644 src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/events/Classic_DomainPacketReceivedEvent.java delete mode 100644 src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/events/Classic_PingPacketReceivedEvent.java delete mode 100644 src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/handlers/ClassicHandlerClient.java delete mode 100644 src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/handlers/ClassicHandlerINSServer.java delete mode 100644 src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/handlers/ClassicHandlerWebServer.java delete mode 100644 src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/handlers/builtin/ClientClassic.java delete mode 100644 src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/handlers/builtin/INSClassic.java delete mode 100644 src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/handlers/builtin/WebClassic.java delete mode 100644 src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/helper/ClassicHelper.java delete mode 100644 src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/helper/ParsedDomain.java delete mode 100644 src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/helper/TargetName.java delete mode 100644 src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/objects/Classic_Domain.java delete mode 100644 src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/objects/Classic_LocalDomain.java delete mode 100644 src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/objects/Classic_RequestDomain.java delete mode 100644 src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/site/Classic_SiteType.java delete mode 100644 src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/site/Classic_WebsitesContent.java delete mode 100644 src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/utils/Classic_ClientListener.java delete mode 100644 src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/utils/Classic_DomainUtils.java diff --git a/pom.xml b/pom.xml index 8835387..d8df5f4 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ org.openautonomousconnection Protocol - 1.0.0-BETA.5.4 + 1.0.0-BETA.6.0 Open Autonomous Connection https://open-autonomous-connection.org/ @@ -119,7 +119,7 @@ dev.unlegitdqrk unlegitlibrary - 1.6.9 + 1.7.0 org.projectlombok diff --git a/src/main/java/org/openautonomousconnection/protocol/ProtocolBridge.java b/src/main/java/org/openautonomousconnection/protocol/ProtocolBridge.java index 5d6945b..0d0c081 100644 --- a/src/main/java/org/openautonomousconnection/protocol/ProtocolBridge.java +++ b/src/main/java/org/openautonomousconnection/protocol/ProtocolBridge.java @@ -10,24 +10,16 @@ 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.INSQueryPacket; import org.openautonomousconnection.protocol.packets.v1_0_0.beta.INSResponsePacket; -import org.openautonomousconnection.protocol.packets.v1_0_0.beta.UnsupportedClassicPacket; import org.openautonomousconnection.protocol.packets.v1_0_0.beta.web.WebRequestPacket; import org.openautonomousconnection.protocol.packets.v1_0_0.beta.web.WebResponsePacket; import org.openautonomousconnection.protocol.packets.v1_0_0.beta.web.stream.WebStreamChunkPacket; import org.openautonomousconnection.protocol.packets.v1_0_0.beta.web.stream.WebStreamEndPacket; import org.openautonomousconnection.protocol.packets.v1_0_0.beta.web.stream.WebStreamStartPacket; -import org.openautonomousconnection.protocol.packets.v1_0_0.classic.Classic_DomainPacket; -import org.openautonomousconnection.protocol.packets.v1_0_0.classic.Classic_MessagePacket; -import org.openautonomousconnection.protocol.packets.v1_0_0.classic.Classic_PingPacket; import org.openautonomousconnection.protocol.side.client.ProtocolClient; import org.openautonomousconnection.protocol.side.ins.ProtocolINSServer; import org.openautonomousconnection.protocol.side.server.ProtocolCustomServer; import org.openautonomousconnection.protocol.side.web.ProtocolWebServer; import org.openautonomousconnection.protocol.versions.ProtocolVersion; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.handlers.ClassicHandlerClient; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.handlers.ClassicHandlerINSServer; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.handlers.ClassicHandlerWebServer; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.utils.Classic_ClientListener; import java.io.File; import java.io.IOException; @@ -42,7 +34,7 @@ public final class ProtocolBridge { * The protocol settings for the current connection */ @Getter - private final ProtocolSettings protocolSettings; + private final ProtocolValues protocolValues; /** * The protocol version for the current connection @@ -69,27 +61,6 @@ public final class ProtocolBridge { @Getter private ProtocolCustomServer protocolServer; - /** - * The classic protocol handlers for INS server side - */ - @Getter - @Setter - private ClassicHandlerINSServer classicHandlerINSServer; - - /** - * The classic protocol handlers for web server side - */ - @Getter - @Setter - private ClassicHandlerWebServer classicHandlerWebServer; - - /** - * The classic protocol handlers for client side - */ - @Getter - @Setter - private ClassicHandlerClient classicHandlerClient; - /** * The proxy for client side */ @@ -101,16 +72,16 @@ public final class ProtocolBridge { * Initialize the ProtocolBridge instance for the client side * * @param protocolServer The ProtocolCustomServer instance - * @param protocolSettings The ProtocolSettings instance + * @param protocolValues The ProtocolSettings instance * @param protocolVersion The ProtocolVersion instance * @param logFolder The folder to store the log files * @throws Exception if an error occurs while initializing the ProtocolBridge */ @ProtocolInfo(protocolSide = ProtocolVersion.ProtocolSide.CLIENT) - public ProtocolBridge(ProtocolCustomServer protocolServer, ProtocolSettings protocolSettings, ProtocolVersion protocolVersion, File logFolder) throws Exception { + public ProtocolBridge(ProtocolCustomServer protocolServer, ProtocolValues protocolValues, ProtocolVersion protocolVersion, File logFolder) throws Exception { // Assign the parameters to the class fields this.protocolServer = protocolServer; - this.protocolSettings = protocolSettings; + this.protocolValues = protocolValues; this.protocolVersion = protocolVersion; // Initialize the logger and protocol version @@ -128,16 +99,16 @@ public final class ProtocolBridge { * Initialize the ProtocolBridge instance for the client side * * @param protocolClient The ProtocolClient instance - * @param protocolSettings The ProtocolSettings instance + * @param protocolValues The ProtocolSettings instance * @param protocolVersion The ProtocolVersion instance * @param logFolder The folder to store the log files * @throws Exception if an error occurs while initializing the ProtocolBridge */ @ProtocolInfo(protocolSide = ProtocolVersion.ProtocolSide.CLIENT) - public ProtocolBridge(ProtocolClient protocolClient, ProtocolSettings protocolSettings, ProtocolVersion protocolVersion, File logFolder) throws Exception { + public ProtocolBridge(ProtocolClient protocolClient, ProtocolValues protocolValues, ProtocolVersion protocolVersion, File logFolder) throws Exception { // Assign the parameters to the class fields this.protocolClient = protocolClient; - this.protocolSettings = protocolSettings; + this.protocolValues = protocolValues; this.protocolVersion = protocolVersion; // Initialize the logger and protocol version @@ -155,18 +126,8 @@ public final class ProtocolBridge { * Register the appropriate packets based on the current protocol version */ private void registerPackets() { - // Classic packets - Classic_DomainPacket cDomainPacket = new Classic_DomainPacket(); - Classic_MessagePacket cMessagePacket = new Classic_MessagePacket(); - Classic_PingPacket cPingPacket = new Classic_PingPacket(); - - if (isPacketSupported(cDomainPacket)) protocolSettings.packetHandler.registerPacket(cDomainPacket); - if (isPacketSupported(cMessagePacket)) protocolSettings.packetHandler.registerPacket(cMessagePacket); - if (isPacketSupported(cPingPacket)) protocolSettings.packetHandler.registerPacket(cPingPacket); - // 1.0.0-BETA packets AuthPacket v100bAuthPath = new AuthPacket(); - UnsupportedClassicPacket v100bUnsupportedClassicPacket = new UnsupportedClassicPacket(); INSQueryPacket v100BINSQueryPacket = new INSQueryPacket(); INSResponsePacket v100BINSResponsePacket = new INSResponsePacket(this); WebRequestPacket v100BWebRequestPacket = new WebRequestPacket(); @@ -175,21 +136,19 @@ public final class ProtocolBridge { WebStreamStartPacket v100BStreamStartPacket = new WebStreamStartPacket(); WebStreamEndPacket v100BStreamEndPacket = new WebStreamEndPacket(); - if (isPacketSupported(v100bAuthPath)) protocolSettings.packetHandler.registerPacket(v100bAuthPath); - if (isPacketSupported(v100bUnsupportedClassicPacket)) - protocolSettings.packetHandler.registerPacket(v100bUnsupportedClassicPacket); - if (isPacketSupported(v100BINSQueryPacket)) protocolSettings.packetHandler.registerPacket(v100BINSQueryPacket); + if (isPacketSupported(v100bAuthPath)) protocolValues.packetHandler.registerPacket(v100bAuthPath); + if (isPacketSupported(v100BINSQueryPacket)) protocolValues.packetHandler.registerPacket(v100BINSQueryPacket); if (isPacketSupported(v100BINSResponsePacket)) - protocolSettings.packetHandler.registerPacket(v100BINSResponsePacket); + protocolValues.packetHandler.registerPacket(v100BINSResponsePacket); if (isPacketSupported(v100BWebRequestPacket)) - protocolSettings.packetHandler.registerPacket(v100BWebRequestPacket); - if (isPacketSupported(v100BResponsePacket)) protocolSettings.packetHandler.registerPacket(v100BResponsePacket); + protocolValues.packetHandler.registerPacket(v100BWebRequestPacket); + if (isPacketSupported(v100BResponsePacket)) protocolValues.packetHandler.registerPacket(v100BResponsePacket); if (isPacketSupported(v100BStreamChunkPacket)) - protocolSettings.packetHandler.registerPacket(v100BStreamChunkPacket); + protocolValues.packetHandler.registerPacket(v100BStreamChunkPacket); if (isPacketSupported(v100BStreamStartPacket)) - protocolSettings.packetHandler.registerPacket(v100BStreamStartPacket); + protocolValues.packetHandler.registerPacket(v100BStreamStartPacket); if (isPacketSupported(v100BStreamEndPacket)) - protocolSettings.packetHandler.registerPacket(v100BStreamEndPacket); + protocolValues.packetHandler.registerPacket(v100BStreamEndPacket); } /** @@ -198,27 +157,20 @@ public final class ProtocolBridge { * @throws Exception if an error occurs while registering the listeners */ private void registerListeners() throws Exception { - // Classic listeners - if (isClassicSupported()) { - Classic_ClientListener classicListener = new Classic_ClientListener(); - classicListener.setProtocolBridge(this); - protocolSettings.eventManager.registerListener(classicListener.getClass()); - } else protocolSettings.eventManager.unregisterListener(Classic_ClientListener.class); - // Client Listeners if (isRunningAsClient()) { ClientListener clientListener = new ClientListener(); clientListener.setClient(protocolClient); - protocolSettings.eventManager.registerListener(clientListener.getClass()); - protocolSettings.eventManager.unregisterListener(CustomServerListener.class); + protocolValues.eventManager.registerListener(clientListener.getClass()); + protocolValues.eventManager.unregisterListener(CustomServerListener.class); } // Server Listeners if (isRunningAsServer()) { CustomServerListener serverListener = new CustomServerListener(); serverListener.setServer(protocolServer); - protocolSettings.eventManager.registerListener(serverListener.getClass()); - protocolSettings.eventManager.unregisterListener(ClientListener.class); + protocolValues.eventManager.registerListener(serverListener.getClass()); + protocolValues.eventManager.unregisterListener(ClientListener.class); } } diff --git a/src/main/java/org/openautonomousconnection/protocol/ProtocolSettings.java b/src/main/java/org/openautonomousconnection/protocol/ProtocolValues.java similarity index 69% rename from src/main/java/org/openautonomousconnection/protocol/ProtocolSettings.java rename to src/main/java/org/openautonomousconnection/protocol/ProtocolValues.java index d303642..23b6ae9 100644 --- a/src/main/java/org/openautonomousconnection/protocol/ProtocolSettings.java +++ b/src/main/java/org/openautonomousconnection/protocol/ProtocolValues.java @@ -7,18 +7,7 @@ import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider; /** * Settings for the protocol connection. */ -public final class ProtocolSettings extends DefaultMethodsOverrider { - - /** - * The host to connect to. - */ - public String host; - - /** - * The port to connect to. - */ - public int port; - +public final class ProtocolValues extends DefaultMethodsOverrider { /** * The protocol version to use. */ diff --git a/src/main/java/org/openautonomousconnection/protocol/listeners/ClientListener.java b/src/main/java/org/openautonomousconnection/protocol/listeners/ClientListener.java index 6ea2bd0..9522dee 100644 --- a/src/main/java/org/openautonomousconnection/protocol/listeners/ClientListener.java +++ b/src/main/java/org/openautonomousconnection/protocol/listeners/ClientListener.java @@ -2,8 +2,9 @@ package org.openautonomousconnection.protocol.listeners; 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 dev.unlegitdqrk.unlegitlibrary.network.system.client.events.state.connect.ClientConnectedEvent; +import dev.unlegitdqrk.unlegitlibrary.network.system.client.events.state.disconnect.ClientDisconnectedEvent; +import dev.unlegitdqrk.unlegitlibrary.network.system.utils.Transport; import lombok.Getter; import org.openautonomousconnection.protocol.annotations.ProtocolInfo; import org.openautonomousconnection.protocol.packets.v1_0_0.beta.AuthPacket; @@ -43,9 +44,10 @@ public final class ClientListener extends EventListener { @Listener public void onConnect(ClientConnectedEvent event) { try { - event.getClient().sendPacket(new AuthPacket(client.getProtocolBridge())); + if (event.getTransport() != Transport.TCP) return; + event.getClient().sendPacket(new AuthPacket(client.getProtocolBridge()), Transport.TCP); } catch (IOException | ClassNotFoundException exception) { - event.getClient().getLogger().exception("Failed to send auth packet", exception); + client.getProtocolBridge().getLogger().exception("Failed to send auth packet", exception); event.getClient().disconnect(); } } diff --git a/src/main/java/org/openautonomousconnection/protocol/listeners/CustomServerListener.java b/src/main/java/org/openautonomousconnection/protocol/listeners/CustomServerListener.java index a7b9fec..90220ce 100644 --- a/src/main/java/org/openautonomousconnection/protocol/listeners/CustomServerListener.java +++ b/src/main/java/org/openautonomousconnection/protocol/listeners/CustomServerListener.java @@ -3,9 +3,11 @@ package org.openautonomousconnection.protocol.listeners; import dev.unlegitdqrk.unlegitlibrary.event.EventListener; import dev.unlegitdqrk.unlegitlibrary.event.Listener; import dev.unlegitdqrk.unlegitlibrary.network.system.server.ConnectionHandler; -import dev.unlegitdqrk.unlegitlibrary.network.system.server.events.ConnectionHandlerConnectedEvent; -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.packets.receive.S_PacketReceivedEvent; +import dev.unlegitdqrk.unlegitlibrary.network.system.server.events.state.connect.ConnectionHandlerConnectedEvent; +import dev.unlegitdqrk.unlegitlibrary.network.system.server.events.state.disconnect.ConnectionHandlerDisconnectedEvent; +import dev.unlegitdqrk.unlegitlibrary.network.system.server.events.state.disconnect.ConnectionHandlerFullyDisconnectedEvent; +import dev.unlegitdqrk.unlegitlibrary.network.system.utils.Transport; import lombok.Getter; import org.openautonomousconnection.protocol.annotations.ProtocolInfo; import org.openautonomousconnection.protocol.packets.v1_0_0.beta.INSQueryPacket; @@ -72,13 +74,8 @@ public final class CustomServerListener extends EventListener { * @param event The connection handler disconnected event. */ @Listener - public void onDisconnect(ConnectionHandlerDisconnectedEvent event) { - for (CustomConnectedClient client : server.getClients()) { - if (client.getPipelineConnection().getClientID() != -1) continue; - server.getProtocolBridge().getProtocolSettings().eventManager.executeEvent(new S_CustomClientDisconnectedEvent(client)); - } - - server.getClients().removeIf(client -> client.getPipelineConnection().getClientID() == -1); + public void onDisconnect(ConnectionHandlerFullyDisconnectedEvent event) { + server.getClients().removeIf(client -> client.getConnection().getClientId().equals(client.getConnection().getClientId())); } @Listener @@ -86,7 +83,7 @@ public final class CustomServerListener extends EventListener { if (!server.getProtocolBridge().isRunningAsWebServer()) return; if (!(event.getPacket() instanceof WebRequestPacket packet)) return; - ((ProtocolWebServer) server).onWebRequest(server.getClientByID(event.getConnectionHandler().getClientID()), packet); + ((ProtocolWebServer) server).onWebRequest(server.getClientByID(event.getConnectionHandler().getClientId()), packet); } /** @@ -119,11 +116,11 @@ public final class CustomServerListener extends EventListener { if (q.getSub() == null && q.getTLN().equalsIgnoreCase("oac")) { if (q.getName().equalsIgnoreCase("info")) { // Return INS server info site - String[] hostPort = insServer.getINSInfoSite().split(":"); + String[] hostPort = insServer.getInsInfoSite().split(":"); resolved = List.of(new INSRecord(q.getType(), hostPort[0], -1, -1, Integer.parseInt(hostPort[1]), 0)); } else if (q.getName().equalsIgnoreCase("register")) { // Return INS frontend site - String[] hostPort = insServer.getINSFrontendSite().split(":"); + String[] hostPort = insServer.getInsFrontendSite().split(":"); resolved = List.of(new INSRecord(q.getType(), hostPort[0], -1, -1, Integer.parseInt(hostPort[1]), 0)); } else { // Not a special name → use normal resolving @@ -146,7 +143,7 @@ public final class CustomServerListener extends EventListener { INSResponsePacket response = new INSResponsePacket(status, resolved, q.getClientId(), insServer.getProtocolBridge()); try { - event.getConnectionHandler().sendPacket(response); + event.getConnectionHandler().sendPacket(response, Transport.TCP); insServer.onResponseSent(q.getTLN(), q.getName(), q.getSub(), q.getType(), resolved); } catch (IOException | ClassNotFoundException e) { insServer.onResponseSentFailed(q.getTLN(), q.getName(), q.getSub(), q.getType(), resolved, e); 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 1efff79..e5705f6 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 @@ -3,6 +3,7 @@ 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.system.utils.ClientID; import dev.unlegitdqrk.unlegitlibrary.network.utils.NetworkUtils; import org.openautonomousconnection.protocol.ProtocolBridge; import org.openautonomousconnection.protocol.packets.OACPacket; @@ -93,7 +94,7 @@ public final class AuthPacket extends OACPacket { objectOutputStream.writeUTF(caPem); objectOutputStream.writeUTF(caSrl); } else if (protocolBridge.isRunningAsClient()) { - objectOutputStream.writeInt(protocolBridge.getProtocolClient().getClientINSConnection().getClientID()); + objectOutputStream.writeObject(protocolBridge.getProtocolClient().getClientINSConnection().getClientId()); objectOutputStream.writeObject(protocolBridge.getProtocolVersion()); } } @@ -110,9 +111,9 @@ public final class AuthPacket extends OACPacket { @Override public void onRead(PacketHandler packetHandler, ObjectInputStream objectInputStream) throws IOException, ClassNotFoundException { if (protocolBridge.isRunningAsServer()) { - int clientID = objectInputStream.readInt(); + ClientID clientID = (ClientID) objectInputStream.readObject(); ProtocolVersion clientVersion = (ProtocolVersion) objectInputStream.readObject(); - ConnectionHandler connectionHandler = protocolBridge.getProtocolServer().getPipelineServer().getConnectionHandlerByID(clientID); + ConnectionHandler connectionHandler = protocolBridge.getProtocolServer().getNetwork().getConnectionHandlerByClientId(clientID); if (!protocolBridge.isVersionSupported(clientVersion)) { setResponseCode(INSResponseStatus.RESPONSE_AUTH_FAILED); @@ -123,7 +124,7 @@ public final class AuthPacket extends OACPacket { CustomConnectedClient client = protocolBridge.getProtocolServer().getClientByID(clientID); client.setClientVersion(clientVersion); - protocolBridge.getProtocolSettings().eventManager.executeEvent(new S_CustomClientConnectedEvent(client)); + protocolBridge.getProtocolValues().eventManager.executeEvent(new S_CustomClientConnectedEvent(client)); } else if (protocolBridge.isRunningAsClient()) { ProtocolVersion serverVersion = (ProtocolVersion) objectInputStream.readObject(); @@ -163,10 +164,10 @@ public final class AuthPacket extends OACPacket { } protocolBridge.getProtocolClient().setInsServerVersion(serverVersion); - protocolBridge.getProtocolSettings().eventManager.executeEvent(new ConnectedToProtocolINSServerEvent(protocolBridge.getProtocolClient())); + protocolBridge.getProtocolValues().eventManager.executeEvent(new ConnectedToProtocolINSServerEvent(protocolBridge.getProtocolClient())); } catch (Exception ignored) { protocolBridge.getProtocolClient().setServerVersion(serverVersion); - protocolBridge.getProtocolSettings().eventManager.executeEvent(new ConnectedToProtocolServerEvent(protocolBridge.getProtocolClient())); + protocolBridge.getProtocolValues().eventManager.executeEvent(new ConnectedToProtocolServerEvent(protocolBridge.getProtocolClient())); } } } diff --git a/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/beta/INSQueryPacket.java b/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/beta/INSQueryPacket.java index 4119438..62015e0 100644 --- a/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/beta/INSQueryPacket.java +++ b/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/beta/INSQueryPacket.java @@ -1,6 +1,7 @@ package org.openautonomousconnection.protocol.packets.v1_0_0.beta; import dev.unlegitdqrk.unlegitlibrary.network.system.packets.PacketHandler; +import dev.unlegitdqrk.unlegitlibrary.network.system.utils.ClientID; import lombok.Getter; import org.openautonomousconnection.protocol.packets.OACPacket; import org.openautonomousconnection.protocol.versions.ProtocolVersion; @@ -33,7 +34,7 @@ public final class INSQueryPacket extends OACPacket { @Getter private INSRecordType type; @Getter - private int clientId; + private ClientID clientId; /** * Creates a new INS query packet with all required parameters. @@ -44,7 +45,7 @@ public final class INSQueryPacket extends OACPacket { * @param type Record type requested. * @param clientId Sender client ID for routing. */ - public INSQueryPacket(String tln, String name, String sub, INSRecordType type, int clientId) { + public INSQueryPacket(String tln, String name, String sub, INSRecordType type, ClientID clientId) { super(5, ProtocolVersion.PV_1_0_0_BETA); this.TLN = tln; this.name = name; @@ -72,7 +73,7 @@ public final class INSQueryPacket extends OACPacket { if (sub != null) out.writeUTF(sub); out.writeObject(type); - out.writeInt(clientId); + out.writeObject(clientId); } /** @@ -87,6 +88,6 @@ public final class INSQueryPacket extends OACPacket { sub = hasSub ? in.readUTF() : null; type = (INSRecordType) in.readObject(); - clientId = in.readInt(); + clientId = (ClientID) in.readObject(); } } diff --git a/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/beta/INSResponsePacket.java b/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/beta/INSResponsePacket.java index 8097c62..aae57ce 100644 --- a/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/beta/INSResponsePacket.java +++ b/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/beta/INSResponsePacket.java @@ -1,6 +1,7 @@ package org.openautonomousconnection.protocol.packets.v1_0_0.beta; import dev.unlegitdqrk.unlegitlibrary.network.system.packets.PacketHandler; +import dev.unlegitdqrk.unlegitlibrary.network.system.utils.ClientID; import lombok.Getter; import org.openautonomousconnection.protocol.ProtocolBridge; import org.openautonomousconnection.protocol.packets.OACPacket; @@ -35,7 +36,7 @@ public final class INSResponsePacket extends OACPacket { @Getter private List records; @Getter - private int clientId; + private ClientID clientId; /** * Creates a populated response packet. @@ -45,7 +46,7 @@ public final class INSResponsePacket extends OACPacket { * @param clientId ID of requesting client. * @param bridge Protocol runtime context. */ - public INSResponsePacket(INSResponseStatus status, List records, int clientId, ProtocolBridge bridge) { + public INSResponsePacket(INSResponseStatus status, List records, ClientID clientId, ProtocolBridge bridge) { super(6, ProtocolVersion.PV_1_0_0_BETA); this.status = status; this.records = records; @@ -75,7 +76,7 @@ public final class INSResponsePacket extends OACPacket { out.writeObject(rec); } - out.writeInt(clientId); + out.writeObject(clientId); } /** @@ -92,7 +93,7 @@ public final class INSResponsePacket extends OACPacket { records.add((INSRecord) in.readObject()); } - clientId = in.readInt(); + clientId = (ClientID) in.readObject(); } /** 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 deleted file mode 100644 index 632e09b..0000000 --- a/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/beta/UnsupportedClassicPacket.java +++ /dev/null @@ -1,88 +0,0 @@ -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.INSResponseStatus; - -import java.io.IOException; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; - -/** - * Internal compatibility packet used when a classic-protocol packet is received - * but not supported by the current protocol version. - *

- * Instead of rejecting the packet entirely, the content and class name are forwarded - * to the appropriate compatibility handler: - *

    - *
  • {@link org.openautonomousconnection.protocol.versions.v1_0_0.classic.handlers.ClassicHandlerINSServer}
  • - *
  • {@link org.openautonomousconnection.protocol.versions.v1_0_0.classic.handlers.ClassicHandlerClient}
  • - *
  • {@link org.openautonomousconnection.protocol.versions.v1_0_0.classic.handlers.ClassicHandlerWebServer}
  • - *
- */ -public final class UnsupportedClassicPacket extends OACPacket { - private Class unsupportedClassicPacket; - private Object[] content; - private ProtocolBridge protocolBridge; - - /** - * Constructs a packet describing the unsupported classic packet and its content. - * - * @param unsupportedClassicPacket The packet class that was not understood. - * @param content Serialized field values. - * @param protocolBridge The protocol context. - */ - public UnsupportedClassicPacket(Class unsupportedClassicPacket, Object[] content, ProtocolBridge protocolBridge) { - this(); - this.unsupportedClassicPacket = unsupportedClassicPacket; - this.content = content; - this.protocolBridge = protocolBridge; - } - - /** - * Registration Constructor - */ - public UnsupportedClassicPacket() { - super(7, ProtocolVersion.PV_1_0_0_BETA); - } - - /** - * Writes the class name and serialized object fields to the stream. - */ - @Override - public void onWrite(PacketHandler packetHandler, ObjectOutputStream objectOutputStream) throws IOException, ClassNotFoundException { - if (protocolBridge.isRunningAsClient()) - objectOutputStream.writeInt(protocolBridge.getProtocolClient().getClientINSConnection().getClientID()); - - objectOutputStream.writeUTF(unsupportedClassicPacket.getName()); - objectOutputStream.writeInt(content.length); - for (Object o : content) objectOutputStream.writeObject(o); - setResponseCode(INSResponseStatus.RESPONSE_NOT_REQUIRED); - } - - /** - * Reads the unsupported packet data and forwards it to the appropriate compatibility handler. - */ - @Override - public void onRead(PacketHandler packetHandler, ObjectInputStream objectInputStream) throws IOException, ClassNotFoundException { - int clientID = 0; - if (protocolBridge.isRunningAsINSServer()) clientID = objectInputStream.readInt(); - String className = objectInputStream.readUTF(); - int size = objectInputStream.readInt(); - content = new Object[size]; - - for (int i = 0; i < size; i++) { - content[i] = objectInputStream.readObject(); - } - - if (protocolBridge.isRunningAsINSServer()) - protocolBridge.getClassicHandlerINSServer().unsupportedClassicPacket(className, content, protocolBridge.getProtocolServer().getClientByID(clientID)); - else if (protocolBridge.isRunningAsClient()) - protocolBridge.getClassicHandlerClient().unsupportedClassicPacket(className, content); - else if (protocolBridge.isRunningAsWebServer()) - protocolBridge.getClassicHandlerWebServer().unsupportedClassicPacket(className, content, protocolBridge.getProtocolServer().getClientByID(clientID)); - - } -} 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 deleted file mode 100644 index de0dde4..0000000 --- a/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/classic/Classic_DomainPacket.java +++ /dev/null @@ -1,87 +0,0 @@ -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; -import org.openautonomousconnection.protocol.versions.ProtocolVersion; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.events.Classic_DomainPacketReceivedEvent; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.objects.Classic_Domain; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.objects.Classic_RequestDomain; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.utils.Classic_ProtocolVersion; - -import java.io.IOException; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; -import java.sql.SQLException; - -public final class Classic_DomainPacket extends OACPacket { - private Classic_RequestDomain requestDomain; - private Classic_Domain domain; - private int clientID; - private ProtocolBridge bridge; - - public Classic_DomainPacket(int toClient, Classic_RequestDomain requestDomain, Classic_Domain domain, ProtocolBridge protocolBridge) { - this(); - this.clientID = toClient; - this.bridge = protocolBridge; - - this.requestDomain = requestDomain; - this.domain = domain; - } - - // Registration constructor - public Classic_DomainPacket() { - super(2, ProtocolVersion.PV_1_0_0_CLASSIC); - } - - @Override - public void onWrite(PacketHandler packetHandler, ObjectOutputStream objectOutputStream) throws IOException, ClassNotFoundException { - if (bridge.isRunningAsINSServer()) { - objectOutputStream.writeInt(clientID); - objectOutputStream.writeObject(requestDomain); - objectOutputStream.writeObject(domain); - } else if (bridge.isRunningAsClient()) { - clientID = bridge.getProtocolClient().getClientINSConnection().getClientID(); - objectOutputStream.writeInt(clientID); - objectOutputStream.writeObject(requestDomain); - } - - objectOutputStream.writeObject(Classic_ProtocolVersion.PV_1_0_0); - } - - @Override - public void onRead(PacketHandler packetHandler, ObjectInputStream objectInputStream) throws IOException, ClassNotFoundException { - if (bridge.isRunningAsINSServer()) { - clientID = objectInputStream.readInt(); - requestDomain = (Classic_RequestDomain) objectInputStream.readObject(); - Classic_ProtocolVersion protocolVersion = (Classic_ProtocolVersion) objectInputStream.readObject(); - - try { - domain = bridge.getClassicHandlerINSServer().getDomain(requestDomain); - } catch (SQLException exception) { - exception.printStackTrace(); - } - - bridge.getProtocolServer().getPipelineServer().getEventManager().executeEvent(new Classic_DomainPacketReceivedEvent(protocolVersion, domain, requestDomain, clientID)); - - if (bridge.getProtocolServer().getClientByID(clientID).supportClientClassic()) - bridge.getProtocolServer().getPipelineServer().getConnectionHandlerByID(clientID).sendPacket(new Classic_DomainPacket(clientID, requestDomain, domain, bridge)); - else - bridge.getProtocolServer().getPipelineServer().getConnectionHandlerByID(clientID).sendPacket(new UnsupportedClassicPacket(Classic_PingPacket.class, new Object[]{clientID, requestDomain, domain}, bridge)); - } else if (bridge.isRunningAsClient()) { - clientID = objectInputStream.readInt(); - requestDomain = (Classic_RequestDomain) objectInputStream.readObject(); - domain = (Classic_Domain) objectInputStream.readObject(); - Classic_ProtocolVersion protocolVersion = (Classic_ProtocolVersion) objectInputStream.readObject(); - - bridge.getProtocolClient().getClientINSConnection().getEventManager().executeEvent(new Classic_DomainPacketReceivedEvent(protocolVersion, domain, requestDomain, clientID)); - } else if (bridge.isRunningAsWebServer()) { - clientID = objectInputStream.readInt(); - requestDomain = (Classic_RequestDomain) objectInputStream.readObject(); - Classic_ProtocolVersion protocolVersion = (Classic_ProtocolVersion) objectInputStream.readObject(); - - bridge.getProtocolServer().getPipelineServer().getConnectionHandlerByID(clientID).sendPacket(new UnsupportedClassicPacket(Classic_PingPacket.class, new Object[]{clientID, requestDomain, domain}, bridge)); - } - } -} 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 deleted file mode 100644 index 89e6b02..0000000 --- a/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/classic/Classic_MessagePacket.java +++ /dev/null @@ -1,65 +0,0 @@ -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.utils.Classic_ProtocolVersion; - -import java.io.IOException; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; - -public final class Classic_MessagePacket extends OACPacket { - private String message; - private int clientID; - private ProtocolBridge bridge; - - // Constructor with message and client id - public Classic_MessagePacket(String message, int clientID, ProtocolBridge bridge) { - this(); - this.message = message; - this.clientID = clientID; - this.bridge = bridge; - } - - public Classic_MessagePacket() { - super(3, ProtocolVersion.PV_1_0_0_CLASSIC); - } - - @Override - public void onWrite(PacketHandler packetHandler, ObjectOutputStream objectOutputStream) throws IOException, ClassNotFoundException { - if (bridge.isRunningAsINSServer() || bridge.isRunningAsWebServer()) - objectOutputStream.writeInt(clientID); - else if (bridge.isRunningAsClient()) { - clientID = bridge.getProtocolClient().getClientINSConnection().getClientID(); - objectOutputStream.writeInt(clientID); - } - - objectOutputStream.writeUTF(message); - objectOutputStream.writeObject(Classic_ProtocolVersion.PV_1_0_0); - } - - @Override - public void onRead(PacketHandler packetHandler, ObjectInputStream objectInputStream) throws IOException, ClassNotFoundException { - if (bridge.isRunningAsINSServer()) { - clientID = objectInputStream.readInt(); - String message = objectInputStream.readUTF(); - Classic_ProtocolVersion protocolVersion = (Classic_ProtocolVersion) objectInputStream.readObject(); - - bridge.getClassicHandlerINSServer().handleMessage(bridge.getProtocolServer().getClientByID(clientID), message, protocolVersion); - } else if (bridge.isRunningAsClient()) { - clientID = objectInputStream.readInt(); - String message = objectInputStream.readUTF(); - Classic_ProtocolVersion protocolVersion = (Classic_ProtocolVersion) objectInputStream.readObject(); - - bridge.getClassicHandlerClient().handleMessage(message, protocolVersion); - } else if (bridge.isRunningAsWebServer()) { - clientID = objectInputStream.readInt(); - String message = objectInputStream.readUTF(); - Classic_ProtocolVersion protocolVersion = (Classic_ProtocolVersion) objectInputStream.readObject(); - - bridge.getClassicHandlerWebServer().handleMessage(bridge.getProtocolServer().getClientByID(clientID), message, protocolVersion); - } - } -} 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 deleted file mode 100644 index 68b5891..0000000 --- a/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/classic/Classic_PingPacket.java +++ /dev/null @@ -1,93 +0,0 @@ -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; -import org.openautonomousconnection.protocol.versions.ProtocolVersion; -import org.openautonomousconnection.protocol.versions.v1_0_0.beta.INSResponseStatus; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.events.Classic_PingPacketReceivedEvent; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.objects.Classic_Domain; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.objects.Classic_RequestDomain; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.utils.Classic_ProtocolVersion; - -import java.io.IOException; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; -import java.sql.SQLException; - -public final class Classic_PingPacket extends OACPacket { - private Classic_RequestDomain requestDomain; - private Classic_Domain domain; - private int clientID; - private boolean reachable; - private Classic_ProtocolVersion protocolVersion; - private ProtocolBridge bridge; - - public Classic_PingPacket(Classic_RequestDomain requestDomain, Classic_Domain domain, boolean reachable, ProtocolBridge bridge) { - this(); - this.bridge = bridge; - - this.requestDomain = requestDomain; - this.domain = domain; - this.reachable = reachable; - this.protocolVersion = Classic_ProtocolVersion.PV_1_0_0; - } - - public Classic_PingPacket() { - super(1, ProtocolVersion.PV_1_0_0_CLASSIC); - } - - @Override - public void onWrite(PacketHandler packetHandler, ObjectOutputStream objectOutputStream) throws IOException, ClassNotFoundException { - if (bridge.isRunningAsINSServer()) { - objectOutputStream.writeInt(clientID); - objectOutputStream.writeObject(requestDomain); - objectOutputStream.writeObject(domain); - objectOutputStream.writeBoolean(reachable); - } else if (bridge.isRunningAsClient()) { - clientID = bridge.getProtocolClient().getClientINSConnection().getClientID(); - objectOutputStream.writeInt(clientID); - objectOutputStream.writeObject(requestDomain); - } - - objectOutputStream.writeObject(protocolVersion); - } - - @Override - public void onRead(PacketHandler packetHandler, ObjectInputStream objectInputStream) throws IOException, ClassNotFoundException { - if (bridge.isRunningAsINSServer()) { - clientID = objectInputStream.readInt(); - requestDomain = (Classic_RequestDomain) objectInputStream.readObject(); - protocolVersion = (Classic_ProtocolVersion) objectInputStream.readObject(); - - try { - domain = bridge.getClassicHandlerINSServer().ping(requestDomain); - } catch (SQLException exception) { - exception.printStackTrace(); - } - - reachable = domain != null; - bridge.getProtocolServer().getPipelineServer().getEventManager().executeEvent(new Classic_PingPacketReceivedEvent(protocolVersion, domain, requestDomain, reachable, clientID)); - if (bridge.getProtocolServer().getClientByID(clientID).supportClientClassic()) - bridge.getProtocolServer().getPipelineServer().getConnectionHandlerByID(clientID).sendPacket(new Classic_PingPacket(requestDomain, domain, reachable, bridge)); - else - bridge.getProtocolServer().getPipelineServer().getConnectionHandlerByID(clientID).sendPacket(new UnsupportedClassicPacket(Classic_PingPacket.class, new Object[]{requestDomain, domain, reachable}, bridge)); - } else if (bridge.isRunningAsClient()) { - clientID = objectInputStream.readInt(); - requestDomain = (Classic_RequestDomain) objectInputStream.readObject(); - domain = (Classic_Domain) objectInputStream.readObject(); - boolean reachable = objectInputStream.readBoolean(); - Classic_ProtocolVersion protocolVersion = (Classic_ProtocolVersion) objectInputStream.readObject(); - - bridge.getClassicHandlerClient().validationCompleted(domain, reachable ? INSResponseStatus.OK : INSResponseStatus.NOT_FOUND); - bridge.getProtocolClient().getClientINSConnection().getEventManager().executeEvent(new Classic_PingPacketReceivedEvent(protocolVersion, domain, requestDomain, reachable, clientID)); - } else if (bridge.isRunningAsWebServer()) { - clientID = objectInputStream.readInt(); - requestDomain = (Classic_RequestDomain) objectInputStream.readObject(); - protocolVersion = (Classic_ProtocolVersion) objectInputStream.readObject(); - - bridge.getProtocolServer().getPipelineServer().getConnectionHandlerByID(clientID).sendPacket(new UnsupportedClassicPacket(Classic_PingPacket.class, new Object[]{requestDomain}, bridge)); - } - } -} 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 1e0567c..112dafb 100644 --- a/src/main/java/org/openautonomousconnection/protocol/side/client/ProtocolClient.java +++ b/src/main/java/org/openautonomousconnection/protocol/side/client/ProtocolClient.java @@ -1,7 +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.system.client.events.state.disconnect.ClientDisconnectedEvent; +import dev.unlegitdqrk.unlegitlibrary.network.system.client.events.state.disconnect.ClientFullyDisconnectedEvent; +import dev.unlegitdqrk.unlegitlibrary.network.system.utils.Transport; +import dev.unlegitdqrk.unlegitlibrary.network.system.utils.TransportPolicy; import dev.unlegitdqrk.unlegitlibrary.network.utils.NetworkUtils; import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider; import lombok.Getter; @@ -52,12 +55,20 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider { */ private ProtocolVersion serverVersion = null; + @Getter + private String insHost; + + @Getter + private int insPort; + /** * Initializes the ProtocolClient, setting up certificate folders and the INS client connection. */ - public ProtocolClient() { + public ProtocolClient(String insHost, int insPort) { // Initialize and verify certificate folders and files folderStructure = new ClientCertificateFolderStructure(); + this.insHost = insHost; + this.insPort = insPort; } /** @@ -65,8 +76,8 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider { */ private void createNetworkClient() { clientToINS = new NetworkClient.ClientBuilder().setLogger(protocolBridge.getLogger()).setProxy(protocolBridge.getProxy()). - setHost(protocolBridge.getProtocolSettings().host).setPort(protocolBridge.getProtocolSettings().port). - setPacketHandler(protocolBridge.getProtocolSettings().packetHandler).setEventManager(protocolBridge.getProtocolSettings().eventManager). + setHost(insHost).setTcpPort(insPort).setUdpPort(0). + setPacketHandler(protocolBridge.getProtocolValues().packetHandler).setEventManager(protocolBridge.getProtocolValues().eventManager). setRootCAFolder(folderStructure.publicCAFolder).setClientCertificatesFolder(folderStructure.publicClientFolder, folderStructure.privateClientFolder). build(); } @@ -75,16 +86,18 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider { * Connects to a Server. * * @param host Server host - * @param port Server port + * @param tcpPort TCP port + * @param udpPort UDP port */ - public final void connectToServer(String host, int port) { + public final void connectToServer(String host, int tcpPort, int udpPort) { if (!protocolBridge.isRunningAsClient()) throw new IllegalStateException("Not running as client"); - if (clientToServer != null && clientToServer.isConnected()) + if (clientToServer != null && + (clientToServer.isFullyConnected() || clientToServer.isTcpConnected() || clientToServer.isUdpConnected())) return; - createServerClient(host, port); + createServerClient(host, tcpPort, udpPort); } /** @@ -100,16 +113,18 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider { * Initialize connection to Server * * @param host Server host - * @param port Server port + * @param tcpPort Server port + * @param udpPort Server port */ - private final void createServerClient(String host, int port) { + private final void createServerClient(String host, int tcpPort, int udpPort) { clientToServer = new NetworkClient.ClientBuilder() .setLogger(protocolBridge.getLogger()) .setProxy(protocolBridge.getProxy()) .setHost(host) - .setPort(port) - .setPacketHandler(protocolBridge.getProtocolSettings().packetHandler) - .setEventManager(protocolBridge.getProtocolSettings().eventManager) + .setTcpPort(tcpPort) + .setUdpPort(udpPort) + .setPacketHandler(protocolBridge.getProtocolValues().packetHandler) + .setEventManager(protocolBridge.getProtocolValues().eventManager) .setRootCAFolder(folderStructure.publicCAFolder) .setClientCertificatesFolder( folderStructure.publicClientFolder, @@ -190,7 +205,7 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider { * @param serverVersion the ProtocolVersion to set for the server. */ public final void setServerVersion(ProtocolVersion serverVersion) { - if (serverVersion == null) this.serverVersion = insServerVersion; + if (serverVersion == null) this.serverVersion = serverVersion; } /** @@ -218,12 +233,12 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider { */ public final void onDisconnect(ClientDisconnectedEvent event) { // Reset server version on INS disconnect - if (!clientToINS.isConnected()) { + if (!clientToINS.isTcpConnected()) { insServerVersion = null; disconnectFromServer(); } - if (!clientToServer.isConnected()) serverVersion = null; + if (!clientToServer.isFullyConnected()) serverVersion = null; } /** @@ -486,7 +501,7 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider { public final void sendINSQuery(String tln, String name, String sub, INSRecordType type) throws IOException, ClassNotFoundException { if (!protocolBridge.isRunningAsClient()) return; - getClientINSConnection().sendPacket(new INSQueryPacket(tln, name, sub, type, getClientINSConnection().getClientID())); + getClientINSConnection().sendPacket(new INSQueryPacket(tln, name, sub, type, getClientINSConnection().getClientId()), Transport.TCP); onQuerySent(tln, name, sub, type); } diff --git a/src/main/java/org/openautonomousconnection/protocol/side/client/ProtocolWebClient.java b/src/main/java/org/openautonomousconnection/protocol/side/client/ProtocolWebClient.java index 3654853..4848534 100644 --- a/src/main/java/org/openautonomousconnection/protocol/side/client/ProtocolWebClient.java +++ b/src/main/java/org/openautonomousconnection/protocol/side/client/ProtocolWebClient.java @@ -8,4 +8,13 @@ import org.openautonomousconnection.protocol.versions.ProtocolVersion; */ @ProtocolInfo(protocolSide = ProtocolVersion.ProtocolSide.CLIENT) public class ProtocolWebClient extends ProtocolClient { + /** + * Initializes the ProtocolClient, setting up certificate folders and the INS client connection. + * + * @param insHost + * @param insPort + */ + public ProtocolWebClient(String insHost, int insPort) { + super(insHost, insPort); + } } diff --git a/src/main/java/org/openautonomousconnection/protocol/side/ins/ProtocolINSServer.java b/src/main/java/org/openautonomousconnection/protocol/side/ins/ProtocolINSServer.java index a3f5ff6..a5311a4 100644 --- a/src/main/java/org/openautonomousconnection/protocol/side/ins/ProtocolINSServer.java +++ b/src/main/java/org/openautonomousconnection/protocol/side/ins/ProtocolINSServer.java @@ -1,6 +1,8 @@ package org.openautonomousconnection.protocol.side.ins; import dev.unlegitdqrk.unlegitlibrary.file.ConfigurationManager; +import dev.unlegitdqrk.unlegitlibrary.network.system.utils.TransportPolicy; +import lombok.Getter; import org.openautonomousconnection.protocol.annotations.ProtocolInfo; import org.openautonomousconnection.protocol.side.server.ProtocolCustomServer; import org.openautonomousconnection.protocol.versions.ProtocolVersion; @@ -17,49 +19,36 @@ import java.util.List; */ @ProtocolInfo(protocolSide = ProtocolVersion.ProtocolSide.INS) public abstract class ProtocolINSServer extends ProtocolCustomServer { - /** - * The configuration manager for handling server configurations. - */ - private final ConfigurationManager configurationManager; - - /** - * Constructs a ProtocolINSServer with the specified configuration file. - * - * @param configFile The configuration file for the INS server. - * @throws IOException If an I/O error occurs. - * @throws CertificateException If a certificate error occurs. - */ - public ProtocolINSServer(File configFile) throws Exception { - super("ca_ins_", "cert_ins_"); - - // Ensure the configuration file exists - if (!configFile.exists()) configFile.createNewFile(); - - // Load the configuration properties - configurationManager = new ConfigurationManager(configFile); - configurationManager.loadProperties(); - - // Set default values for configuration properties if not already set - if (!configurationManager.isSet("server.site.info")) { - configurationManager.set("server.site.info", "INS-SERVER INFO SITE IP:PORT"); - configurationManager.saveProperties(); - } - - if (!configurationManager.isSet("server.site.frontend")) { - configurationManager.set("server.site.frontend", "SERVER IP TO INS-FRONTEND:PORT"); - configurationManager.saveProperties(); - } - - setCustomClient(ConnectedProtocolClient.class); - } /** * Gets the INS information site URL from the configuration. * * @return The INS information site URL. */ - public final String getINSInfoSite() { - return configurationManager.getString("server.site.info"); + @Getter + private final String insInfoSite; + + /** + * Gets the INS registration site URL from the configuration. + * + * @return The INS registration site URL. + */ + @Getter + private String insFrontendSite; + + /** + * Constructs a ProtocolINSServer with the specified configuration file. + * + * @param insInfoSize The INS-InfoSize (IP:PORT) + * @param insFrontendSite The INS-InfoSize (IP:PORT) + * @throws IOException If an I/O error occurs. + * @throws CertificateException If a certificate error occurs. + */ + public ProtocolINSServer(String insInfoSize, String insFrontendSite, int port) throws Exception { + super("ins", "ins", port, 0); + this.insInfoSite = insInfoSize; + this.insFrontendSite = insFrontendSite; + setCustomClient(ConnectedProtocolClient.class); } /** @@ -147,13 +136,4 @@ public abstract class ProtocolINSServer extends ProtocolCustomServer { * or null if the TLN has no registered info site. */ public abstract String resolveTLNInfoSite(String tln); - - /** - * Gets the INS registration site URL from the configuration. - * - * @return The INS registration site URL. - */ - public final String getINSFrontendSite() { - return configurationManager.getString("server.site.frontend"); - } } diff --git a/src/main/java/org/openautonomousconnection/protocol/side/server/CustomConnectedClient.java b/src/main/java/org/openautonomousconnection/protocol/side/server/CustomConnectedClient.java index 862b71b..1eeebbf 100644 --- a/src/main/java/org/openautonomousconnection/protocol/side/server/CustomConnectedClient.java +++ b/src/main/java/org/openautonomousconnection/protocol/side/server/CustomConnectedClient.java @@ -8,7 +8,7 @@ import org.openautonomousconnection.protocol.versions.ProtocolVersion; public abstract class CustomConnectedClient { @Getter - private final ConnectionHandler pipelineConnection; + private final ConnectionHandler connection; @Getter private final ProtocolCustomServer server; @@ -18,8 +18,8 @@ public abstract class CustomConnectedClient { @Getter private boolean clientVersionLoaded = false; - public CustomConnectedClient(ConnectionHandler pipelineConnection, ProtocolCustomServer protocolServer) { - this.pipelineConnection = pipelineConnection; + public CustomConnectedClient(ConnectionHandler connection, ProtocolCustomServer protocolServer) { + this.connection = connection; this.server = protocolServer; } @@ -29,7 +29,7 @@ public abstract class CustomConnectedClient { } catch (Exception ignored) { } try { - pipelineConnection.disconnect(); + connection.disconnect(); } catch (Exception ignored) { } } diff --git a/src/main/java/org/openautonomousconnection/protocol/side/server/ProtocolCustomServer.java b/src/main/java/org/openautonomousconnection/protocol/side/server/ProtocolCustomServer.java index 14d36e4..c2c178c 100644 --- a/src/main/java/org/openautonomousconnection/protocol/side/server/ProtocolCustomServer.java +++ b/src/main/java/org/openautonomousconnection/protocol/side/server/ProtocolCustomServer.java @@ -1,6 +1,8 @@ package org.openautonomousconnection.protocol.side.server; import dev.unlegitdqrk.unlegitlibrary.network.system.server.NetworkServer; +import dev.unlegitdqrk.unlegitlibrary.network.system.utils.ClientID; +import dev.unlegitdqrk.unlegitlibrary.network.system.utils.TransportPolicy; import dev.unlegitdqrk.unlegitlibrary.network.utils.NetworkUtils; import lombok.Getter; import lombok.Setter; @@ -50,17 +52,26 @@ public abstract class ProtocolCustomServer { * The network server handling pipeline connections. */ @Getter - private NetworkServer pipelineServer; + private NetworkServer network; + + @Getter + private int tcpPort; + + @Getter + private int udpPort; /** * Initializes the web server with the given configuration, authentication, and rules files. * * @throws Exception If an error occurs during initialization. */ - public ProtocolCustomServer(String caPrefix, String certPrefix) throws Exception { + public ProtocolCustomServer(String caPrefix, String certPrefix, int tcpPort, int udpPort) throws Exception { // Initialize the list of connected clients this.clients = new ArrayList<>(); + this.tcpPort = tcpPort; + this.udpPort = udpPort; + // Set up folder structure for certificates folderStructure = new ServerCertificateFolderStructure(caPrefix, certPrefix); @@ -91,10 +102,11 @@ public abstract class ProtocolCustomServer { * Initialize the pipeline server */ private void createNetworkServer() { - pipelineServer = new NetworkServer.ServerBuilder(). - setPort(protocolBridge.getProtocolSettings().port).setTimeout(0). - setPacketHandler(protocolBridge.getProtocolSettings().packetHandler).setEventManager(protocolBridge.getProtocolSettings().eventManager). - setLogger(protocolBridge.getLogger()). + network = new NetworkServer.ServerBuilder(). + setTcpPort(tcpPort).setUdpPort(udpPort).setTransportPolicy(TransportPolicy.bothRequired()). + setTimeout(0). + setPacketHandler(protocolBridge.getProtocolValues().packetHandler). + setEventManager(protocolBridge.getProtocolValues().eventManager).setLogger(protocolBridge.getLogger()). setServerCertificate(certFile, keyFile).setRootCAFolder(folderStructure.publicCAFolder). build(); } @@ -105,9 +117,9 @@ public abstract class ProtocolCustomServer { * @param clientID The client ID to search for. * @return The connected web client with the specified ID, or null if not found. */ - public final T getClientByID(int clientID) { + public final T getClientByID(ClientID clientID) { for (CustomConnectedClient client : clients) - if (client.getPipelineConnection().getClientID() == clientID) return (T) client; + if (client.getConnection().getClientId() == clientID) return (T) client; return null; } @@ -176,8 +188,8 @@ public abstract class ProtocolCustomServer { private String certPrefix = "cert_server_"; public ServerCertificateFolderStructure(String caPrefix, String certPrefix) { - this.caPrefix = caPrefix; - this.certPrefix = certPrefix; + this.caPrefix = "ca_" + caPrefix + "_"; + this.certPrefix = "cert_" + certPrefix + "_"; certificatesFolder = new File("certificates"); 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 0a49e2c..ba8265d 100644 --- a/src/main/java/org/openautonomousconnection/protocol/side/web/ConnectedWebClient.java +++ b/src/main/java/org/openautonomousconnection/protocol/side/web/ConnectedWebClient.java @@ -9,11 +9,7 @@ import org.openautonomousconnection.protocol.side.server.CustomConnectedClient; */ public final class ConnectedWebClient extends CustomConnectedClient { - @Getter - private final ProtocolWebServer server; - public ConnectedWebClient(ConnectionHandler pipelineConnection, ProtocolWebServer webServer) { super(pipelineConnection, webServer); - this.server = webServer; } } 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 0443b0e..4a08682 100644 --- a/src/main/java/org/openautonomousconnection/protocol/side/web/ProtocolWebServer.java +++ b/src/main/java/org/openautonomousconnection/protocol/side/web/ProtocolWebServer.java @@ -1,6 +1,7 @@ package org.openautonomousconnection.protocol.side.web; import dev.unlegitdqrk.unlegitlibrary.file.FileUtils; +import dev.unlegitdqrk.unlegitlibrary.network.system.utils.TransportPolicy; import dev.unlegitdqrk.unlegitlibrary.string.RandomString; import lombok.Getter; import org.openautonomousconnection.protocol.annotations.ProtocolInfo; @@ -30,31 +31,39 @@ public abstract class ProtocolWebServer extends ProtocolCustomServer { */ @Getter private final File errorsFolder; - /** - * The configuration for the web server. - */ - @Getter - private final WebServerConfig serverConfig; /** * A unique secret for session management. */ @Getter private String uniqueSessionString; + /** + * The expiration time of a Session in minutes + */ + @Getter + private int sessionExpire; + + /** + * The max upload size in MB + */ + @Getter + private int maxUploadSize; + /** * Initializes the web server with the given configuration, authentication, and rules files. * - * @param serverConfig The configuration. * @param authFile The authentication file. * @param rulesFile The rules file. + * @param sessionExpire The expiration time of a Session in minutes + * @param uploadSize The max upload size in MB * @throws Exception If an error occurs during initialization. */ - public ProtocolWebServer(WebServerConfig serverConfig, File authFile, File rulesFile) throws Exception { - super("ca_server_", "cert_server_"); + public ProtocolWebServer(File authFile, File rulesFile, int tcpPort, int udpPort, + int sessionExpire, int uploadSize) throws Exception { + super("server", "server", tcpPort, udpPort); - // Store the configuration file - this.serverConfig = serverConfig; - this.serverConfig.attachWebServer(this); + this.sessionExpire = sessionExpire; + this.maxUploadSize = uploadSize; // Set up content and error folders contentFolder = new File("content"); diff --git a/src/main/java/org/openautonomousconnection/protocol/side/web/WebServerConfig.java b/src/main/java/org/openautonomousconnection/protocol/side/web/WebServerConfig.java deleted file mode 100644 index b858615..0000000 --- a/src/main/java/org/openautonomousconnection/protocol/side/web/WebServerConfig.java +++ /dev/null @@ -1,51 +0,0 @@ -package org.openautonomousconnection.protocol.side.web; - -import dev.unlegitdqrk.unlegitlibrary.file.ConfigurationManager; - -import java.io.File; -import java.io.IOException; - -public class WebServerConfig { - - private final File configFile; - private final ConfigurationManager configuration; - private ProtocolWebServer webServer; - - public WebServerConfig(File configFile) throws IOException { - this.configFile = configFile; - if (!configFile.exists()) configFile.createNewFile(); - configuration = new ConfigurationManager(configFile); - - if (!configuration.isSet("sessionexpireMIN")) configuration.set("sessionexpireMIN", 60); - if (!configuration.isSet("maxuploadMB")) configuration.set("maxuploadMB", 10000); - if (!configuration.isSet("port")) configuration.set("port", 20); - - configuration.saveProperties(); - } - - public void attachWebServer(ProtocolWebServer webServer) { - if (this.webServer != null) return; - this.webServer = webServer; - } - - /** - * @return Web port - */ - public int getPort() { - return configuration.getInt("port"); - } - - /** - * @return The Session expiration time in minutes - */ - public int getSessionExpiration() { - return configuration.getInt("sessionexpireMIN"); - } - - /** - * @return Max upload size in MB - */ - public int getMaxUpload() { - return configuration.getInt("maxuploadMB"); - } -} 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 e29d9df..3abddaf 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 @@ -128,7 +128,7 @@ public final class SessionManager { this.login = login; this.ip = ip; this.userAgent = userAgent; - this.expiresAt = System.currentTimeMillis() + (long) protocolWebServer.getServerConfig().getSessionExpiration() * 60 * 1000; + this.expiresAt = System.currentTimeMillis() + (long) protocolWebServer.getSessionExpire() * 60 * 1000; } /** @@ -158,7 +158,7 @@ public final class SessionManager { * @throws IOException If an I/O error occurs. */ void refresh(ProtocolWebServer protocolWebServer) throws IOException { - this.expiresAt = System.currentTimeMillis() + (long) protocolWebServer.getServerConfig().getSessionExpiration() * 60 * 1000; + this.expiresAt = System.currentTimeMillis() + (long) protocolWebServer.getSessionExpire() * 60 * 1000; } } } diff --git a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/utils/Classic_ProtocolVersion.java b/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/Classic_ProtocolVersion.java similarity index 97% rename from src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/utils/Classic_ProtocolVersion.java rename to src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/Classic_ProtocolVersion.java index 4e6fc20..92a4883 100644 --- a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/utils/Classic_ProtocolVersion.java +++ b/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/Classic_ProtocolVersion.java @@ -1,4 +1,4 @@ -package org.openautonomousconnection.protocol.versions.v1_0_0.classic.utils; +package org.openautonomousconnection.protocol.versions.v1_0_0.classic; import java.io.Serializable; diff --git a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/events/Classic_DomainPacketReceivedEvent.java b/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/events/Classic_DomainPacketReceivedEvent.java deleted file mode 100644 index 504ff03..0000000 --- a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/events/Classic_DomainPacketReceivedEvent.java +++ /dev/null @@ -1,51 +0,0 @@ -package org.openautonomousconnection.protocol.versions.v1_0_0.classic.events; - -import dev.unlegitdqrk.unlegitlibrary.event.impl.Event; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.handlers.ClassicHandlerINSServer; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.objects.Classic_Domain; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.objects.Classic_RequestDomain; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.utils.Classic_ProtocolVersion; - -/** - * This event is fired when a classic domain packet is received. - * This event is deprecated and will be marked for removal in future versions. - * - * @see ClassicHandlerINSServer - * @see org.openautonomousconnection.protocol.versions.v1_0_0.classic.handlers.ClassicHandlerClient - * @see org.openautonomousconnection.protocol.versions.v1_0_0.classic.handlers.ClassicHandlerWebServer - */ -@Deprecated(forRemoval = false, since = "1.0.0-BETA.3") -public final class Classic_DomainPacketReceivedEvent extends Event { - - public final Classic_ProtocolVersion protocolVersion; - public final Classic_Domain domain; - public final Classic_RequestDomain requestDomain; - public final int clientID; - - public Classic_DomainPacketReceivedEvent(Classic_ProtocolVersion protocolVersion, Classic_Domain domain, Classic_RequestDomain requestDomain, int clientID) { - this.protocolVersion = protocolVersion; - this.domain = domain; - this.requestDomain = requestDomain; - this.clientID = clientID; - } - - @Override - protected Object clone() throws CloneNotSupportedException { - return super.clone(); - } - - @Override - public boolean equals(Object obj) { - return super.equals(obj); - } - - @Override - public String toString() { - return super.toString(); - } - - @Override - public int hashCode() { - return super.hashCode(); - } -} \ No newline at end of file diff --git a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/events/Classic_PingPacketReceivedEvent.java b/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/events/Classic_PingPacketReceivedEvent.java deleted file mode 100644 index 34fec21..0000000 --- a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/events/Classic_PingPacketReceivedEvent.java +++ /dev/null @@ -1,52 +0,0 @@ -package org.openautonomousconnection.protocol.versions.v1_0_0.classic.events; - -import dev.unlegitdqrk.unlegitlibrary.event.impl.Event; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.handlers.ClassicHandlerINSServer; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.objects.Classic_Domain; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.objects.Classic_RequestDomain; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.utils.Classic_ProtocolVersion; - -/** - * This event is fired when a classic ping packet is received. - * This event is deprecated and will be marked for removal in future versions. - * - * @see ClassicHandlerINSServer - * @see org.openautonomousconnection.protocol.versions.v1_0_0.classic.handlers.ClassicHandlerClient - * @see org.openautonomousconnection.protocol.versions.v1_0_0.classic.handlers.ClassicHandlerWebServer - */ -@Deprecated(forRemoval = false, since = "1.0.0-BETA.3") -public final class Classic_PingPacketReceivedEvent extends Event { - public final Classic_ProtocolVersion protocolVersion; - public final Classic_Domain domain; - public final Classic_RequestDomain requestDomain; - public final boolean reachable; - public final int clientID; - - public Classic_PingPacketReceivedEvent(Classic_ProtocolVersion protocolVersion, Classic_Domain domain, Classic_RequestDomain requestDomain, boolean reachable, int clientID) { - this.protocolVersion = protocolVersion; - this.domain = domain; - this.requestDomain = requestDomain; - this.reachable = reachable; - this.clientID = clientID; - } - - @Override - protected Object clone() throws CloneNotSupportedException { - return super.clone(); - } - - @Override - public boolean equals(Object obj) { - return super.equals(obj); - } - - @Override - public String toString() { - return super.toString(); - } - - @Override - public int hashCode() { - return super.hashCode(); - } -} \ No newline at end of file diff --git a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/handlers/ClassicHandlerClient.java b/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/handlers/ClassicHandlerClient.java deleted file mode 100644 index 8cf4157..0000000 --- a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/handlers/ClassicHandlerClient.java +++ /dev/null @@ -1,47 +0,0 @@ -package org.openautonomousconnection.protocol.versions.v1_0_0.classic.handlers; - -import lombok.Getter; -import org.openautonomousconnection.protocol.annotations.ProtocolInfo; -import org.openautonomousconnection.protocol.packets.v1_0_0.classic.Classic_MessagePacket; -import org.openautonomousconnection.protocol.side.client.ProtocolClient; -import org.openautonomousconnection.protocol.versions.ProtocolVersion; -import org.openautonomousconnection.protocol.versions.v1_0_0.beta.INSResponseStatus; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.objects.Classic_Domain; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.site.Classic_SiteType; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.utils.Classic_ProtocolVersion; - -import java.io.IOException; - -/** - * Abstract class defining the client-side handler for Classic protocol operations. - */ -@ProtocolInfo(protocolSide = ProtocolVersion.ProtocolSide.CLIENT) -public abstract class ClassicHandlerClient { - - /** - * Reference to the ProtocolClient - */ - @Getter - private final ProtocolClient client; - - /** - * Sets the client variable - * - * @param client The ProtocolClient Object - */ - public ClassicHandlerClient(ProtocolClient client) { - this.client = client; - } - - public abstract void unsupportedClassicPacket(String classicPacketClassName, Object[] content); - - public abstract void handleHTMLContent(Classic_SiteType siteType, Classic_Domain domain, String html); - - public abstract void handleMessage(String message, Classic_ProtocolVersion protocolVersion); - - public final void sendMessage(String message) throws IOException, ClassNotFoundException { - client.getClientINSConnection().sendPacket(new Classic_MessagePacket(message, client.getClientServerConnection().getClientID(), client.getProtocolBridge())); - } - - public abstract void validationCompleted(Classic_Domain domain, INSResponseStatus insResponseStatus); -} diff --git a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/handlers/ClassicHandlerINSServer.java b/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/handlers/ClassicHandlerINSServer.java deleted file mode 100644 index 074a0d8..0000000 --- a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/handlers/ClassicHandlerINSServer.java +++ /dev/null @@ -1,24 +0,0 @@ -package org.openautonomousconnection.protocol.versions.v1_0_0.classic.handlers; - -import org.openautonomousconnection.protocol.annotations.ProtocolInfo; -import org.openautonomousconnection.protocol.side.ins.ConnectedProtocolClient; -import org.openautonomousconnection.protocol.versions.ProtocolVersion; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.objects.Classic_Domain; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.objects.Classic_RequestDomain; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.utils.Classic_ProtocolVersion; - -import java.sql.SQLException; - -/** - * Abstract class defining the INS server-side handler for Classic protocol operations. - */ -@ProtocolInfo(protocolSide = ProtocolVersion.ProtocolSide.INS) -public abstract class ClassicHandlerINSServer { - public abstract void handleMessage(ConnectedProtocolClient client, String message, Classic_ProtocolVersion protocolVersion); - - public abstract Classic_Domain getDomain(Classic_RequestDomain requestDomain) throws SQLException; - - public abstract Classic_Domain ping(Classic_RequestDomain requestDomain) throws SQLException; - - public abstract void unsupportedClassicPacket(String className, Object[] content, ConnectedProtocolClient client); -} diff --git a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/handlers/ClassicHandlerWebServer.java b/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/handlers/ClassicHandlerWebServer.java deleted file mode 100644 index 2a261df..0000000 --- a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/handlers/ClassicHandlerWebServer.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.openautonomousconnection.protocol.versions.v1_0_0.classic.handlers; - -import org.openautonomousconnection.protocol.annotations.ProtocolInfo; -import org.openautonomousconnection.protocol.side.ins.ConnectedProtocolClient; -import org.openautonomousconnection.protocol.versions.ProtocolVersion; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.utils.Classic_ProtocolVersion; - -/** - * Abstract class defining the web server-side handler for Classic protocol operations. - */ -@ProtocolInfo(protocolSide = ProtocolVersion.ProtocolSide.WEB) -public abstract class ClassicHandlerWebServer { - public abstract void handleMessage(ConnectedProtocolClient client, String message, Classic_ProtocolVersion protocolVersion); - - public abstract void unsupportedClassicPacket(String className, Object[] content, ConnectedProtocolClient client); -} diff --git a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/handlers/builtin/ClientClassic.java b/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/handlers/builtin/ClientClassic.java deleted file mode 100644 index 565736a..0000000 --- a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/handlers/builtin/ClientClassic.java +++ /dev/null @@ -1,74 +0,0 @@ -package org.openautonomousconnection.protocol.versions.v1_0_0.classic.handlers.builtin; - -import lombok.Getter; -import org.openautonomousconnection.protocol.ProtocolBridge; -import org.openautonomousconnection.protocol.versions.v1_0_0.beta.INSRecordType; -import org.openautonomousconnection.protocol.versions.v1_0_0.beta.INSResponseStatus; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.handlers.ClassicHandlerClient; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.helper.ClassicHelper; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.objects.Classic_Domain; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.site.Classic_SiteType; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.site.Classic_WebsitesContent; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.utils.Classic_ProtocolVersion; - -import java.io.IOException; - -public abstract class ClientClassic extends ClassicHandlerClient { - @Getter - private final ProtocolBridge bridge; - - @Getter - private final ClassicHelper helper; - - public ClientClassic(ProtocolBridge bridge) { - super(bridge.getProtocolClient()); - this.bridge = bridge; - this.helper = new ClassicHelper(bridge); - } - - @Override - public void unsupportedClassicPacket(String className, Object[] content) { - bridge.getLogger().warn( - "[Classic UnsupportedPacket] packet=" + className + " content=" + java.util.Arrays.toString(content) - ); - - onUnsupportedClassicPacket(className, content); - } - - /** - * Optional callback - * - * @param className The class name - * @param content The content - */ - public void onUnsupportedClassicPacket(String className, Object[] content) { - } - - @Override - public void handleMessage(String message, Classic_ProtocolVersion protocolVersion) { - bridge.getLogger().info("[ClassicHandler] Message received (Classic Version " + protocolVersion.version + "): " + message); - onMessage(message, protocolVersion); - } - - /** - * Optional callback - * - * @param message The Message - * @param protocolVersion the Classic version - */ - public void onMessage(String message, Classic_ProtocolVersion protocolVersion) { - } - - @Override - public void validationCompleted(Classic_Domain domain, INSResponseStatus insResponseStatus) { - if (insResponseStatus == INSResponseStatus.OK) { - try { - bridge.getProtocolClient().sendINSQuery(domain.topLevelDomain, domain.name, null, INSRecordType.A); - } catch (IOException | ClassNotFoundException e) { - handleHTMLContent(Classic_SiteType.CLIENT, domain, Classic_WebsitesContent.ERROR_OCCURRED(e.getMessage())); - } - } else { - handleHTMLContent(Classic_SiteType.CLIENT, domain, Classic_WebsitesContent.DOMAIN_NOT_REACHABLE); - } - } -} diff --git a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/handlers/builtin/INSClassic.java b/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/handlers/builtin/INSClassic.java deleted file mode 100644 index 7214b9d..0000000 --- a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/handlers/builtin/INSClassic.java +++ /dev/null @@ -1,93 +0,0 @@ -package org.openautonomousconnection.protocol.versions.v1_0_0.classic.handlers.builtin; - -import lombok.Getter; -import org.openautonomousconnection.protocol.ProtocolBridge; -import org.openautonomousconnection.protocol.side.ins.ConnectedProtocolClient; -import org.openautonomousconnection.protocol.side.ins.ProtocolINSServer; -import org.openautonomousconnection.protocol.versions.v1_0_0.beta.INSRecord; -import org.openautonomousconnection.protocol.versions.v1_0_0.beta.INSRecordType; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.handlers.ClassicHandlerINSServer; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.helper.ClassicHelper; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.helper.ParsedDomain; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.objects.Classic_Domain; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.objects.Classic_RequestDomain; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.utils.Classic_ProtocolVersion; - -import java.sql.SQLException; -import java.util.List; - -public class INSClassic extends ClassicHandlerINSServer { - - @Getter - private final ProtocolBridge bridge; - - @Getter - private final ClassicHelper helper; - - public INSClassic(ProtocolBridge bridge) { - this.bridge = bridge; - this.helper = new ClassicHelper(bridge); - } - - @Override - public void handleMessage(ConnectedProtocolClient client, String message, Classic_ProtocolVersion protocolVersion) { - client.getServer().getProtocolBridge().getLogger().info("[ClassicHandler] Message received from ClientID " + - client.getPipelineConnection().getClientID() + - " (Classic Version " + protocolVersion.version + ", Client Version: " + - client.getClientVersion().toString() + "): " + message); - - onMessage(client, message, protocolVersion); - } - - /** - * Optional callback. - * - * @param client The client sender. - * @param message The message. - * @param protocolVersion The classic version. - */ - public void onMessage(ConnectedProtocolClient client, String message, Classic_ProtocolVersion protocolVersion) { - } - - @Override - public Classic_Domain getDomain(Classic_RequestDomain requestDomain) throws SQLException { - if (!bridge.isRunningAsINSServer()) return null; - - ParsedDomain pd = helper.parseDomain(requestDomain); - ProtocolINSServer server = (ProtocolINSServer) bridge.getProtocolServer(); - - // IMPORTANT: resolve() already performs CNAME recursion + sorting. - // Request A directly and pick the first (= best after sorting). - List aRecords = server.resolve(pd.tln(), pd.name(), pd.sub(), INSRecordType.A); - if (aRecords.isEmpty()) return null; - - INSRecord targetA = aRecords.get(0); - return helper.buildClassicDomain(pd, targetA); - } - - @Override - public Classic_Domain ping(Classic_RequestDomain req) throws SQLException { - if (!bridge.isRunningAsINSServer()) return null; - return new Classic_Domain(req.name, req.topLevelDomain, null, req.path, bridge); - } - - @Override - public void unsupportedClassicPacket(String className, Object[] content, ConnectedProtocolClient client) { - client.getServer().getProtocolBridge().getLogger().warn( - "[Classic UnsupportedPacket] From client " + client.getPipelineConnection().getClientID() + - ": packet=" + className + " content=" + java.util.Arrays.toString(content) - ); - - onUnsupportedClassicPacket(className, content, client); - } - - /** - * Optional callback. - * - * @param className The class name. - * @param content The content. - * @param client The client sender. - */ - public void onUnsupportedClassicPacket(String className, Object[] content, ConnectedProtocolClient client) { - } -} diff --git a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/handlers/builtin/WebClassic.java b/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/handlers/builtin/WebClassic.java deleted file mode 100644 index ff077db..0000000 --- a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/handlers/builtin/WebClassic.java +++ /dev/null @@ -1,56 +0,0 @@ -package org.openautonomousconnection.protocol.versions.v1_0_0.classic.handlers.builtin; - -import lombok.Getter; -import org.openautonomousconnection.protocol.ProtocolBridge; -import org.openautonomousconnection.protocol.side.ins.ConnectedProtocolClient; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.handlers.ClassicHandlerWebServer; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.utils.Classic_ProtocolVersion; - -public class WebClassic extends ClassicHandlerWebServer { - @Getter - private final ProtocolBridge bridge; - - public WebClassic(ProtocolBridge bridge) { - this.bridge = bridge; - } - - @Override - public void handleMessage(ConnectedProtocolClient client, String message, Classic_ProtocolVersion protocolVersion) { - client.getServer().getProtocolBridge().getLogger().info("[ClassicHandler] Message received from ClientID " + - client.getPipelineConnection().getClientID() + - " (Classic Version " + protocolVersion.version + ", Client Version: " + - client.getClientVersion().toString() + "): " + message); - - onMessage(client, message, protocolVersion); - } - - /** - * Optional callback - * - * @param client The client sender - * @param message The Message - * @param protocolVersion the Classic version - */ - public void onMessage(ConnectedProtocolClient client, String message, Classic_ProtocolVersion protocolVersion) { - } - - @Override - public void unsupportedClassicPacket(String className, Object[] content, ConnectedProtocolClient client) { - client.getServer().getProtocolBridge().getLogger().warn( - "[Classic UnsupportedPacket] From client " + client.getPipelineConnection().getClientID() + - ": packet=" + className + " content=" + java.util.Arrays.toString(content) - ); - - onUnsupportedClassicPacket(className, content, client); - } - - /** - * Optional callback - * - * @param className The class name - * @param content The content - * @param client The client sender - */ - public void onUnsupportedClassicPacket(String className, Object[] content, ConnectedProtocolClient client) { - } -} diff --git a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/helper/ClassicHelper.java b/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/helper/ClassicHelper.java deleted file mode 100644 index 2a55ab1..0000000 --- a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/helper/ClassicHelper.java +++ /dev/null @@ -1,41 +0,0 @@ -package org.openautonomousconnection.protocol.versions.v1_0_0.classic.helper; - -import org.openautonomousconnection.protocol.ProtocolBridge; -import org.openautonomousconnection.protocol.versions.v1_0_0.beta.INSRecord; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.objects.Classic_Domain; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.objects.Classic_RequestDomain; - -import java.util.Arrays; - -public record ClassicHelper(ProtocolBridge bridge) { - - public Classic_Domain buildClassicDomain(ParsedDomain req, INSRecord rec) { - Classic_Domain info = new Classic_Domain(req.name(), req.tln(), req.sub(), req.path(), bridge); - - String host = rec.value; - int port = rec.port > 0 ? rec.port : 80; - - return new Classic_Domain( - req.name(), req.tln(), - host.contains(":") ? host : host + ":" + port, - req.path(), bridge); - } - - public ParsedDomain parseDomain(Classic_RequestDomain req) { - String tln = req.topLevelDomain; // example: "net" - String full = req.name; // example: "api.v1.example" - - String[] parts = full.split("\\."); - - if (parts.length == 1) { - return new ParsedDomain(tln, full, null, req.path); - } - - String name = parts[parts.length - 1]; - String sub = parts.length > 1 - ? String.join(".", Arrays.copyOfRange(parts, 0, parts.length - 1)) - : null; - - return new ParsedDomain(tln, name, sub, req.path); - } -} diff --git a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/helper/ParsedDomain.java b/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/helper/ParsedDomain.java deleted file mode 100644 index 8dae477..0000000 --- a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/helper/ParsedDomain.java +++ /dev/null @@ -1,4 +0,0 @@ -package org.openautonomousconnection.protocol.versions.v1_0_0.classic.helper; - -public record ParsedDomain(String tln, String name, String sub, String path) { -} \ No newline at end of file diff --git a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/helper/TargetName.java b/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/helper/TargetName.java deleted file mode 100644 index 5cc81c7..0000000 --- a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/helper/TargetName.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.openautonomousconnection.protocol.versions.v1_0_0.classic.helper; - -/** - * Represents a parsed CNAME target in (tln, name, sub) form. - */ -public record TargetName(String tln, String name, String sub) { -} diff --git a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/objects/Classic_Domain.java b/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/objects/Classic_Domain.java deleted file mode 100644 index 053a1ea..0000000 --- a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/objects/Classic_Domain.java +++ /dev/null @@ -1,69 +0,0 @@ -package org.openautonomousconnection.protocol.versions.v1_0_0.classic.objects; - -import org.openautonomousconnection.protocol.ProtocolBridge; - -import java.io.Serializable; - -/** - * Classic_Domain is an old representation of a InfoName, maintained for backward compatibility. - * It encapsulates the InfoName's name, top-level name, path, and destination. - * This class is deprecated and users are encouraged to use the InfoName class instead. - */ -@Deprecated(forRemoval = false, since = "1.0.0-BETA.3") -public class Classic_Domain implements Serializable { - - /** - * The name of the domain. - */ - @Deprecated(forRemoval = false, since = "1.0.0-BETA.3") - public final String name; - - /** - * The top-level domain. - */ - @Deprecated(forRemoval = false, since = "1.0.0-BETA.3") - public final String topLevelDomain; - - - /** - * The path component of the domain. - */ - @Deprecated(forRemoval = false, since = "1.0.0-BETA.3") - public final String path; - - /** - * The destination of the domain, typically the full URL or address. - */ - @Deprecated(forRemoval = false, since = "1.0.0-BETA.3") - public final String destination; - - /** - * The ProtocolBridge reference. - */ - @Deprecated(forRemoval = false, since = "1.0.0-BETA.3") - public final ProtocolBridge protocolBridge; - - public Classic_Domain(String name, String topLevelDomain, String destination, String path, ProtocolBridge bridge) { - this.protocolBridge = bridge; - this.name = name; - this.topLevelDomain = topLevelDomain; - this.destination = destination; - this.path = path; - } - - @Override - protected final Object clone() throws CloneNotSupportedException { - return new Classic_Domain(name, topLevelDomain, destination, path, protocolBridge); - } - - @Override - public final boolean equals(Object obj) { - if (!(obj instanceof Classic_Domain other)) return false; - return other.name.equalsIgnoreCase(name) && other.topLevelDomain.equalsIgnoreCase(topLevelDomain); - } - - @Override - public final int hashCode() { - return super.hashCode(); - } -} diff --git a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/objects/Classic_LocalDomain.java b/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/objects/Classic_LocalDomain.java deleted file mode 100644 index 8b2c9c8..0000000 --- a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/objects/Classic_LocalDomain.java +++ /dev/null @@ -1,14 +0,0 @@ -package org.openautonomousconnection.protocol.versions.v1_0_0.classic.objects; - -import org.openautonomousconnection.protocol.ProtocolBridge; - -/** - * Class representing a local domain in the Classic protocol. - * This class extends Classic_Domain and is used for local domain representation. - */ -@Deprecated(forRemoval = false, since = "1.0.0-BETA.3") -public final class Classic_LocalDomain extends Classic_Domain { - public Classic_LocalDomain(String name, String endName, String path, ProtocolBridge protocolBridge) { - super(name, endName, null, path, protocolBridge); - } -} diff --git a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/objects/Classic_RequestDomain.java b/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/objects/Classic_RequestDomain.java deleted file mode 100644 index 408d520..0000000 --- a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/objects/Classic_RequestDomain.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.openautonomousconnection.protocol.versions.v1_0_0.classic.objects; - -import org.openautonomousconnection.protocol.ProtocolBridge; - -import java.io.Serializable; - -/** - * Class representing a request for a domain in the Classic protocol. - * This class extends Classic_Domain and is used for requesting domain information. - */ -@Deprecated(forRemoval = false, since = "1.0.0-BETA.3") -public final class Classic_RequestDomain extends Classic_Domain implements Serializable { - - public Classic_RequestDomain(String name, String topLevelDomain, String path, ProtocolBridge protocolBridge) { - super(name, topLevelDomain, null, path, protocolBridge); - } -} diff --git a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/site/Classic_SiteType.java b/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/site/Classic_SiteType.java deleted file mode 100644 index 0a82c04..0000000 --- a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/site/Classic_SiteType.java +++ /dev/null @@ -1,44 +0,0 @@ -package org.openautonomousconnection.protocol.versions.v1_0_0.classic.site; - -import java.io.Serializable; - -/** - * Enum representing different types of sites in the Classic protocol. - */ -@Deprecated(forRemoval = false, since = "1.0.0-BETA.3") -public enum Classic_SiteType implements Serializable { - /** - * Client site type. - */ - CLIENT("oac-client"), - - /** - * Web server site type. - */ - SERVER("oac-server"), - - /** - * INS server site type. - */ - PUBLIC("oac"), - - /** - * Protocol site type. - */ - PROTOCOL("oac-protocol"), - - /** - * Local site type. - */ - LOCAL("oac-local"); - - /** - * The name of the site type. - */ - @Deprecated(forRemoval = false, since = "1.0.0-BETA.3") - public final String name; - - Classic_SiteType(String name) { - this.name = name; - } -} diff --git a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/site/Classic_WebsitesContent.java b/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/site/Classic_WebsitesContent.java deleted file mode 100644 index 66d5996..0000000 --- a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/site/Classic_WebsitesContent.java +++ /dev/null @@ -1,71 +0,0 @@ -package org.openautonomousconnection.protocol.versions.v1_0_0.classic.site; - -import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider; - -/** - * This class contains predefined HTML content for various website responses in the Classic protocol. - */ -@Deprecated(forRemoval = false, since = "1.0.0-BETA.3") -public final class Classic_WebsitesContent extends DefaultMethodsOverrider { - - public static final String DOMAIN_NOT_FOUND = """ - - - 404 - Domain not found - - - - - -

404 - This infoName was not found

- - - """; - - public static final String FILE_NOT_FOUND = """ - - - 404 - File not found - - - - - -

404 - This file was not found

- - - """; - - public static final String DOMAIN_NOT_REACHABLE = """ - - - 504 - Site not reachable - - - - - -

504 - This site is currently not reachable

- - - """; - public static String ERROR_OCCURRED = ERROR_OCCURRED("No specified details!"); - - public static String ERROR_OCCURRED(String errorDetails) { - return """ - - - 500 - Error occurred - - - - - -

500 - Error occured while resolving infoName!

-

Details:

-
""" + errorDetails + "
" + """ - - - """; - } -} diff --git a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/utils/Classic_ClientListener.java b/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/utils/Classic_ClientListener.java deleted file mode 100644 index 592fb6d..0000000 --- a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/utils/Classic_ClientListener.java +++ /dev/null @@ -1,131 +0,0 @@ -package org.openautonomousconnection.protocol.versions.v1_0_0.classic.utils; - -import dev.unlegitdqrk.unlegitlibrary.event.EventListener; -import dev.unlegitdqrk.unlegitlibrary.event.Listener; -import lombok.Getter; -import org.openautonomousconnection.protocol.ProtocolBridge; -import org.openautonomousconnection.protocol.packets.v1_0_0.classic.Classic_PingPacket; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.events.Classic_DomainPacketReceivedEvent; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.events.Classic_PingPacketReceivedEvent; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.objects.Classic_LocalDomain; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.site.Classic_SiteType; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.site.Classic_WebsitesContent; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.net.HttpURLConnection; -import java.net.URL; - -/** - * This class listens for events related to Classic protocol operations on the client side. - * It handles domain resolution and ping responses, facilitating communication with the INS server - * and web content retrieval. - */ -@Deprecated(forRemoval = false, since = "1.0.0-BETA.3") -public final class Classic_ClientListener extends EventListener { - - /** - * Reference to the ProtocolBridge - */ - @Getter - private ProtocolBridge protocolBridge; - - /** - * Set protocol bridge - * - * @param protocolBridge The ProtocolBridge object - */ - public void setProtocolBridge(ProtocolBridge protocolBridge) { - if (this.protocolBridge != null) return; - this.protocolBridge = protocolBridge; - } - - /** - * Handles the event when a domain packet is received. - * It checks if the domain exists and sends a ping request to the INS server. - * If the domain does not exist, it handles the error accordingly. - * - * @param event The event containing domain information. - */ - @Listener - public void onDomain(Classic_DomainPacketReceivedEvent event) { - // Check if the domain exists - boolean exists = event.domain != null; - - if (exists) { - try { - // Send a ping request to the INS server - if (!protocolBridge.getProtocolClient().getClientINSConnection().sendPacket(new Classic_PingPacket(event.requestDomain, event.domain, false, protocolBridge))) { - // If sending the packet fails, handle the error - protocolBridge.getClassicHandlerClient().handleHTMLContent(Classic_SiteType.PROTOCOL, new Classic_LocalDomain("error-occurred", "html", "", protocolBridge), - Classic_WebsitesContent.ERROR_OCCURRED(event.domain + "/" + event.domain.path)); - } - } catch (IOException | ClassNotFoundException e) { - // Handle any exceptions that occur during the process - protocolBridge.getClassicHandlerClient().handleHTMLContent(Classic_SiteType.PROTOCOL, new Classic_LocalDomain("error-occurred", "html", "", protocolBridge), - Classic_WebsitesContent.ERROR_OCCURRED(event.domain + "/" + event.domain.path + ":\n" + e.getMessage())); - } - } else - // If the domain does not exist, handle the error - protocolBridge.getClassicHandlerClient().handleHTMLContent(Classic_SiteType.PROTOCOL, new Classic_LocalDomain("domain-not-found", "html", "", protocolBridge), Classic_WebsitesContent.DOMAIN_NOT_FOUND); - } - - /** - * Handles the event when a ping packet is received. - * If the domain is reachable, it fetches the HTML content from the domain. - * If not reachable, it handles the error accordingly. - * - * @param event The event containing ping response information. - */ - @Listener - public void onPing(Classic_PingPacketReceivedEvent event) { - // If the domain is reachable, fetch the HTML content - if (event.reachable) { - String destination = event.domain.destination; - - try { - // Create a URL object - URL url = new URL(destination); - HttpURLConnection connection2 = (HttpURLConnection) url.openConnection(); - connection2.setRequestMethod("GET"); - - // Read the response - StringBuilder content = new StringBuilder(); - try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection2.getInputStream()))) { - String line; - while ((line = reader.readLine()) != null) content.append(line); - } - - // Handle the HTML content - protocolBridge.getClassicHandlerClient().handleHTMLContent(Classic_SiteType.PUBLIC, event.domain, content.toString()); - } catch (IOException exception) { - // Handle any exceptions that occur during the process - protocolBridge.getClassicHandlerClient().handleHTMLContent(Classic_SiteType.PROTOCOL, new Classic_LocalDomain("error-occurred", "html", "", protocolBridge), - Classic_WebsitesContent.ERROR_OCCURRED(exception.getMessage().replace(event.domain.destination, event.domain + "/" + event.domain.path))); - } - } else - // If the domain is not reachable, handle the error - protocolBridge.getClassicHandlerClient().handleHTMLContent(Classic_SiteType.PROTOCOL, new Classic_LocalDomain("error-not-reached", "html", "", protocolBridge), Classic_WebsitesContent.DOMAIN_NOT_REACHABLE); - } - - @Override - protected Object clone() throws CloneNotSupportedException { - return super.clone(); - } - - @Override - public boolean equals(Object obj) { - return super.equals(obj); - } - - @Override - public String toString() { - return super.toString(); - } - - @Override - public int hashCode() { - return super.hashCode(); - } -} \ No newline at end of file diff --git a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/utils/Classic_DomainUtils.java b/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/utils/Classic_DomainUtils.java deleted file mode 100644 index 2250f32..0000000 --- a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/utils/Classic_DomainUtils.java +++ /dev/null @@ -1,100 +0,0 @@ -package org.openautonomousconnection.protocol.versions.v1_0_0.classic.utils; - -import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.site.Classic_SiteType; - -import java.net.MalformedURLException; -import java.net.URI; -import java.net.URISyntaxException; -import java.net.URL; - -/** - * Utility class for domain-related operations in the Classic protocol. - */ -@Deprecated(forRemoval = false, since = "1.0.0-BETA.3") -class Classic_DomainUtils extends DefaultMethodsOverrider { - - /** - * Extracts the top-level domain (TLD) from a given URL. - * - * @param url The URL from which to extract the TLD. - * @return The top-level domain as a string. - * @throws MalformedURLException If the URL is malformed. - */ - public static String getTopLevelDomain(String url) throws MalformedURLException { - URL uri = null; - String tldString = null; - - if (url.startsWith(Classic_SiteType.PUBLIC.name + "://")) - url = url.substring((Classic_SiteType.PUBLIC.name + "://").length()); - if (url.startsWith(Classic_SiteType.CLIENT.name + "://")) - url = url.substring((Classic_SiteType.CLIENT.name + "://").length()); - if (url.startsWith(Classic_SiteType.SERVER.name + "://")) - url = url.substring((Classic_SiteType.SERVER.name + "://").length()); - if (url.startsWith(Classic_SiteType.PROTOCOL.name + "://")) - url = url.substring((Classic_SiteType.PROTOCOL.name + "://").length()); - if (url.startsWith(Classic_SiteType.LOCAL.name + "://")) - url = url.substring((Classic_SiteType.LOCAL.name + "://").length()); - - if (!url.startsWith("https://") && !url.startsWith("http://")) url = "https://" + url; - - uri = new URL(url); - String[] domainNameParts = uri.getHost().split("\\."); - tldString = domainNameParts[domainNameParts.length - 1]; - - return tldString; - } - - /** - * Extracts the domain name (excluding the TLD) from a given URL. - * - * @param url The URL from which to extract the domain name. - * @return The domain name as a string. - * @throws URISyntaxException If the URL syntax is incorrect. - * @throws MalformedURLException If the URL is malformed. - */ - public static String getDomainName(String url) throws URISyntaxException, MalformedURLException { - if (url.startsWith(Classic_SiteType.PUBLIC.name + "://")) - url = url.substring((Classic_SiteType.PUBLIC.name + "://").length()); - if (url.startsWith(Classic_SiteType.CLIENT.name + "://")) - url = url.substring((Classic_SiteType.CLIENT.name + "://").length()); - if (url.startsWith(Classic_SiteType.SERVER.name + "://")) - url = url.substring((Classic_SiteType.SERVER.name + "://").length()); - if (url.startsWith(Classic_SiteType.PROTOCOL.name + "://")) - url = url.substring((Classic_SiteType.PROTOCOL.name + "://").length()); - if (url.startsWith(Classic_SiteType.LOCAL.name + "://")) - url = url.substring((Classic_SiteType.LOCAL.name + "://").length()); - - if (!url.startsWith("https://") && !url.startsWith("http://")) url = "https://" + url; - - URI uri = new URI(url); - return uri.getHost().replace("." + getTopLevelDomain(url), ""); - } - - /** - * Extracts the path component from a given URL. - * - * @param url The URL from which to extract the path. - * @return The path as a string. - */ - public static String getPath(String url) { - if (!url.startsWith(Classic_SiteType.PUBLIC.name + "://") && !url.startsWith(Classic_SiteType.CLIENT.name + "://") && - !url.startsWith(Classic_SiteType.SERVER.name + "://") && !url.startsWith(Classic_SiteType.PROTOCOL.name + "://") && - !url.startsWith(Classic_SiteType.LOCAL.name + "://") && !url.startsWith("http") && !url.startsWith("https")) { - url = Classic_SiteType.PUBLIC.name + "://" + url; - } - - String[] split = url.split("/"); - if (split.length <= 3) return ""; - - StringBuilder path = new StringBuilder(); - - for (int i = 3; i < split.length; i++) path.append(split[i]).append("/"); - - String pathStr = path.toString(); - if (pathStr.startsWith("/")) pathStr = pathStr.substring("/".length()); - if (pathStr.endsWith("/")) pathStr = pathStr.substring(0, pathStr.length() - "/".length()); - - return pathStr; - } -} \ No newline at end of file