Fixed NullPointerException

This commit is contained in:
Finn
2026-01-18 15:27:05 +01:00
parent 5d028a45a6
commit c408c94288
4 changed files with 64 additions and 63 deletions

View File

@@ -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);
}
/**

View File

@@ -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.
*/

View File

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