reapply I2P mods

This commit is contained in:
zzz
2011-12-23 00:58:13 +00:00
parent 99ad70e80a
commit 04cbcf2759

View File

@@ -12,7 +12,7 @@
//limitations under the License. //limitations under the License.
//======================================================================== //========================================================================
package org.mortbay.jetty; package org.mortbay.http;
import java.io.IOException; import java.io.IOException;
import java.io.OutputStream; import java.io.OutputStream;
@@ -25,6 +25,10 @@ import java.util.TimeZone;
import javax.servlet.http.Cookie; import javax.servlet.http.Cookie;
import org.mortbay.component.AbstractLifeCycle; import org.mortbay.component.AbstractLifeCycle;
import org.mortbay.jetty.HttpHeaders;
import org.mortbay.jetty.Request;
import org.mortbay.jetty.RequestLog;
import org.mortbay.jetty.Response;
import org.mortbay.jetty.servlet.PathMap; import org.mortbay.jetty.servlet.PathMap;
import org.mortbay.log.Log; import org.mortbay.log.Log;
import org.mortbay.util.DateCache; import org.mortbay.util.DateCache;
@@ -39,12 +43,27 @@ import org.mortbay.util.Utf8StringBuffer;
* and the Combined Log Format (single log format). * and the Combined Log Format (single log format).
* This log format can be output by most web servers, and almost all web log analysis software can understand * This log format can be output by most web servers, and almost all web log analysis software can understand
* these formats. * these formats.
*
* ** I2P Mods **
*
* For Jetty 5, this extended NCSARequestLog to
* override log() to put in the requestor's destination hash,
* instead of 127.0.0.1,
* which is placed in the X-I2P-DestHash field in the request headers
* by I2PTunnelHTTPServer.
* But we also had to modify NCSARequestLog to do so, to change private
* fields to protected.
*
* So that we will work with system Jetty 6 packages, we just copy the whole thing
* and modify log() as required.
* We leave the package as org.mortbay.http for compatibility with old
* jetty.xml files.
*
* @author Greg Wilkins * @author Greg Wilkins
* @author Nigel Canonizado * @author Nigel Canonizado
* *
* @org.apache.xbean.XBean element="ncsaLog"
*/ */
public class NCSARequestLog extends AbstractLifeCycle implements RequestLog public class I2PRequestLog extends AbstractLifeCycle implements RequestLog
{ {
private String _filename; private String _filename;
private boolean _extended; private boolean _extended;
@@ -70,7 +89,7 @@ public class NCSARequestLog extends AbstractLifeCycle implements RequestLog
private transient char[] _copy; private transient char[] _copy;
public NCSARequestLog() public I2PRequestLog()
{ {
_extended = true; _extended = true;
_append = true; _append = true;
@@ -81,7 +100,7 @@ public class NCSARequestLog extends AbstractLifeCycle implements RequestLog
/** /**
* @param filename The filename for the request log. This may be in the format expected by {@link RolloverFileOutputStream} * @param filename The filename for the request log. This may be in the format expected by {@link RolloverFileOutputStream}
*/ */
public NCSARequestLog(String filename) public I2PRequestLog(String filename)
{ {
_extended = true; _extended = true;
_append = true; _append = true;
@@ -263,8 +282,14 @@ public class NCSARequestLog extends AbstractLifeCycle implements RequestLog
addr = request.getHeader(HttpHeaders.X_FORWARDED_FOR); addr = request.getHeader(HttpHeaders.X_FORWARDED_FOR);
} }
if (addr == null) if (addr == null) {
addr = request.getRemoteAddr(); // TODO offer B32 option
addr = request.getHeader("X-I2P-DestHash");
if(addr != null)
addr += ".i2p";
else
addr = request.getRemoteAddr();
}
buf.append(addr); buf.append(addr);
buf.append(" - "); buf.append(" - ");