Refactoring
This commit is contained in:
@@ -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));
|
||||
|
||||
Reference in New Issue
Block a user