package uk.co.pembo.e2stream.server.handlers; import com.sun.net.httpserver.*; import java.io.IOException; import java.io.OutputStream; import java.net.InetAddress; import java.net.URLDecoder; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; import uk.co.pembo.e2stream.server.AlternateDirectory; import uk.co.pembo.e2stream.server.ServerIP; import uk.co.pembo.e2stream.server.Settings; import uk.co.pembo.utils.JarFileExtractor; import uk.co.pembo.utils.Logger; public class AddDirectoryResponse implements HttpHandler { public AddDirectoryResponse() { } public void handle(HttpExchange t) throws IOException { //System.out.println("handling an alt dir request"); try { response = JarFileExtractor.getOtherFile("altdirectory.html"); } catch(Exception e) { e.printStackTrace(); } if(response == null)response = ""; //System.out.println(t.getRequestURI()); String url = t .getRequestURI().toASCIIString(); //System.out.println("URL IS: " + url); if(url.indexOf("altdir=")>0) { String dir = url.substring(url.indexOf("altdir=") + 7); dir = URLDecoder.decode(dir,"UTF-8"); Logger.logInfo("Additional Apps Directory Changed to: [" + dir + "]"); Settings.setAdditionalAppsDir(dir); } if(Settings.getAdditionalAppsDir()!=null && Settings.getAdditionalAppsDir().length()>0) { //System.out.println("Response is: " + response); //System.out.println("ALT DIR is : " + Settings.getAdditionalAppsDir()); response = response.replace("#DIR#", Settings.getAdditionalAppsDir()); try { AlternateDirectory.loadFilesInDirectory(Settings.getAdditionalAppsDir()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); Logger.logError("ERROR: Unable to process files in additional directory"); throw new RuntimeException(e); } //Now get the apps list List<String> al = AlternateDirectory.getFilenames(); String filelist = ""; for(int i=0;i<al.size();i++) { filelist += "<li>"; filelist += al.get(i); filelist += "</li>"; } response = response.replaceFirst("#APPSLIST#", filelist); } else { response = response.replaceFirst("#DIR#", ""); response = response.replaceFirst("#APPSLIST#", "None Found"); } response = response.replaceFirst("#APPVERS#", Settings.getE2StreamVersion()); Headers responseHeaders = t.getResponseHeaders(); responseHeaders.set("Content-Type", "text/html"); t.sendResponseHeaders(200, response.length()); OutputStream os = t.getResponseBody(); os.write(response.getBytes()); os.close(); } private static String response = null; }