propagate from branch 'i2p.i2p.zzz.test3' (head 20e0d7777d70412d2787ea16c8eb1ddc5fcfceae)

to branch 'i2p.i2p' (head a3189032197fadc3ecba67c5568b8841e8a6105e)
This commit is contained in:
zzz
2009-07-11 19:14:26 +00:00
6 changed files with 43 additions and 6 deletions

View File

@ -2,6 +2,6 @@
<project-private xmlns="http://www.netbeans.org/ns/project-private/1">
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/1"/>
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/1">
<file>file:/root/NetBeansProjects/i2p.i2p/apps/BOB/src/net/i2p/BOB/MUXlisten.java</file>
<file>file:/root/NetBeansProjects/i2p.i2p/apps/BOB/src/net/i2p/BOB/I2PtoTCP.java</file>
</open-files>
</project-private>

View File

@ -19,6 +19,7 @@ import net.i2p.data.DataHelper;
import net.i2p.util.EventDispatcher;
import net.i2p.util.I2PThread;
import net.i2p.util.Log;
import net.i2p.data.Base32;
/**
* Simple extension to the I2PTunnelServer that filters the HTTP
@ -33,6 +34,8 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer {
/** what Host: should we seem to be to the webserver? */
private String _spoofHost;
private static final String HASH_HEADER = "X-I2P-DestHash";
private static final String DEST64_HEADER = "X-I2P-DestB64";
private static final String DEST32_HEADER = "X-I2P-DestB32";
public I2PTunnelHTTPServer(InetAddress host, int port, String privData, String spoofHost, Logging l, EventDispatcher notifyThis, I2PTunnel tunnel) {
super(host, port, privData, l, notifyThis, tunnel);
@ -74,6 +77,9 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer {
StringBuilder command = new StringBuilder(128);
Properties headers = readHeaders(in, command);
headers.setProperty(HASH_HEADER, socket.getPeerDestination().calculateHash().toBase64());
headers.setProperty(DEST32_HEADER, Base32.encode(socket.getPeerDestination().calculateHash().getData()) + ".b32.i2p" );
headers.setProperty(DEST64_HEADER, socket.getPeerDestination().toBase64());
if ( (_spoofHost != null) && (_spoofHost.trim().length() > 0) )
headers.setProperty("Host", _spoofHost);
headers.setProperty("Connection", "close");
@ -361,6 +367,10 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer {
name = "X-Accept-encoding";
else if (HASH_HEADER.equalsIgnoreCase(name))
continue; // Prevent spoofing
else if (DEST64_HEADER.equalsIgnoreCase(name))
continue; // Prevent spoofing
else if (DEST32_HEADER.equalsIgnoreCase(name))
continue; // Prevent spoofing
headers.setProperty(name, value);
if (_log.shouldLog(Log.DEBUG))
_log.debug("Read the header [" + name + "] = [" + value + "]");