diff --git a/pom.xml b/pom.xml
index 76f5b96..5f4aace 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
org.openautonomousconnection
Protocol
- 1.0.0-BETA.5.2
+ 1.0.0-BETA.5.3
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 00ce94d..1bfd0cf 100644
--- a/src/main/java/org/openautonomousconnection/protocol/ProtocolBridge.java
+++ b/src/main/java/org/openautonomousconnection/protocol/ProtocolBridge.java
@@ -147,7 +147,7 @@ public final class ProtocolBridge {
registerPackets();
// Assign Bridge
- protocolINSServer.attachBridge(this);
+ protocolWebServer.attachBridge(this);
}
/**
@@ -173,6 +173,8 @@ public final class ProtocolBridge {
// Register the appropriate listeners and packets
registerListeners();
registerPackets();
+
+ protocolClient.attachBridge(this);
}
/**
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 b6427b9..8407bd1 100644
--- a/src/main/java/org/openautonomousconnection/protocol/side/web/ProtocolWebServer.java
+++ b/src/main/java/org/openautonomousconnection/protocol/side/web/ProtocolWebServer.java
@@ -48,11 +48,6 @@ public abstract class ProtocolWebServer {
@Getter
private final ServerCertificateFolderStructure folderStructure;
- /**
- * Configuration manager for server settings.
- */
- private final ConfigurationManager configurationManager;
-
/**
* Certificate files for SSL.
*/
@@ -62,9 +57,9 @@ public abstract class ProtocolWebServer {
*/
private final File keyFile;
/**
- * The configuration file for the web server.
+ * The configuration for the web server.
*/
- private final File configFile;
+ private final WebServerConfig serverConfig;
/**
* The reference to the ProtocolBridge Object
*/
@@ -94,17 +89,18 @@ public abstract class ProtocolWebServer {
/**
* Initializes the web server with the given configuration, authentication, and rules files.
*
- * @param configFile The configuration file.
+ * @param serverConfig The configuration.
* @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 {
+ public ProtocolWebServer(WebServerConfig serverConfig, File authFile, File rulesFile) throws Exception {
// Initialize the list of connected clients
this.clients = new ArrayList<>();
// Store the configuration file
- this.configFile = configFile;
+ this.serverConfig = serverConfig;
+ this.serverConfig.attachWebServer(this);
// Set up folder structure for certificates
folderStructure = new ServerCertificateFolderStructure();
@@ -113,9 +109,6 @@ public abstract class ProtocolWebServer {
checkFileExists(folderStructure.publicServerFolder, folderStructure.certPrefix, ".crt");
checkFileExists(folderStructure.privateServerFolder, folderStructure.certPrefix, ".key");
- // Load configuration settings
- this.configurationManager = getConfigurationManager(configFile);
-
// Set up content and error folders
contentFolder = new File("content");
errorsFolder = new File("errors");
@@ -183,7 +176,7 @@ public abstract class ProtocolWebServer {
*/
private void createNetworkServer() {
pipelineServer = new NetworkServer.ServerBuilder().
- setPort(configurationManager.getInt("port.pipeline")).setTimeout(0).
+ setPort(protocolBridge.getProtocolSettings().port).setTimeout(0).
setPacketHandler(protocolBridge.getProtocolSettings().packetHandler).setEventManager(protocolBridge.getProtocolSettings().eventManager).
setLogger(protocolBridge.getLogger()).
setServerCertificate(certFile, keyFile).setRootCAFolder(folderStructure.publicCAFolder).
@@ -214,7 +207,7 @@ public abstract class ProtocolWebServer {
// Create the SSL server socket for web connections
webServer = (SSLServerSocket) NetworkServer.ServerBuilder.
createSSLServerSocketFactory(folderStructure.publicCAFolder, certFile, keyFile).
- createServerSocket(configurationManager.getInt("port"));
+ createServerSocket(serverConfig.getPort());
webServer.setSoTimeout(0);
webServer.setEnabledProtocols(pipelineServer.getServerSocket().getEnabledProtocols());
@@ -320,52 +313,6 @@ public abstract class ProtocolWebServer {
if (!found) throw new CertificateException("Missing " + prefix + NetworkUtils.getPublicIPAddress() + extension);
}
- /**
- * 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 {
- 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.
- */
- private ConfigurationManager getConfigurationManager(File configFile) throws IOException {
- if (!configFile.exists()) configFile.createNewFile();
-
- ConfigurationManager configurationManager = new ConfigurationManager(configFile);
- configurationManager.loadProperties();
-
- if (!configurationManager.isSet("port.webserver")) {
- configurationManager.set("port.webserver", 9824);
- configurationManager.saveProperties();
- }
-
- if (!configurationManager.isSet("port.pipeline")) {
- configurationManager.set("port.pipeline", 9389);
- configurationManager.saveProperties();
- }
-
- if (!configurationManager.isSet("filemaxuploadmb")) {
- configurationManager.set("filemaxuploadmb", 1000);
- configurationManager.saveProperties();
- }
-
- if (!configurationManager.isSet("sessionexpireminutes")) {
- configurationManager.set("sessionexpireminutes", 60);
- configurationManager.saveProperties();
- }
-
- return configurationManager;
- }
-
/**
* Represents the folder structure for server certificates.
*/
diff --git a/src/main/java/org/openautonomousconnection/protocol/side/web/WebServerConfig.java b/src/main/java/org/openautonomousconnection/protocol/side/web/WebServerConfig.java
new file mode 100644
index 0000000..248dd33
--- /dev/null
+++ b/src/main/java/org/openautonomousconnection/protocol/side/web/WebServerConfig.java
@@ -0,0 +1,52 @@
+package org.openautonomousconnection.protocol.side.web;
+
+import dev.unlegitdqrk.unlegitlibrary.file.ConfigurationManager;
+
+import java.io.File;
+import java.io.IOException;
+import java.lang.module.Configuration;
+
+public class WebServerConfig {
+
+ private final File configFile;
+ private final ConfigurationManager configuration;
+ private ProtocolWebServer webServer;
+
+ public WebServerConfig(File configFile) throws IOException {
+ this.configFile = configFile;
+ if (!configFile.exists()) configFile.createNewFile();
+ configuration = new ConfigurationManager(configFile);
+
+ if (!configuration.isSet("sessionexpireMIN")) configuration.set("sessionexpireMIN", 60);
+ if (!configuration.isSet("maxuploadMB")) configuration.set("maxuploadMB", 10000);
+ if (!configuration.isSet("port")) configuration.set("port", 20);
+
+ configuration.saveProperties();
+ }
+
+ public void attachWebServer(ProtocolWebServer webServer) {
+ if (this.webServer != null) return;
+ this.webServer = webServer;
+ }
+
+ /**
+ * @return Web port
+ */
+ public int getPort() {
+ return configuration.getInt("port");
+ }
+
+ /**
+ * @return The Session expiration time in minutes
+ */
+ public int getSessionExpiration() {
+ return configuration.getInt("sessionexpireMIN");
+ }
+
+ /**
+ * @return Max upload size in MB
+ */
+ public int getMaxUpload() {
+ return configuration.getInt("maxuploadMB");
+ }
+}