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"); + } +}