/* * Copyright (C) Epic Games, Inc. All Rights Reserved. */ package com.epicgames.replayserver; import java.io.IOException; import java.util.Timer; import java.util.logging.Level; import javax.servlet.ServletException; import javax.servlet.ServletInputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.eclipse.jetty.security.ConstraintMapping; import org.eclipse.jetty.security.ConstraintSecurityHandler; import org.eclipse.jetty.security.HashLoginService; import org.eclipse.jetty.security.authentication.FormAuthenticator; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.servlet.*; import org.eclipse.jetty.util.security.Constraint; import org.eclipse.jetty.util.security.Password; public class ReplayServer { static Timer timer = null; public static void main( String[] args ) throws Exception { ReplayProps.Init(); ReplayDB.init(); ReplayLogger.log( Level.INFO, "Log opened..." ); org.eclipse.jetty.util.log.Log.setLog( ReplayLogger.replayLogger ); final int quickTaskFrequencyInSeconds = ReplayProps.getInt( "quickTaskFrequencyInSeconds", "10" ); final int longTaskFrequencyInHours = ReplayProps.getInt( "longTaskFrequencyInHours", "1" ); timer = new Timer(); if ( quickTaskFrequencyInSeconds != 0 ) { timer.schedule( new CleanupTask.QuickTask(), quickTaskFrequencyInSeconds * 1000, quickTaskFrequencyInSeconds * 1000 ); } if ( quickTaskFrequencyInSeconds != 0 ) { timer.schedule( new CleanupTask.LongTask(), 60 * 60 * 1000 * longTaskFrequencyInHours, 60 * 60 * 1000 * longTaskFrequencyInHours ); } final int httpPort = ReplayProps.getInt( "httpPort", "80" ); final Server server = new Server( httpPort ); ServletContextHandler context = new ServletContextHandler( ServletContextHandler.SESSIONS | ServletContextHandler.SECURITY ); context.setContextPath( "/" ); server.setHandler( context ); // Change default timeout to 45 seconds (from 30) /* ServerConnector http = new ServerConnector( server ); //http.setHost( "localhost" ); http.setPort( httpPort ); http.setIdleTimeout( 45000 ); server.addConnector( http ); */ final boolean bTestAuthorize = false; if ( bTestAuthorize ) { context.addServlet(new ServletHolder(new HttpServlet() { private static final long serialVersionUID = 1L; @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { final ServletInputStream inputStream = request.getInputStream(); FileUtils.ReplayOutputStream outputStream = FileUtils.getReplayOutputStream( "authorize.txt", false ); byte[] buffer = new byte[1024]; int readBytes = 0; while ( ( readBytes = inputStream.read( buffer ) ) != -1 ) { outputStream.write( buffer, 0, readBytes ); } inputStream.close(); outputStream.close(); response.setContentType( "text/html" ); response.getWriter().println( "
Worked: " + request.getContentType() + "