forked from I2P_Developers/i2p.i2p
Console:
- Move multipart form support from susimail to jetty-i2p.jar
so console can use it
- Add multipart form support to formhandler.jsi and FormHandler.java
Reseed:
- Fix zip magic number
- Finish manual reseed from local file
package.html files for jetty-i2p.jar
This commit is contained in:
7
apps/jetty/java/src/net/i2p/jetty/package.html
Normal file
7
apps/jetty/java/src/net/i2p/jetty/package.html
Normal file
@@ -0,0 +1,7 @@
|
||||
<html>
|
||||
<body>
|
||||
<p>
|
||||
Classes for starting Jetty, logging requests, and debug logging to the I2P router log.
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
206
apps/jetty/java/src/net/i2p/servlet/RequestWrapper.java
Normal file
206
apps/jetty/java/src/net/i2p/servlet/RequestWrapper.java
Normal file
@@ -0,0 +1,206 @@
|
||||
/*
|
||||
* Created on Dec 8, 2004
|
||||
*
|
||||
* This file is part of susimail project, see http://susi.i2p/
|
||||
*
|
||||
* Copyright (C) 2004-2005 <susi23@mail.i2p>
|
||||
*
|
||||
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* $Revision: 1.3 $
|
||||
*/
|
||||
package net.i2p.servlet;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.Enumeration;
|
||||
import java.util.Hashtable;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpSession;
|
||||
|
||||
import org.mortbay.servlet.MultiPartRequest;
|
||||
|
||||
/**
|
||||
* Required major changes for Jetty 6
|
||||
* to support change from MultiPartRequest to MultiPartFilter.
|
||||
* See http://docs.codehaus.org/display/JETTY/File+Upload+in+jetty6
|
||||
* Unfortunately, Content-type not available until Jetty 8
|
||||
* See https://bugs.eclipse.org/bugs/show_bug.cgi?id=349110
|
||||
*
|
||||
* So we could either extend and fix MultiPartFilter, and rewrite everything here,
|
||||
* or copy MultiParRequest into our war and fix it so it compiles with Jetty 6.
|
||||
* We do the latter.
|
||||
*
|
||||
* The filter would have been added in web.xml,
|
||||
* see that file, where it's commented out.
|
||||
* Filter isn't supported until Tomcat 7 (Servlet 3.0)
|
||||
*
|
||||
* @author user
|
||||
* @since 0.9.19 moved from susimail so it may be used by routerconsole too
|
||||
*/
|
||||
public class RequestWrapper {
|
||||
|
||||
private final HttpServletRequest httpRequest;
|
||||
private final MultiPartRequest multiPartRequest;
|
||||
private final Hashtable<String, String> cache;
|
||||
private Hashtable<String, Integer> cachedParameterNames;
|
||||
|
||||
/**
|
||||
* @param httpRequest
|
||||
*/
|
||||
public RequestWrapper(HttpServletRequest httpRequest) {
|
||||
cache = new Hashtable<String, String>();
|
||||
this.httpRequest = httpRequest;
|
||||
String contentType = httpRequest.getContentType();
|
||||
MultiPartRequest mpr = null;
|
||||
if( contentType != null && contentType.toLowerCase(Locale.US).startsWith( "multipart/form-data" ) ) {
|
||||
try {
|
||||
mpr = new MultiPartRequest( httpRequest );
|
||||
} catch (IOException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
multiPartRequest = mpr;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param b
|
||||
*/
|
||||
public HttpSession getSession(boolean b) {
|
||||
return httpRequest.getSession( b );
|
||||
}
|
||||
|
||||
/**
|
||||
* @param name Specific parameter key
|
||||
* @return parameter value
|
||||
*/
|
||||
public String getParameter(String name ) {
|
||||
return getParameter( name, null );
|
||||
}
|
||||
|
||||
public HttpSession getSession() {
|
||||
return httpRequest.getSession();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return List of request parameter names
|
||||
*/
|
||||
@SuppressWarnings("unchecked") // TODO-Java6: Remove, type is correct
|
||||
public Enumeration<String> getParameterNames() {
|
||||
if( multiPartRequest != null ) {
|
||||
if( cachedParameterNames == null ) {
|
||||
cachedParameterNames = new Hashtable<String, Integer>();
|
||||
String[] partNames = multiPartRequest.getPartNames();
|
||||
for( int i = 0; i < partNames.length; i++ )
|
||||
cachedParameterNames.put( partNames[i], Integer.valueOf( i ) );
|
||||
}
|
||||
return cachedParameterNames.keys();
|
||||
}
|
||||
else
|
||||
return httpRequest.getParameterNames();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return The total length of the content.
|
||||
*/
|
||||
public int getContentLength() {
|
||||
return httpRequest.getContentLength();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return The content type of the request.
|
||||
*/
|
||||
public String getContentType() {
|
||||
return httpRequest.getContentType();
|
||||
}
|
||||
|
||||
public String getContentType( String partName )
|
||||
{
|
||||
String result = null;
|
||||
if( multiPartRequest != null ) {
|
||||
Hashtable<String, String> params = multiPartRequest.getParams( partName );
|
||||
for( Map.Entry<String, String> e : params.entrySet() ) {
|
||||
String key = e.getKey();
|
||||
if( key.toLowerCase(Locale.US).compareToIgnoreCase( "content-type") == 0 ) {
|
||||
String value = e.getValue();
|
||||
int i = value.indexOf( ";" );
|
||||
if( i != -1 )
|
||||
result = value.substring( 0, i );
|
||||
else
|
||||
result = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public Object getAttribute(String string) {
|
||||
return httpRequest.getAttribute( string );
|
||||
}
|
||||
|
||||
public String getParameter( String name, String defaultValue )
|
||||
{
|
||||
String result = defaultValue;
|
||||
if( multiPartRequest != null ) {
|
||||
String str = cache.get(name);
|
||||
if( str != null ) {
|
||||
result = str;
|
||||
}
|
||||
else {
|
||||
String[] partNames = multiPartRequest.getPartNames();
|
||||
for( int i = 0; i < partNames.length; i++ )
|
||||
if( partNames[i].compareToIgnoreCase( name ) == 0 ) {
|
||||
str = multiPartRequest.getString( partNames[i] );
|
||||
if( str != null ) {
|
||||
result = str;
|
||||
cache.put( name, result );
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
String str = httpRequest.getParameter( name );
|
||||
if( str != null )
|
||||
result = str;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public String getFilename(String partName )
|
||||
{
|
||||
String result = null;
|
||||
if( multiPartRequest != null ) {
|
||||
String str = multiPartRequest.getFilename( partName );
|
||||
if( str != null )
|
||||
result = str;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public InputStream getInputStream(String partName )
|
||||
{
|
||||
InputStream result = null;
|
||||
if( multiPartRequest != null ) {
|
||||
result = multiPartRequest.getInputStream( partName );
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
7
apps/jetty/java/src/net/i2p/servlet/filters/package.html
Normal file
7
apps/jetty/java/src/net/i2p/servlet/filters/package.html
Normal file
@@ -0,0 +1,7 @@
|
||||
<html>
|
||||
<body>
|
||||
<p>
|
||||
XSS filter, since 0.9.14.
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
11
apps/jetty/java/src/net/i2p/servlet/package.html
Normal file
11
apps/jetty/java/src/net/i2p/servlet/package.html
Normal file
@@ -0,0 +1,11 @@
|
||||
<html>
|
||||
<body>
|
||||
<p>
|
||||
RequestWrapper was a susimail class,
|
||||
moved from susimail to jetty-i2p.jar when we needed them in the router console also.
|
||||
As of 0.9.19.
|
||||
Requires org.mortbay classes also in this jar.
|
||||
Will be maintained as a public API until we move to Tomcat 7 (servlet 3.0).
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user