Move of HTTPProxy and HTTPProxyServlet to web-framework project

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@8148 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Kevin Roast
2008-02-01 13:57:13 +00:00
parent d520c4c311
commit 7708e9294d
3 changed files with 1 additions and 269 deletions

View File

@@ -38,7 +38,6 @@ import javax.servlet.http.HttpServletResponse;
import org.alfresco.config.Config; import org.alfresco.config.Config;
import org.alfresco.config.ConfigService; import org.alfresco.config.ConfigService;
import org.alfresco.repo.content.MimetypeMap; import org.alfresco.repo.content.MimetypeMap;
import org.alfresco.web.app.servlet.HTTPProxy;
import org.alfresco.web.config.OpenSearchConfigElement; import org.alfresco.web.config.OpenSearchConfigElement;
import org.alfresco.web.config.OpenSearchConfigElement.EngineConfig; import org.alfresco.web.config.OpenSearchConfigElement.EngineConfig;
import org.alfresco.web.config.OpenSearchConfigElement.ProxyConfig; import org.alfresco.web.config.OpenSearchConfigElement.ProxyConfig;
@@ -47,6 +46,7 @@ import org.alfresco.web.scripts.FormatRegistry;
import org.alfresco.web.scripts.WebScriptException; import org.alfresco.web.scripts.WebScriptException;
import org.alfresco.web.scripts.WebScriptRequest; import org.alfresco.web.scripts.WebScriptRequest;
import org.alfresco.web.scripts.WebScriptResponse; import org.alfresco.web.scripts.WebScriptResponse;
import org.alfresco.web.scripts.servlet.HTTPProxy;
import org.alfresco.web.scripts.servlet.WebScriptServletResponse; import org.alfresco.web.scripts.servlet.WebScriptServletResponse;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
@@ -314,5 +314,4 @@ public class SearchProxy extends AbstractWebScript implements InitializingBean
} }
return proxyUrl; return proxyUrl;
} }
} }

View File

@@ -1,141 +0,0 @@
/*
* Copyright (C) 2005-2007 Alfresco Software Limited.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* As a special exception to the terms and conditions of version 2.0 of
* the GPL, you may redistribute this Program in connection with Free/Libre
* and Open Source Software ("FLOSS") applications as described in Alfresco's
* FLOSS exception. You should have recieved a copy of the text describing
* the FLOSS exception, and it is also available here:
* http://www.alfresco.com/legal/licensing"
*/
package org.alfresco.web.app.servlet;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import javax.servlet.http.HttpServletResponse;
/**
* Simple server-side HTTP Request / Response
*
* @author davidc
*/
public class HTTPProxy
{
protected URL url;
protected HttpServletResponse response;
/**
* Construct
*
* @param requestUrl url to request
* @param response response to write request back to
* @throws MalformedURLException
*/
public HTTPProxy(String requestUrl, HttpServletResponse response)
throws MalformedURLException
{
this.url = new URL(requestUrl);
this.response = response;
}
/**
* Perform request
*
* @throws IOException
*/
public void service()
throws IOException
{
URLConnection connection = url.openConnection();
initialiseResponse(connection);
InputStream input = connection.getInputStream();
OutputStream output = response.getOutputStream();
try
{
writeResponse(input, output);
}
finally
{
try
{
if (input != null)
{
input.close();
}
if (output != null)
{
output.flush();
output.close();
}
}
catch(IOException e)
{
}
}
}
/**
* Initialise response
*
* @param urlConnection url connection
*/
protected void initialiseResponse(URLConnection urlConnection)
{
String type = urlConnection.getContentType();
if (type != null)
{
int encodingIdx = type.lastIndexOf("charset=");
if (encodingIdx == -1)
{
String encoding = urlConnection.getContentEncoding();
if (encoding != null && encoding.length() > 0)
{
type += ";charset=" + encoding;
}
}
response.setContentType(type);
}
}
/**
* Write response
*
* @param input input stream of request
* @param output output stream of response
* @throws IOException
*/
protected void writeResponse(InputStream input, OutputStream output)
throws IOException
{
byte[] buffer = new byte[1024];
int read = input.read(buffer);
while (read != -1)
{
output.write(buffer, 0, read);
read = input.read(buffer);
}
}
}

View File

@@ -1,126 +0,0 @@
/*
* Copyright (C) 2005-2007 Alfresco Software Limited.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* As a special exception to the terms and conditions of version 2.0 of
* the GPL, you may redistribute this Program in connection with Free/Libre
* and Open Source Software ("FLOSS") applications as described in Alfresco's
* FLOSS exception. You should have recieved a copy of the text describing
* the FLOSS exception, and it is also available here:
* http://www.alfresco.com/legal/licensing"
*/
package org.alfresco.web.app.servlet;
import java.io.IOException;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* HTTP Proxy Servlet
*
* Provides the ability to submit a URL request via the Alfresco Server i.e.
* the Alfresco server acts as a proxy.
*
* This servlet accepts:
*
* /proxy?endpoint=<endpointUrl>[&<argName>=<argValue>]*
*
* Where:
*
* - endpointUrl is the URL to make a request against
* - argName is the name of a URL argument to append to the request
* - argValue is the value of URL argument
*
* E.g.:
*
* /proxy?endpoint=http://www.alfresco.com&arg1=value1&arg2=value2
*
* @author davidc
*/
public class HTTPProxyServlet extends BaseServlet
{
private static final long serialVersionUID = -576405943603122206L;
/**
* @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
protected void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{
String endpoint = null;
String args = null;
Map<String, String[]> parameters = req.getParameterMap();
for (Map.Entry<String, String[]> parameter : parameters.entrySet())
{
String[] values = parameter.getValue();
int startIdx = 0;
if (parameter.getKey().equals("endpoint") && values.length > 0)
{
endpoint = values[0];
startIdx++;
}
for (int i = startIdx; i < values.length; i++)
{
String arg = parameter.getKey() + "=" + values[i];
args = (args == null) ? arg : args + "&" + arg;
}
}
if (endpoint == null || endpoint.length() == 0)
{
throw new IllegalArgumentException("endpoint argument not specified");
}
String url = endpoint + ((args == null) ? "" : "?" + args);
HTTPProxy proxy = new HTTPProxy(url, res);
proxy.service();
}
/**
* Construct a "proxied" URL
*
* Note: the "proxied" URL is a relative url
*
* @param url the URL to proxy
* @return the "proxied" url
*/
public static String createProxyUrl(String url)
{
String proxy = "/proxy";
if (url != null && url.length() > 0)
{
int argIndex = url.lastIndexOf("?");
if (argIndex == -1)
{
proxy += "?endpoint=" + url;
}
else
{
proxy += "?endpoint=" + url.substring(0, argIndex) + "&" + url.substring(argIndex + 1);
}
}
return proxy;
}
}