diff --git a/.idea/GitLink.xml b/.idea/GitLink.xml new file mode 100644 index 0000000..5143819 --- /dev/null +++ b/.idea/GitLink.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/src/main/java/github/openautonomousconnection/webserver/Main.java b/src/main/java/github/openautonomousconnection/webserver/Main.java index dcb4ec5..331e3f2 100644 --- a/src/main/java/github/openautonomousconnection/webserver/Main.java +++ b/src/main/java/github/openautonomousconnection/webserver/Main.java @@ -29,109 +29,8 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class Main { - @Getter - private static NetworkServer pipelineServer; - private static File contentFolder; - private static File errorsFolder; - - public static final class ServerCertificateFolderStructure { - public final File certificatesFolder; - - public final File publicFolder; - public final File privateFolder; - - public final File privateCAFolder; - public final File privateServerFolder; - - public final File publicCAFolder; - public final File publicServerFolder; - - public ServerCertificateFolderStructure() { - certificatesFolder = new File("certificates"); - - publicFolder = new File(certificatesFolder, "public"); - privateFolder = new File(certificatesFolder, "private"); - - privateCAFolder = new File(privateFolder, "ca"); - privateServerFolder = new File(privateFolder, "server"); - - publicCAFolder = new File(publicFolder, "ca"); - publicServerFolder = new File(publicFolder, "server"); - - if (!certificatesFolder.exists()) certificatesFolder.mkdirs(); - - if (!publicFolder.exists()) publicFolder.mkdirs(); - if (!privateFolder.exists()) privateFolder.mkdirs(); - - if (!privateCAFolder.exists()) privateCAFolder.mkdirs(); - if (!privateServerFolder.exists()) privateServerFolder.mkdirs(); - - if (!publicCAFolder.exists()) publicCAFolder.mkdirs(); - if (!publicServerFolder.exists()) publicServerFolder.mkdirs(); - } - - public final String caPrefix = "ca_server_"; - public final String certPrefix = "cert_server_"; - } - - @Getter - private static ServerCertificateFolderStructure folderStructure; - - private static ExecutorService threadPool; - public static void main(String[] args) throws Exception { - folderStructure = new ServerCertificateFolderStructure(); - threadPool = Executors.newCachedThreadPool(); - - ConfigurationManager configurationManager = getConfigurationManager(); - - File certificatesFolder = new File("certificates"); - if (!certificatesFolder.exists()) certificatesFolder.mkdir(); - - contentFolder = new File("content"); - errorsFolder = new File("errors"); - - if (!contentFolder.exists()) contentFolder.mkdir(); - if (!errorsFolder.exists()) errorsFolder.mkdir(); - - File certFile = new File(folderStructure.publicServerFolder, folderStructure.certPrefix + NetworkUtils.getPublicIPAddress() + ".crt"); - File keyFile = new File(folderStructure.privateServerFolder, folderStructure.certPrefix + NetworkUtils.getPublicIPAddress() + ".key"); - - checkFileExists(folderStructure.publicServerFolder, folderStructure.certPrefix, ".crt"); - checkFileExists(folderStructure.privateServerFolder, folderStructure.certPrefix, ".key"); - - File authFile = new File("auth.pwd"); - File rulesFile = new File("rules.json"); - - if (!authFile.exists()) { - authFile.createNewFile(); - FileUtils.writeFile(authFile, """ - admin:5e884898da28047151d0e56f8dc6292773603d0d6aabbddab8f91d8e5f99f6c7 - user:e99a18c428cb38d5f260853678922e03abd8335f - """); - } - - if (!rulesFile.exists()) { - rulesFile.createNewFile(); - FileUtils.writeFile(rulesFile, """ - { - "allow": [ - "index.html", - "css/*", - "private/info.php" - ], - "deny": [ - "private/*" - ], - "auth": [ - "private/*", - "admin/*" - ] - } - """); - } - AuthManager.loadAuthFile(authFile); RuleManager.loadRules(rulesFile); @@ -178,51 +77,6 @@ public class Main { }).start(); } - public static ConfigurationManager getConfigurationManager() throws IOException { - File configFile = new File("settings.properties"); - 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; - } - - private static void checkFileExists(File folder, String prefix, String extension) throws CertificateException, IOException { - boolean found = false; - if (folder == null) throw new FileNotFoundException("Folder does not exist"); - - File[] files = folder.listFiles(); - if (files == null || files.length == 0) throw new FileNotFoundException("Folder " + folder.getAbsolutePath() + " is empty"); - - for (File file : files) { - if (!file.getName().startsWith(prefix) || !file.getName().endsWith(extension)) throw new CertificateException(file.getAbsolutePath() + " is not valid"); - if (!found) found = file.getName().equalsIgnoreCase(prefix + NetworkUtils.getPublicIPAddress() + extension); - } - - if (!found) throw new CertificateException("Missing " + prefix + NetworkUtils.getPublicIPAddress() + extension); - } - private static void handleBrowser(SSLSocket client) { try (InputStream in = client.getInputStream(); OutputStream out = client.getOutputStream()) { BufferedReader reader = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8));