package org.openslx.imagemaster; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.security.SecureRandom; import java.util.ArrayList; import java.util.List; import org.apache.log4j.Logger; import org.openslx.imagemaster.server.MasterFtpServer; import org.openslx.imagemaster.thrift.server.BinaryListener; public class App { private static Logger log = Logger.getLogger(App.class); private static List servers = new ArrayList<>(); public static void main(String[] args) { // Init logging log.info("Starting Application"); // Load properties boolean error = false; BufferedInputStream stream = null; try { stream = new BufferedInputStream(new FileInputStream( "config/global.properties")); Globals.properties.load(stream); } catch (IOException e) { log.error("Could not load config file. Quitting."); error = true; } finally { if (stream != null) { try { stream.close(); } catch (IOException e) { } } if (error) System.exit(1); log.info("Loaded config file"); } // Create binary listener Thread t; t = new Thread(new BinaryListener(), "BinaryListener"); servers.add(t); t.start(); // Create Ftp Server Thread f; MasterFtpServer ftpServer = new MasterFtpServer(2221, "admin", "SI*HoZCC!]V)p>B2", Globals.properties.getProperty("ftp_base_dir")); f = new Thread(ftpServer, "FtpServer"); servers.add(f); f.start(); /* * FTP Users can be added later with: * ftpServer.addUser(username, password, ftp_root); * * And removed with: * removeUser(username); */ //////////////////////////////////////////////// SecureRandom random = new SecureRandom(); String lettersP="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890+-$%&/()=?@"; String lettersU="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; String generatedUser = ""; String generatedPass = ""; for (int i = 0; i < 16; i++) { int index = (int)(random.nextDouble()*lettersU.length()); generatedUser += lettersU.substring(index, index + 1); index = (int)(random.nextDouble()*lettersP.length()); generatedPass += lettersP.substring(index, index + 1); } String dir = Globals.properties.getProperty("ftp_base_dir") + "/" + generatedUser + "/"; if (new File(dir).mkdir()) { ftpServer.addUser(generatedUser, generatedPass, dir, true); log.info("Generated user/pass: " + generatedUser + "\t" + generatedPass + "\n with home dir: " + dir); } //////////////////////////////////////////////// // Run more servers // ... // Wait for all servers to die for (Thread wait : servers) { boolean success = false; while (!success) { try { wait.join(); success = true; } catch (InterruptedException e) { // Do nothing... } } } ftpServer.removeUser(generatedUser); log.info("All Servers shut down, exiting..."); } }