/* * Copyright (C) Epic Games, Inc. All Rights Reserved. */ package com.epicgames.replayserver; import java.io.IOException; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.List; import java.util.logging.Level; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class Index extends HttpServlet { private static final long serialVersionUID = 1L; public Index() { } protected void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { try { final long startTime = System.currentTimeMillis(); if ( request.getSession().isNew() ) { ReplayLogger.log( Level.INFO, "New connection: " + request.getRemoteAddr() + ":" + request.getRemotePort() ); } final String refresh = request.getParameter( "Refresh" ); response.setContentType( "text/html" ); response.setStatus( HttpServletResponse.SC_OK ); response.getWriter().println( "

Replay Sessions

" ); if ( refresh != null ) { response.getWriter().println( "" ); response.getWriter().println( "SHOW ALL
" ); } else { response.getWriter().println( "REFRESH LAST 10
" ); } response.getWriter().println( "VIEW LOG, " ); response.getWriter().println( "FINEST, " ); response.getWriter().println( "FINER, " ); response.getWriter().println( "FINE, " ); response.getWriter().println( "INFO, " ); response.getWriter().println( "WARNING, " ); response.getWriter().println( "SEVERE, " ); response.getWriter().println( "StartUploading, " ); response.getWriter().println( "StartDownloading
" ); //response.getWriter().append( "hello " + request.getUserPrincipal().getName() + " : " + request.getAuthType() + "
" ); // // Create a really basic table, showing information about current sessions // //response.getWriter().println(""); response.getWriter().println("
"); response.getWriter().println( ""); response.getWriter().println( ""); response.getWriter().println( ""); response.getWriter().println( ""); response.getWriter().println( ""); response.getWriter().println( ""); response.getWriter().println( ""); response.getWriter().println( ""); response.getWriter().println( ""); response.getWriter().println( ""); response.getWriter().println( ""); // Loop over all of the sessions and fill the table final List< ReplaySessionInfo > sessions = ReplayDB.discoverSessions( null, 0, 0, null, null, refresh != null ? 10 : 0 ); response.getWriter().println( "

Total Sessions: " + ReplayDB.getNumSessions( null, 0, 0 ) ); for ( final ReplaySessionInfo sessionEntry : sessions ) { response.getWriter().println( "

" ); String LiveString = sessionEntry.bIsIncomplete ? "PARTIAL" : sessionEntry.bIsLive ? "LIVE" : "SAVED"; DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss a"); String DateString = dateFormat.format( sessionEntry.createDate ); final int demoTimeInSeconds = sessionEntry.demoTimeInMS / 1000; String demoTimeString = String.format( "%d:%02d:%02d", demoTimeInSeconds / 3600, ( demoTimeInSeconds % 3600 ) / 60, ( demoTimeInSeconds % 60 ) ); final String SizeString = sessionEntry.sizeInBytes > 1024 * 1024 ? String.format( "%2.2f MB", (float)sessionEntry.sizeInBytes / ( 1024 * 1024 ) ) : String.format( "%d KB", sessionEntry.sizeInBytes / ( 1024 ) ); response.getWriter().println( "" ); response.getWriter().println( "" ); response.getWriter().println( "" ); response.getWriter().println( "" ); response.getWriter().println( "" ); response.getWriter().println( "" ); response.getWriter().println( "" ); response.getWriter().println( "" ); response.getWriter().println( "" ); response.getWriter().println( "" ); response.getWriter().println( "" ); response.getWriter().println( "" ); } response.getWriter().println( "
AppVersionCLSessionNameDateViewersSizeLengthStatus
" + sessionEntry.appName + "" + (long)(sessionEntry.version & 0x00000000ffffffffL ) + "" + (long)(sessionEntry.changelist & 0x00000000ffffffffL ) + "" + sessionEntry.sessionName + "" + sessionEntry.friendlyName + "" + DateString + "" + sessionEntry.numViewers + "" + SizeString + "" + demoTimeString + "" + LiveString + "" ); if ( !sessionEntry.bIsLive ) { final String attributes = "?Session=" + sessionEntry.sessionName; response.getWriter().println( "DELETE
" ); } response.getWriter().println( "
" ); final long endTime = System.currentTimeMillis(); final long totalTime = endTime - startTime; response.getWriter().println( "

Request took " + totalTime + " ms

" ); } catch ( Exception e ) { ReplayLogger.log( "Index. Exception: " + e.getMessage() ); e.printStackTrace(); response.sendError( HttpServletResponse.SC_BAD_REQUEST ); } } }