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