diff --git a/src/main/java/org/openautonomousconnection/protocol/ProtocolBridge.java b/src/main/java/org/openautonomousconnection/protocol/ProtocolBridge.java index 811b1b2..062e64e 100644 --- a/src/main/java/org/openautonomousconnection/protocol/ProtocolBridge.java +++ b/src/main/java/org/openautonomousconnection/protocol/ProtocolBridge.java @@ -3,8 +3,10 @@ package org.openautonomousconnection.protocol; import dev.unlegitdqrk.unlegitlibrary.utils.Logger; import lombok.Getter; import lombok.Setter; +import org.openautonomousconnection.protocol.annotations.ProtocolInfo; import org.openautonomousconnection.protocol.listeners.ClientListener; import org.openautonomousconnection.protocol.listeners.DNSServerListener; +import org.openautonomousconnection.protocol.listeners.WebServerListener; import org.openautonomousconnection.protocol.packets.OACPacket; import org.openautonomousconnection.protocol.packets.v1_0_0.beta.AuthPacket; import org.openautonomousconnection.protocol.packets.v1_0_0.beta.GetDestinationPacket; @@ -16,7 +18,8 @@ import org.openautonomousconnection.protocol.side.dns.ProtocolDNSServer; import org.openautonomousconnection.protocol.side.web.ProtocolWebServer; import org.openautonomousconnection.protocol.versions.ProtocolVersion; import org.openautonomousconnection.protocol.versions.v1_0_0.classic.ClassicHandlerClient; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.ClassicHandlerServer; +import org.openautonomousconnection.protocol.versions.v1_0_0.classic.ClassicHandlerDNSServer; +import org.openautonomousconnection.protocol.versions.v1_0_0.classic.ClassicHandlerWebServer; import org.openautonomousconnection.protocol.versions.v1_0_0.classic.Classic_ClientListener; import java.io.File; @@ -41,11 +44,15 @@ public class ProtocolBridge { private ProtocolWebServer protocolWebServer; @Getter @Setter - private ClassicHandlerServer classicHandlerServer; + private ClassicHandlerDNSServer classicHandlerDNSServer; + @Getter + @Setter + private ClassicHandlerWebServer classicHandlerWebServer; @Getter @Setter private ClassicHandlerClient classicHandlerClient; + @ProtocolInfo(protocolSide = ProtocolVersion.ProtocolSide.DNS) public ProtocolBridge(ProtocolDNSServer protocolDNSServer, ProtocolSettings protocolSettings, ProtocolVersion protocolVersion, File logFolder) throws InvocationTargetException, InstantiationException, IllegalAccessException, NoSuchMethodException { this.protocolDNSServer = protocolDNSServer; this.protocolSettings = protocolSettings; @@ -62,6 +69,7 @@ public class ProtocolBridge { this.logger = tmpLogger; protocolSettings.eventManager.registerListener(new DNSServerListener()); + protocolSettings.eventManager.unregisterListener(new WebServerListener()); protocolSettings.eventManager.unregisterListener(new ClientListener()); if (!validateProtocolSide()) { @@ -75,6 +83,38 @@ public class ProtocolBridge { instance = this; } + @ProtocolInfo(protocolSide = ProtocolVersion.ProtocolSide.WEB) + public ProtocolBridge(ProtocolWebServer protocolWebServer, ProtocolSettings protocolSettings, ProtocolVersion protocolVersion, File logFolder) throws InvocationTargetException, InstantiationException, IllegalAccessException, NoSuchMethodException { + this.protocolWebServer = protocolWebServer; + this.protocolSettings = protocolSettings; + this.protocolVersion = protocolVersion; + + Logger tmpLogger = null; + try { + tmpLogger = new Logger(logFolder, false, true); + } catch (IOException | NoSuchFieldException | IllegalAccessException exception) { + exception.printStackTrace(); + tmpLogger = null; + System.exit(1); + } + + this.logger = tmpLogger; + protocolSettings.eventManager.unregisterListener(new DNSServerListener()); + protocolSettings.eventManager.registerListener(new WebServerListener()); + protocolSettings.eventManager.unregisterListener(new ClientListener()); + + if (!validateProtocolSide()) { + this.logger.error("Invalid protocol version '" + protocolVersion.toString() + "'!"); + System.exit(1); + } + + if (isClassicSupported()) protocolSettings.eventManager.unregisterListener(new Classic_ClientListener()); + registerPackets(); + + instance = this; + } + + @ProtocolInfo(protocolSide = ProtocolVersion.ProtocolSide.CLIENT) public ProtocolBridge(ProtocolClient protocolClient, ProtocolSettings protocolSettings, ProtocolVersion protocolVersion, File logFolder) throws InvocationTargetException, InstantiationException, IllegalAccessException, NoSuchMethodException { this.protocolClient = protocolClient; this.protocolSettings = protocolSettings; @@ -91,6 +131,7 @@ public class ProtocolBridge { this.logger = tmpLogger; protocolSettings.eventManager.registerListener(new ClientListener()); + protocolSettings.eventManager.unregisterListener(new WebServerListener()); protocolSettings.eventManager.unregisterListener(new DNSServerListener()); if (!validateProtocolSide()) { diff --git a/src/main/java/org/openautonomousconnection/protocol/annotations/ProtocolInfo.java b/src/main/java/org/openautonomousconnection/protocol/annotations/ProtocolInfo.java new file mode 100644 index 0000000..24235d8 --- /dev/null +++ b/src/main/java/org/openautonomousconnection/protocol/annotations/ProtocolInfo.java @@ -0,0 +1,9 @@ +package org.openautonomousconnection.protocol.annotations; + +import org.openautonomousconnection.protocol.versions.ProtocolVersion; + +public @interface ProtocolInfo { + + ProtocolVersion.ProtocolSide protocolSide() default ProtocolVersion.ProtocolSide.ALL; + +} diff --git a/src/main/java/org/openautonomousconnection/protocol/listeners/ClientListener.java b/src/main/java/org/openautonomousconnection/protocol/listeners/ClientListener.java index 51cde48..2bff565 100644 --- a/src/main/java/org/openautonomousconnection/protocol/listeners/ClientListener.java +++ b/src/main/java/org/openautonomousconnection/protocol/listeners/ClientListener.java @@ -5,10 +5,13 @@ import dev.unlegitdqrk.unlegitlibrary.event.Listener; import dev.unlegitdqrk.unlegitlibrary.network.system.client.events.ClientConnectedEvent; import dev.unlegitdqrk.unlegitlibrary.network.system.client.events.ClientDisconnectedEvent; import org.openautonomousconnection.protocol.ProtocolBridge; +import org.openautonomousconnection.protocol.annotations.ProtocolInfo; import org.openautonomousconnection.protocol.packets.v1_0_0.beta.AuthPacket; +import org.openautonomousconnection.protocol.versions.ProtocolVersion; import java.io.IOException; +@ProtocolInfo(protocolSide = ProtocolVersion.ProtocolSide.CLIENT) public class ClientListener extends EventListener { @Listener diff --git a/src/main/java/org/openautonomousconnection/protocol/listeners/DNSServerListener.java b/src/main/java/org/openautonomousconnection/protocol/listeners/DNSServerListener.java index 7bcbd08..11ed27a 100644 --- a/src/main/java/org/openautonomousconnection/protocol/listeners/DNSServerListener.java +++ b/src/main/java/org/openautonomousconnection/protocol/listeners/DNSServerListener.java @@ -5,8 +5,11 @@ import dev.unlegitdqrk.unlegitlibrary.event.Listener; import dev.unlegitdqrk.unlegitlibrary.network.system.server.events.ConnectionHandlerConnectedEvent; import dev.unlegitdqrk.unlegitlibrary.network.system.server.events.ConnectionHandlerDisconnectedEvent; import org.openautonomousconnection.protocol.ProtocolBridge; +import org.openautonomousconnection.protocol.annotations.ProtocolInfo; import org.openautonomousconnection.protocol.side.dns.ConnectedProtocolClient; +import org.openautonomousconnection.protocol.versions.ProtocolVersion; +@ProtocolInfo(protocolSide = ProtocolVersion.ProtocolSide.DNS) public class DNSServerListener extends EventListener { @Listener diff --git a/src/main/java/org/openautonomousconnection/protocol/listeners/WebServerListener.java b/src/main/java/org/openautonomousconnection/protocol/listeners/WebServerListener.java index dd7131c..9d63994 100644 --- a/src/main/java/org/openautonomousconnection/protocol/listeners/WebServerListener.java +++ b/src/main/java/org/openautonomousconnection/protocol/listeners/WebServerListener.java @@ -5,8 +5,11 @@ import dev.unlegitdqrk.unlegitlibrary.event.Listener; import dev.unlegitdqrk.unlegitlibrary.network.system.server.events.ConnectionHandlerConnectedEvent; import dev.unlegitdqrk.unlegitlibrary.network.system.server.events.ConnectionHandlerDisconnectedEvent; import org.openautonomousconnection.protocol.ProtocolBridge; +import org.openautonomousconnection.protocol.annotations.ProtocolInfo; import org.openautonomousconnection.protocol.side.web.ConnectedWebClient; +import org.openautonomousconnection.protocol.versions.ProtocolVersion; +@ProtocolInfo(protocolSide = ProtocolVersion.ProtocolSide.WEB) public class WebServerListener extends EventListener { @Listener diff --git a/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/beta/UnsupportedClassicPacket.java b/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/beta/UnsupportedClassicPacket.java index 23a922e..ef27178 100644 --- a/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/beta/UnsupportedClassicPacket.java +++ b/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/beta/UnsupportedClassicPacket.java @@ -50,8 +50,11 @@ public class UnsupportedClassicPacket extends OACPacket { } if (ProtocolBridge.getInstance().isRunningAsDNSServer()) - ProtocolBridge.getInstance().getClassicHandlerServer().unsupportedClassicPacket(className, content, ProtocolBridge.getInstance().getProtocolDNSServer().getClientByID(clientID)); + ProtocolBridge.getInstance().getClassicHandlerDNSServer().unsupportedClassicPacket(className, content, ProtocolBridge.getInstance().getProtocolDNSServer().getClientByID(clientID)); else if (ProtocolBridge.getInstance().isRunningAsClient()) ProtocolBridge.getInstance().getClassicHandlerClient().unsupportedClassicPacket(className, content); + else if (ProtocolBridge.getInstance().isRunningAsWebServer()) + ProtocolBridge.getInstance().getClassicHandlerWebServer().unsupportedClassicPacket(className, content, ProtocolBridge.getInstance().getProtocolDNSServer().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 index a99c774..c0b82ce 100644 --- a/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/classic/Classic_DomainPacket.java +++ b/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/classic/Classic_DomainPacket.java @@ -56,7 +56,7 @@ public class Classic_DomainPacket extends OACPacket { Classic_ProtocolVersion protocolVersion = (Classic_ProtocolVersion) objectInputStream.readObject(); try { - domain = ProtocolBridge.getInstance().getClassicHandlerServer().getDomain(requestDomain); + domain = ProtocolBridge.getInstance().getClassicHandlerDNSServer().getDomain(requestDomain); } catch (SQLException exception) { exception.printStackTrace(); } @@ -74,6 +74,12 @@ public class Classic_DomainPacket extends OACPacket { Classic_ProtocolVersion protocolVersion = (Classic_ProtocolVersion) objectInputStream.readObject(); ProtocolBridge.getInstance().getProtocolClient().getClientDNSConnection().getEventManager().executeEvent(new Classic_DomainPacketReceivedEvent(protocolVersion, domain, requestDomain, clientID)); + } else if (ProtocolBridge.getInstance().isRunningAsWebServer()) { + clientID = objectInputStream.readInt(); + requestDomain = (Classic_RequestDomain) objectInputStream.readObject(); + Classic_ProtocolVersion protocolVersion = (Classic_ProtocolVersion) objectInputStream.readObject(); + + ProtocolBridge.getInstance().getProtocolWebServer().getPipelineServer().getConnectionHandlerByID(clientID).sendPacket(new UnsupportedClassicPacket(Classic_PingPacket.class, new Object[]{clientID, requestDomain, domain})); } } } diff --git a/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/classic/Classic_MessagePacket.java b/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/classic/Classic_MessagePacket.java index dc1a289..dad624a 100644 --- a/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/classic/Classic_MessagePacket.java +++ b/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/classic/Classic_MessagePacket.java @@ -27,7 +27,7 @@ public class Classic_MessagePacket extends OACPacket { @Override public void onWrite(PacketHandler packetHandler, ObjectOutputStream objectOutputStream) throws IOException, ClassNotFoundException { - if (ProtocolBridge.getInstance().isRunningAsDNSServer()) objectOutputStream.writeInt(clientID); + if (ProtocolBridge.getInstance().isRunningAsDNSServer() || ProtocolBridge.getInstance().isRunningAsWebServer()) objectOutputStream.writeInt(clientID); else if (ProtocolBridge.getInstance().isRunningAsClient()) { clientID = ProtocolBridge.getInstance().getProtocolClient().getClientDNSConnection().getClientID(); objectOutputStream.writeInt(clientID); @@ -44,13 +44,19 @@ public class Classic_MessagePacket extends OACPacket { String message = objectInputStream.readUTF(); Classic_ProtocolVersion protocolVersion = (Classic_ProtocolVersion) objectInputStream.readObject(); - ProtocolBridge.getInstance().getClassicHandlerServer().handleMessage(ProtocolBridge.getInstance().getProtocolDNSServer().getClientByID(clientID), message, protocolVersion); + ProtocolBridge.getInstance().getClassicHandlerDNSServer().handleMessage(ProtocolBridge.getInstance().getProtocolDNSServer().getClientByID(clientID), message, protocolVersion); } else if (ProtocolBridge.getInstance().isRunningAsClient()) { clientID = objectInputStream.readInt(); String message = objectInputStream.readUTF(); Classic_ProtocolVersion protocolVersion = (Classic_ProtocolVersion) objectInputStream.readObject(); - ProtocolBridge.getInstance().getClassicHandlerClient().handleMessage(message); + ProtocolBridge.getInstance().getClassicHandlerClient().handleMessage(message, protocolVersion); + } else if (ProtocolBridge.getInstance().isRunningAsWebServer()) { + clientID = objectInputStream.readInt(); + String message = objectInputStream.readUTF(); + Classic_ProtocolVersion protocolVersion = (Classic_ProtocolVersion) objectInputStream.readObject(); + + ProtocolBridge.getInstance().getClassicHandlerWebServer().handleMessage(ProtocolBridge.getInstance().getProtocolDNSServer().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 index 94d10bd..8dbdadc 100644 --- a/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/classic/Classic_PingPacket.java +++ b/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/classic/Classic_PingPacket.java @@ -60,7 +60,7 @@ public class Classic_PingPacket extends OACPacket { protocolVersion = (Classic_ProtocolVersion) objectInputStream.readObject(); try { - domain = ProtocolBridge.getInstance().getClassicHandlerServer().ping(requestDomain); + domain = ProtocolBridge.getInstance().getClassicHandlerDNSServer().ping(requestDomain); } catch (SQLException exception) { exception.printStackTrace(); } @@ -80,6 +80,12 @@ public class Classic_PingPacket extends OACPacket { ProtocolBridge.getInstance().getProtocolClient().validationCompleted(domain.getDomain(), reachable ? DNSResponseCode.RESPONSE_DOMAIN_FULLY_EXIST : DNSResponseCode.RESPONSE_DOMAIN_FULLY_NOT_EXIST); ProtocolBridge.getInstance().getProtocolClient().getClientDNSConnection().getEventManager().executeEvent(new Classic_PingPacketReceivedEvent(protocolVersion, domain, requestDomain, reachable, clientID)); + } else if (ProtocolBridge.getInstance().isRunningAsWebServer()) { + clientID = objectInputStream.readInt(); + requestDomain = (Classic_RequestDomain) objectInputStream.readObject(); + protocolVersion = (Classic_ProtocolVersion) objectInputStream.readObject(); + + ProtocolBridge.getInstance().getProtocolWebServer().getPipelineServer().getConnectionHandlerByID(clientID).sendPacket(new UnsupportedClassicPacket(Classic_PingPacket.class, new Object[]{requestDomain})); } } } diff --git a/src/main/java/org/openautonomousconnection/protocol/side/client/ProtocolClient.java b/src/main/java/org/openautonomousconnection/protocol/side/client/ProtocolClient.java index 25e504a..22cb007 100644 --- a/src/main/java/org/openautonomousconnection/protocol/side/client/ProtocolClient.java +++ b/src/main/java/org/openautonomousconnection/protocol/side/client/ProtocolClient.java @@ -6,6 +6,7 @@ import dev.unlegitdqrk.unlegitlibrary.network.utils.NetworkUtils; import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider; import lombok.Getter; import org.openautonomousconnection.protocol.ProtocolBridge; +import org.openautonomousconnection.protocol.annotations.ProtocolInfo; import org.openautonomousconnection.protocol.exceptions.UnsupportedProtocolException; import org.openautonomousconnection.protocol.packets.OACPacket; import org.openautonomousconnection.protocol.packets.v1_0_0.beta.GetDestinationPacket; @@ -22,6 +23,7 @@ import java.io.FileNotFoundException; import java.io.IOException; import java.security.cert.CertificateException; +@ProtocolInfo(protocolSide = ProtocolVersion.ProtocolSide.DNS) public abstract class ProtocolClient extends DefaultMethodsOverrider { private final NetworkClient clientToDNS; // Handles everything with DNS-Connection @Getter diff --git a/src/main/java/org/openautonomousconnection/protocol/side/client/WebClient.java b/src/main/java/org/openautonomousconnection/protocol/side/client/WebClient.java index c2496bd..8e0ca05 100644 --- a/src/main/java/org/openautonomousconnection/protocol/side/client/WebClient.java +++ b/src/main/java/org/openautonomousconnection/protocol/side/client/WebClient.java @@ -2,6 +2,8 @@ package org.openautonomousconnection.protocol.side.client; import dev.unlegitdqrk.unlegitlibrary.network.system.client.NetworkClient; import org.openautonomousconnection.protocol.ProtocolBridge; +import org.openautonomousconnection.protocol.annotations.ProtocolInfo; +import org.openautonomousconnection.protocol.versions.ProtocolVersion; import org.openautonomousconnection.protocol.versions.v1_0_0.beta.Domain; import javax.net.ssl.SSLParameters; @@ -15,6 +17,7 @@ import java.net.InetSocketAddress; import java.net.Proxy; import java.net.Socket; +@ProtocolInfo(protocolSide = ProtocolVersion.ProtocolSide.DNS) public final class WebClient { private final NetworkClient clientToWebPipeline; // Handles everything with Pipeline-Connection private SSLSocket clientToWebServer; // Handles everything with Web-Connection diff --git a/src/main/java/org/openautonomousconnection/protocol/side/client/events/ConnectedToProtocolServer.java b/src/main/java/org/openautonomousconnection/protocol/side/client/events/ConnectedToProtocolServer.java index 8d6eb93..4cbfd36 100644 --- a/src/main/java/org/openautonomousconnection/protocol/side/client/events/ConnectedToProtocolServer.java +++ b/src/main/java/org/openautonomousconnection/protocol/side/client/events/ConnectedToProtocolServer.java @@ -1,6 +1,9 @@ package org.openautonomousconnection.protocol.side.client.events; import dev.unlegitdqrk.unlegitlibrary.event.impl.Event; +import org.openautonomousconnection.protocol.annotations.ProtocolInfo; +import org.openautonomousconnection.protocol.versions.ProtocolVersion; +@ProtocolInfo(protocolSide = ProtocolVersion.ProtocolSide.DNS) public class ConnectedToProtocolServer extends Event { } diff --git a/src/main/java/org/openautonomousconnection/protocol/side/dns/ConnectedProtocolClient.java b/src/main/java/org/openautonomousconnection/protocol/side/dns/ConnectedProtocolClient.java index 14ed7a9..66d2d7e 100644 --- a/src/main/java/org/openautonomousconnection/protocol/side/dns/ConnectedProtocolClient.java +++ b/src/main/java/org/openautonomousconnection/protocol/side/dns/ConnectedProtocolClient.java @@ -2,9 +2,11 @@ package org.openautonomousconnection.protocol.side.dns; import dev.unlegitdqrk.unlegitlibrary.network.system.server.ConnectionHandler; import lombok.Getter; +import org.openautonomousconnection.protocol.annotations.ProtocolInfo; import org.openautonomousconnection.protocol.packets.OACPacket; import org.openautonomousconnection.protocol.versions.ProtocolVersion; +@ProtocolInfo(protocolSide = ProtocolVersion.ProtocolSide.DNS) public final class ConnectedProtocolClient { @Getter diff --git a/src/main/java/org/openautonomousconnection/protocol/side/dns/ProtocolDNSServer.java b/src/main/java/org/openautonomousconnection/protocol/side/dns/ProtocolDNSServer.java index 144f21a..104a589 100644 --- a/src/main/java/org/openautonomousconnection/protocol/side/dns/ProtocolDNSServer.java +++ b/src/main/java/org/openautonomousconnection/protocol/side/dns/ProtocolDNSServer.java @@ -6,6 +6,8 @@ import dev.unlegitdqrk.unlegitlibrary.network.utils.NetworkUtils; import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider; import lombok.Getter; import org.openautonomousconnection.protocol.ProtocolBridge; +import org.openautonomousconnection.protocol.annotations.ProtocolInfo; +import org.openautonomousconnection.protocol.versions.ProtocolVersion; import org.openautonomousconnection.protocol.versions.v1_0_0.beta.DNSResponseCode; import org.openautonomousconnection.protocol.versions.v1_0_0.beta.Domain; @@ -16,6 +18,7 @@ import java.security.cert.CertificateException; import java.util.ArrayList; import java.util.List; +@ProtocolInfo(protocolSide = ProtocolVersion.ProtocolSide.DNS) public abstract class ProtocolDNSServer extends DefaultMethodsOverrider { @Getter private final NetworkServer networkServer; diff --git a/src/main/java/org/openautonomousconnection/protocol/side/dns/events/ConnectedProtocolClientEvent.java b/src/main/java/org/openautonomousconnection/protocol/side/dns/events/ConnectedProtocolClientEvent.java index 9839409..f5a618c 100644 --- a/src/main/java/org/openautonomousconnection/protocol/side/dns/events/ConnectedProtocolClientEvent.java +++ b/src/main/java/org/openautonomousconnection/protocol/side/dns/events/ConnectedProtocolClientEvent.java @@ -2,8 +2,11 @@ package org.openautonomousconnection.protocol.side.dns.events; import dev.unlegitdqrk.unlegitlibrary.event.impl.Event; import lombok.Getter; +import org.openautonomousconnection.protocol.annotations.ProtocolInfo; import org.openautonomousconnection.protocol.side.dns.ConnectedProtocolClient; +import org.openautonomousconnection.protocol.versions.ProtocolVersion; +@ProtocolInfo(protocolSide = ProtocolVersion.ProtocolSide.DNS) public final class ConnectedProtocolClientEvent extends Event { @Getter 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 446ed23..30954d0 100644 --- a/src/main/java/org/openautonomousconnection/protocol/side/web/ConnectedWebClient.java +++ b/src/main/java/org/openautonomousconnection/protocol/side/web/ConnectedWebClient.java @@ -3,6 +3,7 @@ package org.openautonomousconnection.protocol.side.web; import dev.unlegitdqrk.unlegitlibrary.network.system.server.ConnectionHandler; import lombok.Getter; import org.openautonomousconnection.protocol.ProtocolBridge; +import org.openautonomousconnection.protocol.annotations.ProtocolInfo; import org.openautonomousconnection.protocol.packets.OACPacket; import org.openautonomousconnection.protocol.side.web.managers.AuthManager; import org.openautonomousconnection.protocol.side.web.managers.RuleManager; @@ -17,6 +18,7 @@ import java.nio.file.Files; import java.util.HashMap; import java.util.Map; +@ProtocolInfo(protocolSide = ProtocolVersion.ProtocolSide.WEB) public final class ConnectedWebClient { @Getter 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 85e544a..678c49e 100644 --- a/src/main/java/org/openautonomousconnection/protocol/side/web/ProtocolWebServer.java +++ b/src/main/java/org/openautonomousconnection/protocol/side/web/ProtocolWebServer.java @@ -6,8 +6,10 @@ import dev.unlegitdqrk.unlegitlibrary.network.system.server.NetworkServer; import dev.unlegitdqrk.unlegitlibrary.network.utils.NetworkUtils; import lombok.Getter; import org.openautonomousconnection.protocol.ProtocolBridge; +import org.openautonomousconnection.protocol.annotations.ProtocolInfo; import org.openautonomousconnection.protocol.side.web.managers.AuthManager; import org.openautonomousconnection.protocol.side.web.managers.RuleManager; +import org.openautonomousconnection.protocol.versions.ProtocolVersion; import javax.net.ssl.SSLServerSocket; import javax.net.ssl.SSLSocket; @@ -18,6 +20,7 @@ import java.security.cert.CertificateException; import java.util.ArrayList; import java.util.List; +@ProtocolInfo(protocolSide = ProtocolVersion.ProtocolSide.WEB) public class ProtocolWebServer { @Getter private final File contentFolder; diff --git a/src/main/java/org/openautonomousconnection/protocol/side/web/events/ConnectedWebClientEvent.java b/src/main/java/org/openautonomousconnection/protocol/side/web/events/ConnectedWebClientEvent.java index 4cfeb92..2353e8c 100644 --- a/src/main/java/org/openautonomousconnection/protocol/side/web/events/ConnectedWebClientEvent.java +++ b/src/main/java/org/openautonomousconnection/protocol/side/web/events/ConnectedWebClientEvent.java @@ -2,8 +2,11 @@ package org.openautonomousconnection.protocol.side.web.events; import dev.unlegitdqrk.unlegitlibrary.event.impl.Event; import lombok.Getter; +import org.openautonomousconnection.protocol.annotations.ProtocolInfo; import org.openautonomousconnection.protocol.side.web.ConnectedWebClient; +import org.openautonomousconnection.protocol.versions.ProtocolVersion; +@ProtocolInfo(protocolSide = ProtocolVersion.ProtocolSide.WEB) public final class ConnectedWebClientEvent extends Event { @Getter diff --git a/src/main/java/org/openautonomousconnection/protocol/side/web/managers/AuthManager.java b/src/main/java/org/openautonomousconnection/protocol/side/web/managers/AuthManager.java index fe20f13..8a88b7b 100644 --- a/src/main/java/org/openautonomousconnection/protocol/side/web/managers/AuthManager.java +++ b/src/main/java/org/openautonomousconnection/protocol/side/web/managers/AuthManager.java @@ -1,5 +1,8 @@ package org.openautonomousconnection.protocol.side.web.managers; +import org.openautonomousconnection.protocol.annotations.ProtocolInfo; +import org.openautonomousconnection.protocol.versions.ProtocolVersion; + import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets; @@ -8,6 +11,7 @@ import java.security.MessageDigest; import java.util.HashMap; import java.util.Map; +@ProtocolInfo(protocolSide = ProtocolVersion.ProtocolSide.WEB) public class AuthManager { private static final Map users = new HashMap<>(); diff --git a/src/main/java/org/openautonomousconnection/protocol/side/web/managers/RuleManager.java b/src/main/java/org/openautonomousconnection/protocol/side/web/managers/RuleManager.java index 020cd82..bbc3a3a 100644 --- a/src/main/java/org/openautonomousconnection/protocol/side/web/managers/RuleManager.java +++ b/src/main/java/org/openautonomousconnection/protocol/side/web/managers/RuleManager.java @@ -2,12 +2,15 @@ package org.openautonomousconnection.protocol.side.web.managers; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; +import org.openautonomousconnection.protocol.annotations.ProtocolInfo; +import org.openautonomousconnection.protocol.versions.ProtocolVersion; import java.io.File; import java.nio.file.Files; import java.util.List; import java.util.Map; +@ProtocolInfo(protocolSide = ProtocolVersion.ProtocolSide.WEB) public class RuleManager { private static List allow; private static List deny; 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 e34c7ad..ad6dde7 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 @@ -1,6 +1,8 @@ package org.openautonomousconnection.protocol.side.web.managers; import lombok.Getter; +import org.openautonomousconnection.protocol.annotations.ProtocolInfo; +import org.openautonomousconnection.protocol.versions.ProtocolVersion; import java.io.IOException; import java.security.SecureRandom; @@ -8,6 +10,7 @@ import java.util.Base64; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +@ProtocolInfo(protocolSide = ProtocolVersion.ProtocolSide.WEB) public class SessionManager { private static final Map sessions = new ConcurrentHashMap<>(); diff --git a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/beta/Domain.java b/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/beta/Domain.java index dd6ff84..d190bcf 100644 --- a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/beta/Domain.java +++ b/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/beta/Domain.java @@ -2,6 +2,8 @@ package org.openautonomousconnection.protocol.versions.v1_0_0.beta; import lombok.Getter; import org.openautonomousconnection.protocol.ProtocolBridge; +import org.openautonomousconnection.protocol.annotations.ProtocolInfo; +import org.openautonomousconnection.protocol.versions.ProtocolVersion; import java.io.Serializable; import java.util.Arrays; @@ -77,6 +79,7 @@ public class Domain implements Serializable { domain.getTopLevelName().equalsIgnoreCase(this.topLevelName) && domain.getProtocol().equalsIgnoreCase(this.protocol); } + @ProtocolInfo(protocolSide = ProtocolVersion.ProtocolSide.DNS) public final String getDestination() { if (ProtocolBridge.getInstance().isRunningAsClient() || ProtocolBridge.getInstance().isRunningAsWebServer()) return DNSResponseCode.RESPONSE_INVALID_REQUEST.toString(); diff --git a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/ClassicHandlerClient.java b/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/ClassicHandlerClient.java index 4bd9c92..21dcbfb 100644 --- a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/ClassicHandlerClient.java +++ b/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/ClassicHandlerClient.java @@ -1,17 +1,21 @@ package org.openautonomousconnection.protocol.versions.v1_0_0.classic; import org.openautonomousconnection.protocol.ProtocolBridge; +import org.openautonomousconnection.protocol.annotations.ProtocolInfo; import org.openautonomousconnection.protocol.packets.v1_0_0.classic.Classic_MessagePacket; +import org.openautonomousconnection.protocol.versions.ProtocolVersion; import java.io.IOException; + +@ProtocolInfo(protocolSide = ProtocolVersion.ProtocolSide.CLIENT) public abstract class ClassicHandlerClient { 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); + public abstract void handleMessage(String message, Classic_ProtocolVersion protocolVersion); public final void sendMessage(String message) throws IOException, ClassNotFoundException { ProtocolBridge.getInstance().getProtocolClient().getClientDNSConnection().sendPacket(new Classic_MessagePacket(message, 0)); diff --git a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/ClassicHandlerServer.java b/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/ClassicHandlerDNSServer.java similarity index 71% rename from src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/ClassicHandlerServer.java rename to src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/ClassicHandlerDNSServer.java index 690d4ff..7632954 100644 --- a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/ClassicHandlerServer.java +++ b/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/ClassicHandlerDNSServer.java @@ -1,10 +1,13 @@ package org.openautonomousconnection.protocol.versions.v1_0_0.classic; +import org.openautonomousconnection.protocol.annotations.ProtocolInfo; import org.openautonomousconnection.protocol.side.dns.ConnectedProtocolClient; +import org.openautonomousconnection.protocol.versions.ProtocolVersion; import java.sql.SQLException; -public abstract class ClassicHandlerServer { +@ProtocolInfo(protocolSide = ProtocolVersion.ProtocolSide.DNS) +public abstract class ClassicHandlerDNSServer { public abstract void handleMessage(ConnectedProtocolClient client, String message, Classic_ProtocolVersion protocolVersion); public abstract Classic_Domain getDomain(Classic_RequestDomain requestDomain) throws SQLException; diff --git a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/ClassicHandlerWebServer.java b/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/ClassicHandlerWebServer.java new file mode 100644 index 0000000..d43e94f --- /dev/null +++ b/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/ClassicHandlerWebServer.java @@ -0,0 +1,14 @@ +package org.openautonomousconnection.protocol.versions.v1_0_0.classic; + +import org.openautonomousconnection.protocol.annotations.ProtocolInfo; +import org.openautonomousconnection.protocol.side.dns.ConnectedProtocolClient; +import org.openautonomousconnection.protocol.versions.ProtocolVersion; + +import java.sql.SQLException; + +@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); +}