package oculusPrime; import java.io.*; import java.util.Arrays; import java.util.Comparator; import java.util.Date; import javax.servlet.*; import javax.servlet.http.*; import oculusPrime.State.values; /** * list the files in framegrabs and streams folders */ public class MediaServlet extends HttpServlet { private static final long serialVersionUID = 1L; static BanList ban = BanList.getRefrence(); static State state = State.getReference(); public static final String IMAGE = "IMAGE"; public static final String VIDEO = "VIDEO"; public static final String AUDIO = "AUDIO"; // private static final String ITEM = "<!--item-->"; private static final String FILEEND = "</body></html>"; public void doGet(final HttpServletRequest req, HttpServletResponse response) throws ServletException, IOException { if (!ban.knownAddress(req.getRemoteAddr())) { Util.log("unknown address: sending to login: " + req.getRemoteAddr(), this); response.sendRedirect("/oculusPrime"); return; } StringBuffer str = new StringBuffer(); str.append("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n"); str.append("<!-- DO NOT MODIFY THIS FILE, THINGS WILL BREAK -->\n"); str.append("<html><head><title>Oculus Prime Media Files</title>\n" + "<meta http-equiv=\"Pragma\" content=\"no-cache\">\n" + "<meta http-equiv=\"Cache-Control\" Content=\"no-cache\">\n" + "<meta http-equiv=\"Expires\" content=\"-1\">\n" + "<style type=\"text/css\">\n" + "a { text-decoration: none; } \n" + "body { padding-bottom: 10px; margin: 0px; padding: 0px} \n" + "body, p, ol, ul, td, tr, td { font-family: verdana, arial, helvetica, sans-serif;}\n"); str.append("."+IMAGE+" {background-color: #FF8533; padding-top: 3px; padding-bottom: 3px; padding-left: 15px; padding-right: 10px; border-top: 1px solid #ffffff; }\n"); str.append("."+VIDEO+" {background-color: #C2EBFF; padding-top: 3px; padding-bottom: 3px; padding-left: 15px; padding-right: 10px; border-top: 1px solid #ffffff; }\n"); str.append("</style>\n"); str.append("</head><body>\n"); str.append("<div style='padding-top: 5px; padding-bottom: 5px; padding-left: 15px; '><b>Oculus Prime Media Files </b></div>\n"); response.setContentType("html"); PrintWriter out = response.getWriter(); String filterstr = null; try { filterstr = req.getParameter("filter"); } catch (Exception e) {} File[] files = null; final String f = filterstr; File[] streams; File[] frames; if(f == null){ streams = new File(Settings.streamfolder).listFiles(); frames = new File(Settings.framefolder).listFiles(); } else { // not jdk7 compatible! fix? // streams = new File(Settings.streamfolder).listFiles((File pathname) -> pathname.getName().contains(f)); // frames = new File(Settings.framefolder).listFiles((File pathname) -> pathname.getName().contains(f)); streams = new File(Settings.streamfolder).listFiles(new FileFilter() { @Override public boolean accept(File file) { return file.getName().contains(f); } }); frames = new File(Settings.framefolder).listFiles(new FileFilter() { @Override public boolean accept(File file) { return file.getName().contains(f); } }); } int frameslength = 0; if (frames != null) frameslength = frames.length; int streamslength = 0; if (streams != null) streamslength = streams.length; // merge lists and sort by date if (streamslength > 0 || frameslength > 0) { files = new File[frameslength + streamslength]; int total = 0; for (int i = 0; i < streamslength; i++) files[total++] = streams[i]; for (int j = 0; j < frameslength; j++) files[total++] = frames[j]; Arrays.sort(files, new Comparator<File>() { public int compare(File f1, File f2) { return Long.compare(f2.lastModified(), f1.lastModified()); } }); str.append("\n <table> "); for (int c = 0; c < files.length; c++) { if (files[c].getName().toLowerCase().endsWith(".jpg")) str.append("<tr><td><div class=\'" + IMAGE + "\'><a href=\"/oculusPrime/framegrabs/" + files[c].getName() + "\" target='_blank'>" + files[c].getName() + "</a></div><td style=\"text-align: right;\">" + files[c].length() + " bytes" + "</tr>\n"); else // if(files[c].getName().toLowerCase().endsWith(".flv")) str.append("<tr><td><div class=\'" + VIDEO + "\'><a href=\"/oculusPrime/streams/" + files[c].getName() + "\" target='_blank'>" + files[c].getName() + "</a></div><td style=\"text-align: right;\">" + files[c].length() + " bytes" + "</tr>\n"); } str.append("\n </table> "); } else { str.append ("<div style='padding-left: 15px'>No media yet</div>" ); } out.println(str+ FILEEND); out.close(); } }