diff --git a/pom.xml b/pom.xml index 3a0dbf7..d9723b6 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ org.openautonomousconnection protocol - 1.0.0-BETA.4 + 1.0.0-BETA.5 Open Autonomous Connection https://open-autonomous-connection.org/ diff --git a/src/main/java/org/openautonomousconnection/protocol/ProtocolBridge.java b/src/main/java/org/openautonomousconnection/protocol/ProtocolBridge.java index a06e567..cc67301 100644 --- a/src/main/java/org/openautonomousconnection/protocol/ProtocolBridge.java +++ b/src/main/java/org/openautonomousconnection/protocol/ProtocolBridge.java @@ -24,7 +24,6 @@ import org.openautonomousconnection.protocol.versions.v1_0_0.classic.utils.Class import java.io.File; import java.io.IOException; -import java.lang.reflect.InvocationTargetException; /** * The main bridge class for the protocol connection. @@ -97,10 +96,11 @@ public final class ProtocolBridge { /** * Initialize the ProtocolBridge instance for the DNS server side + * * @param protocolDNSServer The ProtocolDNSServer instance - * @param protocolSettings The ProtocolSettings instance - * @param protocolVersion The ProtocolVersion instance - * @param logFolder The folder to store the log files + * @param protocolSettings 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.DNS) @@ -124,10 +124,11 @@ public final class ProtocolBridge { /** * Initialize the ProtocolBridge instance for the web server side + * * @param protocolWebServer The ProtocolWebServer instance - * @param protocolSettings The ProtocolSettings instance - * @param protocolVersion The ProtocolVersion instance - * @param logFolder The folder to store the log files + * @param protocolSettings 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.WEB) @@ -151,10 +152,11 @@ public final class ProtocolBridge { /** * Initialize the ProtocolBridge instance for the client side - * @param protocolClient The ProtocolClient instance + * + * @param protocolClient The ProtocolClient instance * @param protocolSettings The ProtocolSettings instance - * @param protocolVersion The ProtocolVersion instance - * @param logFolder The folder to store the log files + * @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) @@ -196,13 +198,17 @@ public final class ProtocolBridge { GetDestinationPacket v100bGetDestinationPacket = new GetDestinationPacket(); if (isPacketSupported(v100bAuthPath)) protocolSettings.packetHandler.registerPacket(v100bAuthPath); - if (isPacketSupported(v100bUnsupportedClassicPacket)) protocolSettings.packetHandler.registerPacket(v100bUnsupportedClassicPacket); - if (isPacketSupported(v100bValidateDomainPacket)) protocolSettings.packetHandler.registerPacket(v100bValidateDomainPacket); - if (isPacketSupported(v100bGetDestinationPacket)) protocolSettings.packetHandler.registerPacket(v100bGetDestinationPacket); + if (isPacketSupported(v100bUnsupportedClassicPacket)) + protocolSettings.packetHandler.registerPacket(v100bUnsupportedClassicPacket); + if (isPacketSupported(v100bValidateDomainPacket)) + protocolSettings.packetHandler.registerPacket(v100bValidateDomainPacket); + if (isPacketSupported(v100bGetDestinationPacket)) + protocolSettings.packetHandler.registerPacket(v100bGetDestinationPacket); } /** * Register the appropriate listeners based on the current side + * * @throws Exception if an error occurs while registering the listeners */ private void registerListeners() throws Exception { @@ -234,6 +240,7 @@ public final class ProtocolBridge { /** * Initialize the logger instance + * * @param logFolder The folder to store the log files */ private void initializeLogger(File logFolder) { @@ -268,9 +275,10 @@ public final class ProtocolBridge { /** * Check if the classic protocol is supported by the current protocol version + * * @return true if the classic protocol is supported, false otherwise */ - public final boolean isClassicSupported() { + public boolean isClassicSupported() { boolean yes = false; for (ProtocolVersion compatibleVersion : protocolVersion.getCompatibleVersions()) { // Check if the compatible version is classic @@ -284,10 +292,11 @@ public final class ProtocolBridge { /** * Check if the target protocol is supported by the current protocol version + * * @param protocol The target protocol to check * @return true If the target protocol is supported, false otherwise */ - public final boolean isProtocolSupported(ProtocolVersion.Protocol protocol) { + public boolean isProtocolSupported(ProtocolVersion.Protocol protocol) { boolean yes = false; for (ProtocolVersion compatibleVersion : protocolVersion.getCompatibleVersions()) { // Check if the compatible version supports the target protocol @@ -301,25 +310,28 @@ public final class ProtocolBridge { /** * Check if the target packet is supported by the current protocol version + * * @param packet The target packet to check * @return true if the target packet is supported, false otherwise */ - public final boolean isPacketSupported(OACPacket packet) { + public boolean isPacketSupported(OACPacket packet) { return isVersionSupported(packet.getProtocolVersion()); } /** * Check if the target protocol version is supported by the current protocol version + * * @param targetVersion The target protocol version to check * @return true if the target protocol version is supported, false otherwise */ - public final boolean isVersionSupported(ProtocolVersion targetVersion) { + public boolean isVersionSupported(ProtocolVersion targetVersion) { // Check if the target protocol version is the same as the current protocol version or if it is in the list of compatible versions return protocolVersion == targetVersion || protocolVersion.getCompatibleVersions().contains(targetVersion); } /** * Validate if the protocol version is valid for the current side + * * @return true if the protocol version is valid for the current side, false otherwise */ private boolean validateProtocolSide() { @@ -342,25 +354,28 @@ public final class ProtocolBridge { /** * Check if the current instance is running as a DNS server + * * @return true if the current instance is running as a DNS server, false otherwise */ - public final boolean isRunningAsDNSServer() { + public boolean isRunningAsDNSServer() { return protocolDNSServer != null; } /** * Check if the current instance is running as a client + * * @return true if the current instance is running as a client, false otherwise */ - public final boolean isRunningAsClient() { + public boolean isRunningAsClient() { return protocolClient != null; } /** * Check if the current instance is running as a web server + * * @return true if the current instance is running as a web server, false otherwise */ - public final boolean isRunningAsWebServer() { + public boolean isRunningAsWebServer() { return protocolWebServer != null; } } diff --git a/src/main/java/org/openautonomousconnection/protocol/annotations/ProtocolInfo.java b/src/main/java/org/openautonomousconnection/protocol/annotations/ProtocolInfo.java index d357f02..0770f47 100644 --- a/src/main/java/org/openautonomousconnection/protocol/annotations/ProtocolInfo.java +++ b/src/main/java/org/openautonomousconnection/protocol/annotations/ProtocolInfo.java @@ -14,6 +14,7 @@ public @interface ProtocolInfo { /** * Specifies the side of the protocol that the annotated class or method is associated with. * Default is ALL, indicating that it can be used on any side. + * * @return The protocol side. */ ProtocolVersion.ProtocolSide protocolSide() default ProtocolVersion.ProtocolSide.ALL; diff --git a/src/main/java/org/openautonomousconnection/protocol/annotations/processing/CallTracker.java b/src/main/java/org/openautonomousconnection/protocol/annotations/processing/CallTracker.java index eeb0be9..67404e1 100644 --- a/src/main/java/org/openautonomousconnection/protocol/annotations/processing/CallTracker.java +++ b/src/main/java/org/openautonomousconnection/protocol/annotations/processing/CallTracker.java @@ -36,21 +36,16 @@ public class CallTracker extends GenericReflectClass { } public abstract static class CallInterceptor { - private static Set interceptors = new HashSet<>(); + private static final Set interceptors = new HashSet<>(); public CallInterceptor() { interceptors.add(this); } - /** - * Code executed on any method call - */ - public abstract void onCall(Method method, @Nullable StackTraceElement callerMethod); - @Advice.OnMethodEnter static void intercept(@Advice.Origin Method method) { - for(CallInterceptor interceptor : interceptors) { + for (CallInterceptor interceptor : interceptors) { StackTraceElement[] stack = Thread.currentThread().getStackTrace(); if (stack.length <= 3) @@ -79,5 +74,10 @@ public class CallTracker extends GenericReflectClass { // // } } + + /** + * Code executed on any method call + */ + public abstract void onCall(Method method, @Nullable StackTraceElement callerMethod); } } diff --git a/src/main/java/org/openautonomousconnection/protocol/annotations/processing/ProtocolInfoProcessing.java b/src/main/java/org/openautonomousconnection/protocol/annotations/processing/ProtocolInfoProcessing.java index 4e32ace..17d0316 100644 --- a/src/main/java/org/openautonomousconnection/protocol/annotations/processing/ProtocolInfoProcessing.java +++ b/src/main/java/org/openautonomousconnection/protocol/annotations/processing/ProtocolInfoProcessing.java @@ -41,42 +41,41 @@ public class ProtocolInfoProcessing extends AnnotationProcessor { Object o; - if((o = methodGetByName(callerMethod.getMethodName())) != null) + if ((o = methodGetByName(callerMethod.getMethodName())) != null) callerSide = ((Method) o).getAnnotation(ProtocolInfo.class).protocolSide(); - else if((o = typeHasAnnotation(callerMethod.getClassName())) != null) + else if ((o = typeHasAnnotation(callerMethod.getClassName())) != null) callerSide = ((Class) o).getAnnotation(ProtocolInfo.class).protocolSide(); else return; - if(methodReferences.get().contains(method)) + if (methodReferences.get().contains(method)) side = method.getAnnotation(ProtocolInfo.class).protocolSide(); - else if(typeReferences.get().contains(method.getDeclaringClass())) + else if (typeReferences.get().contains(method.getDeclaringClass())) side = method.getDeclaringClass().getAnnotation(ProtocolInfo.class).protocolSide(); else return; - if(callerSide.equals(ProtocolVersion.ProtocolSide.CLIENT) && + if (callerSide.equals(ProtocolVersion.ProtocolSide.CLIENT) && !side.equals(callerSide)) throw new IncompatibleProtocolSideException(callerSide, side); - } }); } private Method methodGetByName(String methodName) { - for(Method method : this.annotatedMethods) - if(method.getName().equals(methodName)) + for (Method method : this.annotatedMethods) + if (method.getName().equals(methodName)) return method; return null; } private Class typeHasAnnotation(String typeName) { - for(Class type : this.annotatedTypes) - if(type.getName().equals(typeName)) + for (Class type : this.annotatedTypes) + if (type.getName().equals(typeName)) return type; return null; } diff --git a/src/main/java/org/openautonomousconnection/protocol/listeners/ClientListener.java b/src/main/java/org/openautonomousconnection/protocol/listeners/ClientListener.java index b9c6299..ee5cc99 100644 --- a/src/main/java/org/openautonomousconnection/protocol/listeners/ClientListener.java +++ b/src/main/java/org/openautonomousconnection/protocol/listeners/ClientListener.java @@ -20,6 +20,7 @@ public final class ClientListener extends EventListener { /** * Handles the event when a client connects. * Sends an authentication packet to the server. + * * @param event The client connected event. */ @Listener @@ -35,6 +36,7 @@ public final class ClientListener extends EventListener { /** * Handles the event when a client disconnects. * Notifies the protocol client of the disconnection. + * * @param event The client disconnected event. */ @Listener diff --git a/src/main/java/org/openautonomousconnection/protocol/listeners/DNSServerListener.java b/src/main/java/org/openautonomousconnection/protocol/listeners/DNSServerListener.java index e33143a..09cea1d 100644 --- a/src/main/java/org/openautonomousconnection/protocol/listeners/DNSServerListener.java +++ b/src/main/java/org/openautonomousconnection/protocol/listeners/DNSServerListener.java @@ -18,6 +18,7 @@ public final class DNSServerListener extends EventListener { /** * Handles the event when a connection handler connects to the DNS server. * Adds the connected client to the ProtocolBridge's DNS server client list. + * * @param event The connection handler connected event. */ @Listener @@ -28,6 +29,7 @@ public final class DNSServerListener extends EventListener { /** * Handles the event when a connection handler disconnects from the DNS server. * Removes the disconnected client from the ProtocolBridge's DNS server client list. + * * @param event The connection handler disconnected event. */ @Listener diff --git a/src/main/java/org/openautonomousconnection/protocol/listeners/WebServerListener.java b/src/main/java/org/openautonomousconnection/protocol/listeners/WebServerListener.java index 616eb27..465dcf2 100644 --- a/src/main/java/org/openautonomousconnection/protocol/listeners/WebServerListener.java +++ b/src/main/java/org/openautonomousconnection/protocol/listeners/WebServerListener.java @@ -18,6 +18,7 @@ public final class WebServerListener extends EventListener { /** * Handles the event when a connection is established. * Adds the connected client to the protocol web server's client list. + * * @param event The connection handler connected event. */ @Listener @@ -28,6 +29,7 @@ public final class WebServerListener extends EventListener { /** * Handles the event when a connection is disconnected. * Removes the disconnected client from the protocol web server's client list. + * * @param event The connection handler disconnected event. */ @Listener diff --git a/src/main/java/org/openautonomousconnection/protocol/packets/OACPacket.java b/src/main/java/org/openautonomousconnection/protocol/packets/OACPacket.java index 340c7a5..a545be5 100644 --- a/src/main/java/org/openautonomousconnection/protocol/packets/OACPacket.java +++ b/src/main/java/org/openautonomousconnection/protocol/packets/OACPacket.java @@ -29,6 +29,7 @@ public abstract class OACPacket extends Packet { /** * Constructor for OACPacket. + * * @param id The unique identifier for the packet. * @param protocolVersion The protocol version associated with this packet. */ @@ -39,6 +40,7 @@ public abstract class OACPacket extends Packet { /** * Gets the response code for the packet. + * * @return The DNSResponseCode associated with the packet. */ protected final DNSResponseCode getResponseCode() { @@ -47,6 +49,7 @@ public abstract class OACPacket extends Packet { /** * Sets the response code for the packet. + * * @param responseCode The DNSResponseCode to set for the packet. */ protected final void setResponseCode(DNSResponseCode responseCode) { @@ -55,6 +58,7 @@ public abstract class OACPacket extends Packet { /** * Writes the packet data to the output stream. + * * @param packetHandler The packet handler managing the packet. * @param objectOutputStream The output stream to write the packet data to. * @throws IOException If an I/O error occurs. @@ -75,7 +79,8 @@ public abstract class OACPacket extends Packet { onRead(packetHandler, objectInputStream); // Read the response code if the protocol version is not classic - if (protocolVersion != ProtocolVersion.PV_1_0_0_CLASSIC) responseCode = (DNSResponseCode) objectInputStream.readObject(); + if (protocolVersion != ProtocolVersion.PV_1_0_0_CLASSIC) + responseCode = (DNSResponseCode) objectInputStream.readObject(); else responseCode = DNSResponseCode.RESPONSE_NOT_REQUIRED; // Call the response code read handler @@ -84,6 +89,7 @@ public abstract class OACPacket extends Packet { /** * Abstract method to be implemented by subclasses for writing specific packet data. + * * @param packetHandler The packet handler managing the packet. * @param objectOutputStream The output stream to write the packet data to. * @throws IOException If an I/O error occurs. @@ -93,8 +99,9 @@ public abstract class OACPacket extends Packet { /** * Abstract method to be implemented by subclasses for reading specific packet data. - * @param packetHandler The packet handler managing the packet. - * @param objectInputStream The input stream to read the packet data from. + * + * @param packetHandler The packet handler managing the packet. + * @param objectInputStream The input stream to read the packet data from. * @throws IOException If an I/O error occurs. * @throws ClassNotFoundException If a class cannot be found during deserialization. */ @@ -103,8 +110,10 @@ public abstract class OACPacket extends Packet { /** * Method called after the response code has been read from the input stream. * Subclasses can override this method to handle any additional logic based on the response code. - * @param packetHandler The packet handler managing the packet. - * @param objectInputStream The input stream from which the response code was read. + * + * @param packetHandler The packet handler managing the packet. + * @param objectInputStream The input stream from which the response code was read. */ - protected void onResponseCodeRead(PacketHandler packetHandler, ObjectInputStream objectInputStream) {} + protected void onResponseCodeRead(PacketHandler packetHandler, ObjectInputStream objectInputStream) { + } } 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 f7ac1e7..ddcb726 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 @@ -5,10 +5,10 @@ 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.objects.Classic_Domain; import org.openautonomousconnection.protocol.versions.v1_0_0.classic.events.Classic_DomainPacketReceivedEvent; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.utils.Classic_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.io.IOException; import java.io.ObjectInputStream; 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 262701e..e1547c6 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,8 @@ public final class Classic_MessagePacket extends OACPacket { @Override public void onWrite(PacketHandler packetHandler, ObjectOutputStream objectOutputStream) throws IOException, ClassNotFoundException { - if (ProtocolBridge.getInstance().isRunningAsDNSServer() || ProtocolBridge.getInstance().isRunningAsWebServer()) 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); 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 37f61cb..bdac3e7 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 @@ -6,10 +6,10 @@ 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.DNSResponseCode; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.objects.Classic_Domain; import org.openautonomousconnection.protocol.versions.v1_0_0.classic.events.Classic_PingPacketReceivedEvent; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.utils.Classic_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.io.IOException; import java.io.ObjectInputStream; 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 7a099e9..0c7510a 100644 --- a/src/main/java/org/openautonomousconnection/protocol/side/client/ProtocolClient.java +++ b/src/main/java/org/openautonomousconnection/protocol/side/client/ProtocolClient.java @@ -52,6 +52,7 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider { /** * Initializes the ProtocolClient, setting up certificate folders and the DNS client connection. + * * @throws CertificateException if there are issues with the certificates. * @throws IOException if there are I/O issues during initialization. */ @@ -69,6 +70,7 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider { /** * Gets the DNS connection client. + * * @return the NetworkClient handling the DNS connection. */ public final NetworkClient getClientDNSConnection() { @@ -77,9 +79,10 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider { /** * Creates a web connection to the specified domain and ports. - * @param domain the target domain for the web connection. + * + * @param domain the target domain for the web connection. * @param pipelinePort the port used for the pipeline connection. - * @param webPort the port used for the web connection. + * @param webPort the port used for the web connection. * @throws Exception if there are issues creating the web connection or if the protocol is unsupported. */ public final void createWebConnection(Domain domain, int pipelinePort, int webPort) throws Exception { @@ -103,6 +106,7 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider { /** * Checks if the required certificate files exist in the specified folder. + * * @param folder the folder to check for certificate files. * @param prefix the prefix of the certificate files. * @param extension the extension of the certificate files. @@ -136,6 +140,7 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider { /** * Gets the protocol version of the connected server. + * * @return the ProtocolVersion of the server, or PV_1_0_0_CLASSIC if not set. */ public final ProtocolVersion getServerVersion() { @@ -144,6 +149,7 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider { /** * Sets the protocol version of the connected server. + * * @param serverVersion the ProtocolVersion to set for the server. */ public final void setServerVersion(ProtocolVersion serverVersion) { @@ -152,6 +158,7 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider { /** * Handles DNS disconnection events, resetting the server version and closing the web client connection if necessary. + * * @param event the ClientDisconnectedEvent triggered on DNS disconnection. */ public final void onDNSDisconnect(ClientDisconnectedEvent event) { @@ -170,6 +177,7 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider { /** * Checks if the connected server is a stable server. + * * @return true if the server is stable, false otherwise. */ public final boolean isStableServer() { @@ -179,6 +187,7 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider { /** * Checks if the connected server or its compatible versions support stable protocol. + * * @return true if stable protocol is supported, false otherwise. */ public final boolean supportServerStable() { @@ -195,6 +204,7 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider { /** * Checks if the connected server is a beta server. + * * @return true if the server is beta, false otherwise. */ public final boolean isBetaServer() { @@ -204,6 +214,7 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider { /** * Checks if the connected server or its compatible versions support beta protocol. + * * @return true if beta protocol is supported, false otherwise. */ public final boolean supportServerBeta() { @@ -220,6 +231,7 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider { /** * Checks if the connected server is a classic server. + * * @return true if the server is classic, false otherwise. */ public final boolean isClassicServer() { @@ -229,6 +241,7 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider { /** * Checks if the connected server or its compatible versions support classic protocol. + * * @return true if classic protocol is supported, false otherwise. */ public final boolean supportServerClassic() { @@ -245,6 +258,7 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider { /** * Checks if the connected server supports the protocol version of the given packet. + * * @param packet the OACPacket to check against the server's supported protocol version. * @return true if the server supports the packet's protocol version, false otherwise. */ @@ -255,6 +269,7 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider { /** * Checks if the connected server or its compatible versions support the specified protocol version. + * * @param targetVersion the ProtocolVersion to check for support. * @return true if the server or its compatible versions support the target version, false otherwise. */ @@ -265,6 +280,7 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider { /** * Checks if the connected server or its compatible versions support the specified protocol. + * * @param protocol the Protocol to check for support. * @return true if the server or its compatible versions support the protocol, false otherwise. */ @@ -282,6 +298,7 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider { /** * Validates the specified domain by sending a validation request to the DNS server. + * * @param domain the Domain to validate. * @throws IOException if there are I/O issues during the validation process. * @throws ClassNotFoundException if there are issues with class loading during packet handling. @@ -297,6 +314,7 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider { /** * Requests the destination for the specified domain from the DNS server. + * * @param domain the Domain for which to request the destination. * @param responseCode the expected DNSResponseCode for the request. * @throws IOException if there are I/O issues during the request process. @@ -313,6 +331,7 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider { /** * Callback method invoked when domain validation is completed. + * * @param domain the Domain that was validated. * @param responseCode the DNSResponseCode resulting from the validation. */ @@ -320,6 +339,7 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider { /** * Callback method invoked when the destination retrieval is completed. + * * @param domain the Domain for which the destination was requested. * @param destination the retrieved destination as a string. * @param validationResponse the DNSResponseCode resulting from the destination retrieval. 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 3884a5b..ba88813 100644 --- a/src/main/java/org/openautonomousconnection/protocol/side/client/WebClient.java +++ b/src/main/java/org/openautonomousconnection/protocol/side/client/WebClient.java @@ -42,13 +42,9 @@ public final class WebClient { */ private ObjectInputStream inputStream; - /** - * Thread for receiving data from the web server. - */ - private final Thread receiveThread = new Thread(this::receive); - /** * Constructs a WebClient instance and establishes a secure connection to the web server. + * * @param domain The domain information for the web server. * @param pipelinePort The port for the pipeline connection. * @param webPort The port for the web server connection. @@ -58,26 +54,26 @@ public final class WebClient { // Initialize and connect the pipeline client clientToWebPipeline = new NetworkClient.ClientBuilder(). // Set logger from ProtocolBridge - setLogger(ProtocolBridge.getInstance().getLogger()). + setLogger(ProtocolBridge.getInstance().getLogger()). // Set the destination and port for the pipeline connection - setHost(domain.getDestination()).setPort(pipelinePort). + setHost(domain.getDestination()).setPort(pipelinePort). // Configure packet handler and event manager - setPacketHandler(ProtocolBridge.getInstance().getProtocolSettings().packetHandler). + setPacketHandler(ProtocolBridge.getInstance().getProtocolSettings().packetHandler). setEventManager(ProtocolBridge.getInstance().getProtocolSettings().eventManager). // Set proxy and ssl parameters from DNS connection settings - setProxy(ProtocolBridge.getInstance().getProtocolClient().getClientDNSConnection().getProxy()). + setProxy(ProtocolBridge.getInstance().getProtocolClient().getClientDNSConnection().getProxy()). setSSLParameters(ProtocolBridge.getInstance().getProtocolClient().getClientDNSConnection().getSocket().getSSLParameters()). // Set certificates and folders for SSL - setRootCAFolder(ProtocolBridge.getInstance().getProtocolClient().getFolderStructure().publicCAFolder). + setRootCAFolder(ProtocolBridge.getInstance().getProtocolClient().getFolderStructure().publicCAFolder). setClientCertificatesFolder(ProtocolBridge.getInstance().getProtocolClient().getFolderStructure().publicClientFolder, ProtocolBridge.getInstance().getProtocolClient().getFolderStructure().privateClientFolder). // Finalize the client setup - build(); + build(); // Connect to the pipeline clientToWebPipeline.connect(); @@ -139,10 +135,14 @@ public final class WebClient { // Start the receive thread this.receiveThread.start(); } - } + } /** + * Thread for receiving data from the web server. + */ + private final Thread receiveThread = new Thread(this::receive); /** * Gets the NetworkClient used for the pipeline connection to the web server. + * * @return The NetworkClient connected to the web server pipeline. */ public NetworkClient getClientPipelineConnection() { @@ -151,6 +151,7 @@ public final class WebClient { /** * Gets the SSLSocket used for communication with the web server. + * * @return The SSLSocket connected to the web server. */ public SSLSocket getClientWebConnection() { @@ -159,6 +160,7 @@ public final class WebClient { /** * Checks if the WebClient is currently connected to the web server. + * * @return true if connected, false otherwise. */ public boolean isConnected() { @@ -188,6 +190,7 @@ public final class WebClient { /** * Closes the connection to the web server and releases resources. + * * @return true if the connection was successfully closed, false if it was already closed. * @throws IOException If an I/O error occurs during closure. */ @@ -225,4 +228,6 @@ public final class WebClient { } + + } 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 417be26..7f19fa5 100644 --- a/src/main/java/org/openautonomousconnection/protocol/side/dns/ConnectedProtocolClient.java +++ b/src/main/java/org/openautonomousconnection/protocol/side/dns/ConnectedProtocolClient.java @@ -30,6 +30,7 @@ public final class ConnectedProtocolClient { /** * Gets the protocol version of the connected client. * Defaults to PV_1_0_0_CLASSIC if not set. + * * @return The protocol version of the client. */ public ProtocolVersion getClientVersion() { @@ -38,6 +39,7 @@ public final class ConnectedProtocolClient { /** * Sets the protocol version of the connected client. + * * @param clientVersion The protocol version to set. */ public void setClientVersion(ProtocolVersion clientVersion) { @@ -46,6 +48,7 @@ public final class ConnectedProtocolClient { /** * Checks if the connected client is a stable client. + * * @return True if the client is stable, false otherwise. */ public boolean isStableClient() { @@ -55,6 +58,7 @@ public final class ConnectedProtocolClient { /** * Checks if the connected client supports stable protocol versions. + * * @return True if the client supports stable versions, false otherwise. */ public boolean supportClientStable() { @@ -71,6 +75,7 @@ public final class ConnectedProtocolClient { /** * Checks if the connected client is a beta client. + * * @return True if the client is beta, false otherwise. */ public boolean isBetaClient() { @@ -80,6 +85,7 @@ public final class ConnectedProtocolClient { /** * Checks if the connected client supports beta protocol versions. + * * @return True if the client supports beta versions, false otherwise. */ public boolean supportClientBeta() { @@ -96,6 +102,7 @@ public final class ConnectedProtocolClient { /** * Checks if the connected client is a classic client. + * * @return True if the client is classic, false otherwise. */ public boolean isClassicClient() { @@ -106,6 +113,7 @@ public final class ConnectedProtocolClient { /** * Checks if the connected client supports classic protocol versions. + * * @return True if the client supports classic versions, false otherwise. */ public boolean supportClientClassic() { @@ -122,6 +130,7 @@ public final class ConnectedProtocolClient { /** * Checks if the connected client supports the given packet's protocol version. + * * @param packet The packet to check. * @return True if the client supports the packet's protocol version, false otherwise. */ @@ -131,6 +140,7 @@ public final class ConnectedProtocolClient { /** * Checks if the connected client supports the given protocol version. + * * @param targetVersion The protocol version to check. * @return True if the client supports the target version, false otherwise. */ @@ -141,6 +151,7 @@ public final class ConnectedProtocolClient { /** * Checks if the connected client supports the given protocol. + * * @param protocol The protocol to check. * @return True if the client supports the protocol, false otherwise. */ 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 3e77132..7d34158 100644 --- a/src/main/java/org/openautonomousconnection/protocol/side/dns/ProtocolDNSServer.java +++ b/src/main/java/org/openautonomousconnection/protocol/side/dns/ProtocolDNSServer.java @@ -104,6 +104,7 @@ public abstract class ProtocolDNSServer extends DefaultMethodsOverrider { /** * Checks if the required certificate files exist in the specified folder. + * * @param folder The folder to check for certificate files. * @param prefix The prefix of the certificate files. * @param extension The extension of the certificate files. @@ -138,6 +139,7 @@ public abstract class ProtocolDNSServer extends DefaultMethodsOverrider { /** * Retrieves a connected protocol client by its client ID. + * * @param clientID The ID of the client to retrieve. * @return The ConnectedProtocolClient with the specified ID, or null if not found. */ @@ -149,6 +151,7 @@ public abstract class ProtocolDNSServer extends DefaultMethodsOverrider { /** * Gets the DNS information site URL from the configuration. + * * @return The DNS information site URL. */ public final String getDNSInfoSite() { @@ -157,6 +160,7 @@ public abstract class ProtocolDNSServer extends DefaultMethodsOverrider { /** * Gets the DNS registration site URL from the configuration. + * * @return The DNS registration site URL. */ public final String getDNSRegisterSite() { @@ -165,37 +169,39 @@ public abstract class ProtocolDNSServer extends DefaultMethodsOverrider { /** * Abstract method to retrieve the list of domains managed by the DNS server. + * * @return A list of Domain objects. */ public abstract List getDomains(); /** - * @see Domain#getDestination() - * Abstract method to get the destination for a given domain. * @param domain The domain to look up. * @return The destination associated with the domain. + * @see Domain#getDestination() + * Abstract method to get the destination for a given domain. */ public abstract String getDomainDestination(Domain domain); /** - * @see Domain#getDestination() - * Abstract method to get the destination for a given subname under a specific domain. - * @param domain The parent domain. + * @param domain The parent domain. * @param subname The subname to look up. * @return The destination associated with the subname. + * @see Domain#getDestination() + * Abstract method to get the destination for a given subname under a specific domain. */ public abstract String getSubnameDestination(Domain domain, String subname); /** - * @see Domain#getDestination() - * Abstract method to get the top-level domain information site URL. * @param topLevelName The top-level domain name. * @return The information site URL for the specified top-level domain. + * @see Domain#getDestination() + * Abstract method to get the top-level domain information site URL. */ public abstract String getTLNInfoSite(String topLevelName); /** * Abstract method to validate a requested domain. + * * @param requestedDomain The domain to validate. * @return A DNSResponseCode indicating the result of the validation. */ @@ -203,18 +209,20 @@ public abstract class ProtocolDNSServer extends DefaultMethodsOverrider { /** * Abstract method called when a validation packet fails to send. - * @param domain The domain associated with the validation. - * @param client The connected protocol client. + * + * @param domain The domain associated with the validation. + * @param client The connected protocol client. * @param exception The exception that occurred during sending. */ public abstract void validationPacketSendFailed(Domain domain, ConnectedProtocolClient client, Exception exception); /** * Abstract method called when a domain destination packet fails to send. - * @param client The connected protocol client. - * @param domain The domain associated with the packet. + * + * @param client The connected protocol client. + * @param domain The domain associated with the packet. * @param validationResponse The DNS response code from validation. - * @param exception The exception that occurred during sending. + * @param exception The exception that occurred during sending. */ public abstract void domainDestinationPacketFailedSend(ConnectedProtocolClient client, Domain domain, DNSResponseCode validationResponse, Exception exception); @@ -234,6 +242,7 @@ public abstract class ProtocolDNSServer extends DefaultMethodsOverrider { public final File publicServerFolder; public final String caPrefix = "ca_dns_"; public final String certPrefix = "cert_dns_"; + public ServerCertificateFolderStructure() { 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 be99fb6..b64b9ff 100644 --- a/src/main/java/org/openautonomousconnection/protocol/side/web/ConnectedWebClient.java +++ b/src/main/java/org/openautonomousconnection/protocol/side/web/ConnectedWebClient.java @@ -51,20 +51,18 @@ public final class ConnectedWebClient { * The protocol version of the connected client. */ private ProtocolVersion clientVersion = null; - /** + * Indicates if the client version has been loaded. + */ + @Getter + private boolean clientVersionLoaded = false; /** * Thread for receiving data from the client. */ private final Thread receiveThread = new Thread(this::receive); - /** - * Indicates if the client version has been loaded. - */ - @Getter - private boolean clientVersionLoaded = false; - /** * Constructs a ConnectedWebClient with the given connection handler. + * * @param pipelineConnection The connection handler for the web client. */ public ConnectedWebClient(ConnectionHandler pipelineConnection) { @@ -73,9 +71,10 @@ public final class ConnectedWebClient { /** * Sends an HTTP redirect response to the client. - * @param out The output stream to send the response to. + * + * @param out The output stream to send the response to. * @param location The URL to redirect to. - * @param cookies Optional cookies to set in the response. + * @param cookies Optional cookies to set in the response. * @throws IOException If an I/O error occurs. */ private static void sendRedirect(OutputStream out, String location, Map cookies) throws IOException { @@ -97,6 +96,7 @@ public final class ConnectedWebClient { /** * Parses POST parameters from the input stream. + * * @param in The input stream to read from. * @return A map of POST parameter names to values. * @throws IOException If an I/O error occurs. @@ -124,6 +124,7 @@ public final class ConnectedWebClient { /** * Normalizes a file path to prevent directory traversal attacks. + * * @param path The raw file path. * @return The normalized file path. */ @@ -141,6 +142,7 @@ public final class ConnectedWebClient { /** * Parses query parameters from a raw URL path. + * * @param rawPath The raw URL path containing query parameters. * @return A map of query parameter names to values. */ @@ -161,6 +163,7 @@ public final class ConnectedWebClient { /** * Checks if the request is a multipart/form-data request. + * * @param headers The HTTP headers of the request. * @return True if the request is multipart/form-data, false otherwise. */ @@ -171,8 +174,9 @@ public final class ConnectedWebClient { /** * Handles a multipart/form-data request, saving uploaded files to the specified directory. - * @param in The input stream to read the request body from. - * @param headers The HTTP headers of the request. + * + * @param in The input stream to read the request body from. + * @param headers The HTTP headers of the request. * @param uploadDir The directory to save uploaded files to. * @throws IOException If an I/O error occurs. */ @@ -232,6 +236,7 @@ public final class ConnectedWebClient { /** * Sends an response to the client. + * * @param out * @param code * @param file @@ -245,7 +250,8 @@ public final class ConnectedWebClient { /** * Sends an response to the client. - * @param out The output stream to send the response to. + * + * @param out The output stream to send the response to. * @param code The HTTP status code. * @param file The file to read the response body from. * @throws IOException If an I/O error occurs. @@ -256,9 +262,10 @@ public final class ConnectedWebClient { /** * Sends an response to the client. - * @param out The output stream to send the response to. - * @param code The HTTP status code. - * @param body The response body as a string. + * + * @param out The output stream to send the response to. + * @param code The HTTP status code. + * @param body The response body as a string. * @param contentType The content type of the response. * @throws IOException If an I/O error occurs. */ @@ -268,9 +275,10 @@ public final class ConnectedWebClient { /** * Sends an response to the client. - * @param out The output stream to send the response to. - * @param code The HTTP status code. - * @param file The file to read the response body from. + * + * @param out The output stream to send the response to. + * @param code The HTTP status code. + * @param file The file to read the response body from. * @param contentType The content type of the response. * @throws IOException If an I/O error occurs. */ @@ -281,11 +289,12 @@ public final class ConnectedWebClient { /** * Sends an response to the client. - * @param out The output stream to send the response to. - * @param code The HTTP status code. - * @param body The response body as a byte array. + * + * @param out The output stream to send the response to. + * @param code The HTTP status code. + * @param body The response body as a byte array. * @param contentType The content type of the response. - * @param headers Additional headers to include in the response. + * @param headers Additional headers to include in the response. * @throws IOException If an I/O error occurs. */ private static void sendResponse(OutputStream out, int code, byte[] body, String contentType, Map headers) throws IOException { @@ -310,6 +319,7 @@ public final class ConnectedWebClient { /** * Returns the standard status text for a given status code. + * * @param code The status code. * @return The corresponding status text. */ @@ -329,6 +339,7 @@ public final class ConnectedWebClient { /** * Returns the content type based on the file extension. + * * @param name The file name. * @return The corresponding content type. */ @@ -350,9 +361,10 @@ public final class ConnectedWebClient { /** * Renders a PHP file by executing it with the PHP interpreter and captures cookies. + * * @param file The PHP file to render. * @return A PHPResponse containing the output and cookies. - * @throws IOException If an I/O error occurs. + * @throws IOException If an I/O error occurs. * @throws InterruptedException If the process is interrupted. */ private static PHPResponse renderPHPWithCookies(File file) throws IOException, InterruptedException { @@ -402,6 +414,7 @@ public final class ConnectedWebClient { /** * Sets the SSL socket for the web client and starts the receive thread. + * * @param webSocket The SSL socket to set. */ public void setWebSocket(SSLSocket webSocket) { @@ -411,6 +424,7 @@ public final class ConnectedWebClient { /** * Checks if the web client is currently connected. + * * @return True if connected, false otherwise. */ public boolean isConnected() { @@ -419,6 +433,7 @@ public final class ConnectedWebClient { /** * Disconnects the web client, closing streams and the socket. + * * @return True if disconnection was successful, false if already disconnected. */ public synchronized boolean disconnect() { @@ -452,6 +467,7 @@ public final class ConnectedWebClient { /** * Gets the protocol version of the connected client. + * * @return The protocol version of the client, defaults to PV_1_0_0_CLASSIC if not set. */ public ProtocolVersion getClientVersion() { @@ -460,6 +476,7 @@ public final class ConnectedWebClient { /** * Sets the protocol version of the connected client. + * * @param clientVersion The protocol version to set. */ public void setClientVersion(ProtocolVersion clientVersion) { @@ -469,6 +486,7 @@ public final class ConnectedWebClient { /** * Checks if the connected client is a stable client. + * * @return True if the client is stable, false otherwise. */ public boolean isStableClient() { @@ -478,6 +496,7 @@ public final class ConnectedWebClient { /** * Checks if the connected client supports stable protocol versions. + * * @return True if the client supports stable versions, false otherwise. */ public boolean supportClientStable() { @@ -494,6 +513,7 @@ public final class ConnectedWebClient { /** * Checks if the connected client is a beta client. + * * @return True if the client is beta, false otherwise. */ public boolean isBetaClient() { @@ -503,6 +523,7 @@ public final class ConnectedWebClient { /** * Checks if the connected client supports beta protocol versions. + * * @return True if the client supports beta versions, false otherwise. */ public boolean supportClientBeta() { @@ -519,6 +540,7 @@ public final class ConnectedWebClient { /** * Checks if the connected client is a classic client. + * * @return True if the client is classic, false otherwise. */ public boolean isClassicClient() { @@ -527,6 +549,7 @@ public final class ConnectedWebClient { /** * Checks if the connected client supports classic protocol versions. + * * @return True if the client supports classic versions, false otherwise. */ public boolean supportClientClassic() { @@ -543,6 +566,7 @@ public final class ConnectedWebClient { /** * Checks if the connected client supports the protocol version of the given packet. + * * @param packet The packet to check support for. * @return True if the client supports the packet's protocol version, false otherwise. */ @@ -552,6 +576,7 @@ public final class ConnectedWebClient { /** * Checks if the connected client supports the given protocol version. + * * @param targetVersion The protocol version to check support for. * @return True if the client supports the target version, false otherwise. */ @@ -562,6 +587,7 @@ public final class ConnectedWebClient { /** * Checks if the connected client supports the given protocol. + * * @param protocol The protocol to check support for. * @return True if the client supports the protocol, false otherwise. */ @@ -689,4 +715,6 @@ public final class ConnectedWebClient { } } + + } 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 ec41a67..22b2239 100644 --- a/src/main/java/org/openautonomousconnection/protocol/side/web/ProtocolWebServer.java +++ b/src/main/java/org/openautonomousconnection/protocol/side/web/ProtocolWebServer.java @@ -58,31 +58,25 @@ public final class ProtocolWebServer { * Certificate files for SSL. */ private final File keyFile; - - + /** + * The configuration file for the web server. + */ + private final File configFile; /** * The network server handling pipeline connections. */ @Getter private NetworkServer pipelineServer; - /** * The SSL server socket for web connections. */ @Getter private SSLServerSocket webServer; - /** * List of connected web clients. */ @Getter private List clients; - - /** - * The configuration file for the web server. - */ - private final File configFile; - /** * A unique secret for session management. */ @@ -91,9 +85,10 @@ public final class ProtocolWebServer { /** * Initializes the web server with the given configuration, authentication, and rules files. + * * @param configFile The configuration file. - * @param authFile The authentication file. - * @param rulesFile The rules file. + * @param authFile The authentication file. + * @param rulesFile The rules file. * @throws Exception If an error occurs during initialization. */ public ProtocolWebServer(File configFile, File authFile, File rulesFile) throws Exception { @@ -172,10 +167,11 @@ public final class ProtocolWebServer { /** * Retrieves a connected web client by its client ID. + * * @param clientID The client ID to search for. * @return The connected web client with the specified ID, or null if not found. */ - public final ConnectedWebClient getClientByID(int clientID) { + public ConnectedWebClient getClientByID(int clientID) { for (ConnectedWebClient client : clients) if (client.getPipelineConnection().getClientID() == clientID) return client; return null; @@ -183,9 +179,10 @@ public final class ProtocolWebServer { /** * Starts the web server to accept and handle client connections. + * * @throws Exception If an error occurs while starting the server. */ - public final void startWebServer() throws Exception { + public void startWebServer() throws Exception { // Start the pipeline server pipelineServer.start(); @@ -215,7 +212,8 @@ public final class ProtocolWebServer { try { // Sleep for a while before checking again Thread.sleep(1000); - } catch (InterruptedException ignored) {} + } catch (InterruptedException ignored) { + } } }).start(); @@ -241,6 +239,7 @@ public final class ProtocolWebServer { /** * Handles the shutdown of the web server when the pipeline server stops. + * * @throws IOException If an I/O error occurs while closing the web server. */ private void onPipelineStop() throws IOException { @@ -249,11 +248,12 @@ public final class ProtocolWebServer { /** * Checks if the required certificate files exist in the specified folder. - * @param folder The folder to check for certificate files. - * @param prefix The prefix of the certificate files. + * + * @param folder The folder to check for certificate files. + * @param prefix The prefix of the certificate files. * @param extension The extension of the certificate files. * @throws CertificateException If a required certificate file is missing or invalid. - * @throws IOException If an I/O error occurs while checking the files. + * @throws IOException If an I/O error occurs while checking the files. */ private void checkFileExists(File folder, String prefix, String extension) throws CertificateException, IOException { boolean found = false; @@ -281,15 +281,17 @@ public final class ProtocolWebServer { /** * Retrieves the configuration manager for the web server. + * * @return The configuration manager. * @throws IOException If an I/O error occurs while loading or saving the configuration. */ - public final ConfigurationManager getConfigurationManager() throws IOException { + public ConfigurationManager getConfigurationManager() throws IOException { return getConfigurationManager(configFile); } /** * Loads and initializes the configuration manager with default settings if necessary. + * * @param configFile The configuration file to load. * @return The initialized configuration manager. * @throws IOException If an I/O error occurs while loading or saving the configuration. @@ -339,6 +341,7 @@ public final class ProtocolWebServer { public final File publicServerFolder; public final String caPrefix = "ca_server_"; public final String certPrefix = "cert_server_"; + public ServerCertificateFolderStructure() { certificatesFolder = new File("certificates"); 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 d9be7cb..b0a21d2 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 @@ -27,6 +27,7 @@ public final class AuthManager { * Loads the authentication file and populates the users map. * The file should contain lines in the format: username:hashed_password * Lines starting with '#' are treated as comments and ignored. + * * @param authFile The authentication file to load. * @throws IOException If an I/O error occurs reading from the file. */ @@ -48,7 +49,8 @@ public final class AuthManager { /** * Checks if the provided login and password are valid. - * @param login The username to check. + * + * @param login The username to check. * @param password The password to verify. * @return True if the credentials are valid, false otherwise. */ @@ -64,6 +66,7 @@ public final class AuthManager { /** * Computes the SHA-256 hash of the given input string. + * * @param input The input string to hash. * @return The hexadecimal representation of the SHA-256 hash. */ 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 67f013e..ae7a858 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 @@ -35,17 +35,19 @@ public final class RuleManager { * Loads rules from a JSON file. * The JSON should have the structure: * { - * "allow": ["pattern1", "pattern2", ...], - * "deny": ["pattern1", "pattern2", ...], - * "auth": ["pattern1", "pattern2", ...] + * "allow": ["pattern1", "pattern2", ...], + * "deny": ["pattern1", "pattern2", ...], + * "auth": ["pattern1", "pattern2", ...] * } + * * @param rulesFile The JSON file containing the rules. * @throws Exception If an error occurs reading the file or parsing JSON. */ public static void loadRules(File rulesFile) throws Exception { // Load and parse the JSON file String json = new String(Files.readAllBytes(rulesFile.toPath())); - Map> map = new Gson().fromJson(json, new TypeToken>>() {}.getType()); + Map> map = new Gson().fromJson(json, new TypeToken>>() { + }.getType()); // Default to empty lists if keys are missing allow = map.getOrDefault("allow", List.of()); @@ -53,7 +55,9 @@ public final class RuleManager { auth = map.getOrDefault("auth", List.of()); } - /** Checks if the given path is allowed based on the allow rules. + /** + * Checks if the given path is allowed based on the allow rules. + * * @param path The path to check. * @return True if the path is allowed, false otherwise. */ @@ -61,7 +65,9 @@ public final class RuleManager { return allow.stream().anyMatch(p -> pathMatches(path, p)); } - /** Checks if the given path is denied based on the deny rules. + /** + * Checks if the given path is denied based on the deny rules. + * * @param path The path to check. * @return True if the path is denied, false otherwise. */ @@ -69,7 +75,9 @@ public final class RuleManager { return deny.stream().anyMatch(p -> pathMatches(path, p)); } - /** Checks if the given path requires authentication based on the auth rules. + /** + * Checks if the given path requires authentication based on the auth rules. + * * @param path The path to check. * @return True if the path requires authentication, false otherwise. */ @@ -77,9 +85,11 @@ public final class RuleManager { return auth.stream().anyMatch(p -> pathMatches(path, p)); } - /** Helper method to check if a path matches a pattern. + /** + * Helper method to check if a path matches a pattern. * Patterns can include '*' as a wildcard. - * @param path The path to check. + * + * @param path The path to check. * @param pattern The pattern to match against. * @return True if the path matches the pattern, false otherwise. */ 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 c3acb25..0903ba8 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 @@ -30,8 +30,9 @@ public final class SessionManager { /** * Creates a new session for the given user. - * @param login The username associated with the session. - * @param ip The IP address of the client. + * + * @param login The username associated with the session. + * @param ip The IP address of the client. * @param userAgent The User-Agent string of the client. * @return The generated session ID. * @throws IOException If an I/O error occurs. @@ -51,8 +52,9 @@ public final class SessionManager { /** * Validates a session ID against the provided IP and User-Agent. + * * @param sessionId The session ID to validate. - * @param ip The IP address of the client. + * @param ip The IP address of the client. * @param userAgent The User-Agent string of the client. * @return True if the session is valid, false otherwise. * @throws IOException If an I/O error occurs. @@ -74,6 +76,7 @@ public final class SessionManager { /** * Invalidates a session, removing it from the active sessions. + * * @param sessionId The session ID to invalidate. */ public static void invalidate(String sessionId) { @@ -82,6 +85,7 @@ public final class SessionManager { /** * Retrieves the username associated with a valid session ID. + * * @param sessionId The session ID to look up. * @return The username if the session is valid, null otherwise. */ @@ -127,6 +131,7 @@ public final class SessionManager { /** * Checks if the session has expired. + * * @return True if the session is expired, false otherwise. */ boolean isExpired() { @@ -135,7 +140,8 @@ public final class SessionManager { /** * Checks if the session matches the given IP and User-Agent. - * @param ip The IP address to check. + * + * @param ip The IP address to check. * @param userAgent The User-Agent string to check. * @return True if both match, false otherwise. */ @@ -145,6 +151,7 @@ public final class SessionManager { /** * Refreshes the session's expiration time. + * * @throws IOException If an I/O error occurs. */ void refresh() throws IOException { diff --git a/src/main/java/org/openautonomousconnection/protocol/versions/ProtocolVersion.java b/src/main/java/org/openautonomousconnection/protocol/versions/ProtocolVersion.java index 13620a1..64ffe95 100644 --- a/src/main/java/org/openautonomousconnection/protocol/versions/ProtocolVersion.java +++ b/src/main/java/org/openautonomousconnection/protocol/versions/ProtocolVersion.java @@ -71,6 +71,7 @@ public enum ProtocolVersion implements Serializable { /** * Returns a string representation of the protocol version, including its version, type, side, supported protocols, and compatible versions. + * * @return a string representation of the protocol version. */ @Override @@ -89,6 +90,7 @@ public enum ProtocolVersion implements Serializable { /** * Builds a name for the protocol version combining its version and type. + * * @return a string representing the name of the protocol version. */ public final String buildName() { @@ -105,6 +107,7 @@ public enum ProtocolVersion implements Serializable { /** * Returns the name of the protocol in uppercase. + * * @return the name of the protocol in uppercase. */ @Override @@ -134,6 +137,7 @@ public enum ProtocolVersion implements Serializable { /** * Returns the name of the protocol in uppercase. + * * @return the name of the protocol in uppercase. */ @Override @@ -179,11 +183,11 @@ public enum ProtocolVersion implements Serializable { /** * All Sides */ - ALL - ; + ALL; /** * Returns the name of the protocol in uppercase. + * * @return the name of the protocol in uppercase. */ @Override diff --git a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/beta/DNSResponseCode.java b/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/beta/DNSResponseCode.java index 8bf2a20..71524e3 100644 --- a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/beta/DNSResponseCode.java +++ b/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/beta/DNSResponseCode.java @@ -75,6 +75,7 @@ public enum DNSResponseCode implements Serializable { /** * Returns a string representation of the DNS response code, including its code and description. + * * @return a string representation of the DNS response code. */ @Override 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 e7ee16d..abd0c83 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 @@ -110,19 +110,21 @@ public final class Domain implements Serializable { /** * Checks if the domain has a subname. + * * @return true if the domain has a subname, false otherwise. */ - public final boolean hasSubname() { + public boolean hasSubname() { return subname != null; } /** * Checks if this domain is equal to another object. * Two domains are considered equal if their subname, name, top-level name, and protocol are equal (case-insensitive). + * * @return true if the domains are equal, false otherwise. */ @Override - public final boolean equals(Object obj) { + public boolean equals(Object obj) { // Check if the object is an instance of Domain if (!(obj instanceof Domain domain)) return false; @@ -134,10 +136,11 @@ public final class Domain implements Serializable { /** * Returns the destination associated with this domain. * The destination is determined based on the domain's components and the current protocol context. + * * @return the destination as a string. */ @ProtocolInfo(protocolSide = ProtocolVersion.ProtocolSide.DNS) - public final String getDestination() { + public String getDestination() { // If running as client or web server, return invalid request 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/events/Classic_DomainPacketReceivedEvent.java b/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/events/Classic_DomainPacketReceivedEvent.java index bcd18db..a64dd31 100644 --- 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 @@ -1,14 +1,14 @@ package org.openautonomousconnection.protocol.versions.v1_0_0.classic.events; import dev.unlegitdqrk.unlegitlibrary.event.impl.Event; -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.utils.Classic_ProtocolVersion; 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 org.openautonomousconnection.protocol.versions.v1_0_0.classic.handlers.ClassicHandlerDNSServer * @see org.openautonomousconnection.protocol.versions.v1_0_0.classic.handlers.ClassicHandlerClient * @see org.openautonomousconnection.protocol.versions.v1_0_0.classic.handlers.ClassicHandlerWebServer @@ -29,22 +29,22 @@ public final class Classic_DomainPacketReceivedEvent extends Event { } @Override - protected final Object clone() throws CloneNotSupportedException { + protected Object clone() throws CloneNotSupportedException { return super.clone(); } @Override - public final boolean equals(Object obj) { + public boolean equals(Object obj) { return super.equals(obj); } @Override - public final String toString() { + public String toString() { return super.toString(); } @Override - public final int hashCode() { + 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 index 809c6f4..bba9656 100644 --- 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 @@ -2,12 +2,13 @@ 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.objects.Classic_Domain; -import org.openautonomousconnection.protocol.versions.v1_0_0.classic.utils.Classic_ProtocolVersion; 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 org.openautonomousconnection.protocol.versions.v1_0_0.classic.handlers.ClassicHandlerDNSServer * @see org.openautonomousconnection.protocol.versions.v1_0_0.classic.handlers.ClassicHandlerClient * @see org.openautonomousconnection.protocol.versions.v1_0_0.classic.handlers.ClassicHandlerWebServer @@ -29,22 +30,22 @@ public final class Classic_PingPacketReceivedEvent extends Event { } @Override - protected final Object clone() throws CloneNotSupportedException { + protected Object clone() throws CloneNotSupportedException { return super.clone(); } @Override - public final boolean equals(Object obj) { + public boolean equals(Object obj) { return super.equals(obj); } @Override - public final String toString() { + public String toString() { return super.toString(); } @Override - public final int hashCode() { + 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/ClassicHandlerDNSServer.java b/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/handlers/ClassicHandlerDNSServer.java index 72bd937..4c1ca62 100644 --- a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/handlers/ClassicHandlerDNSServer.java +++ b/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/handlers/ClassicHandlerDNSServer.java @@ -4,8 +4,8 @@ import org.openautonomousconnection.protocol.annotations.ProtocolInfo; import org.openautonomousconnection.protocol.side.dns.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.utils.Classic_ProtocolVersion; 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; diff --git a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/utils/ClassicConverter.java b/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/utils/ClassicConverter.java index 71e4bb0..ab5453a 100644 --- a/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/utils/ClassicConverter.java +++ b/src/main/java/org/openautonomousconnection/protocol/versions/v1_0_0/classic/utils/ClassicConverter.java @@ -11,6 +11,7 @@ public final class ClassicConverter { /** * Converts a Classic_Domain object to a Domain object. + * * @param classicDomain the Classic_Domain object to convert * @return the converted Domain object */ @@ -21,6 +22,7 @@ public final class ClassicConverter { /** * Converts a Domain object to a Classic_Domain object. + * * @param newDomain the Domain object to convert * @return the converted Classic_Domain object */ @@ -31,6 +33,7 @@ public final class ClassicConverter { /** * Converts a Classic_ProtocolVersion to a ProtocolVersion. + * * @param classicProtocolVersion the Classic_ProtocolVersion to convert * @return the converted ProtocolVersion */ @@ -42,6 +45,7 @@ public final class ClassicConverter { /** * Converts a ProtocolVersion to a Classic_ProtocolVersion. + * * @param newProtocolVersion the ProtocolVersion to convert * @return the converted Classic_ProtocolVersion */ 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 index f370ea4..eea75d5 100644 --- 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 @@ -28,6 +28,7 @@ public final class Classic_ClientListener extends EventListener { * Handles the event when a domain packet is received. * It checks if the domain exists and sends a ping request to the DNS server. * If the domain does not exist, it handles the error accordingly. + * * @param event The event containing domain information. */ @Listener @@ -57,6 +58,7 @@ public final class Classic_ClientListener extends EventListener { * 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 @@ -91,22 +93,22 @@ public final class Classic_ClientListener extends EventListener { } @Override - protected final Object clone() throws CloneNotSupportedException { + protected Object clone() throws CloneNotSupportedException { return super.clone(); } @Override - public final boolean equals(Object obj) { + public boolean equals(Object obj) { return super.equals(obj); } @Override - public final String toString() { + public String toString() { return super.toString(); } @Override - public final int hashCode() { + 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 index 26de946..2250f32 100644 --- 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 @@ -16,6 +16,7 @@ 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. @@ -46,9 +47,10 @@ class Classic_DomainUtils extends DefaultMethodsOverrider { /** * 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 URISyntaxException If the URL syntax is incorrect. * @throws MalformedURLException If the URL is malformed. */ public static String getDomainName(String url) throws URISyntaxException, MalformedURLException { @@ -71,6 +73,7 @@ class Classic_DomainUtils extends DefaultMethodsOverrider { /** * Extracts the path component from a given URL. + * * @param url The URL from which to extract the path. * @return The path as a string. */