/*
* Jitsi Videobridge, OpenSource video conferencing.
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package org.jitsi.videobridge.openfire;
import org.jivesoftware.util.*;
import org.slf4j.*;
import org.slf4j.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletOutputStream;
import java.io.*;
import java.net.*;
import java.util.*;
import java.text.*;
public class HttpProxy extends HttpServlet
{
private static final Logger Log = LoggerFactory.getLogger(HttpProxy.class);
public static final long serialVersionUID = 24362462L;
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
Log.info("HttpProxy - doGet start");
String url = request.getParameter("url");
if (url != null) {
writeHeader(url, response);
writeGet(url, response.getOutputStream());
}
}
catch(Exception e) {
Log.info("HttpProxy doGet Error: " + e.toString());
}
}
private void writeHeader(String urlString, HttpServletResponse response)
{
try {
response.setHeader("Expires", "Sat, 6 May 1995 12:00:00 GMT");
response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
response.addHeader("Cache-Control", "post-check=0, pre-check=0");
response.setHeader("Pragma", "no-cache");
if (urlString.endsWith(".pdf"))
response.setHeader("Content-Type", "application/pdf");
else
response.setHeader("Content-Type", "text/html");
response.setHeader("Connection", "close");
}
catch(Exception e)
{
Log.info("HttpProxy writeHeader Error: " + e.toString());
}
}
private void writeGet(String urlString, ServletOutputStream out)
{
byte[] buffer = new byte[4096];
try{
URL url = new URL(urlString);
URLConnection urlConn = url.openConnection();
InputStream inStream = urlConn.getInputStream();
int n = -1;
while ( (n = inStream.read(buffer)) != -1)
{
out.write(buffer, 0, n);
}
out.close();
} catch(MalformedURLException e){
Log.info("HttpProxy writeGet MalformedURLException", e);
} catch(IOException e1){
Log.info("HttpProxy writeGet IOException", e1);
} catch (Exception e2) {
Log.info("HttpProxy - writeGet Exception", e2);
}
}
}