net.i2p.i2ptunnel
Class I2PTunnelHTTPServer
java.lang.Object
net.i2p.util.EventDispatcherImpl
net.i2p.i2ptunnel.I2PTunnelTask
net.i2p.i2ptunnel.I2PTunnelServer
net.i2p.i2ptunnel.I2PTunnelHTTPServer
- All Implemented Interfaces:
- Runnable, EventDispatcher
- Direct Known Subclasses:
- I2PTunnelHTTPBidirServer
public class I2PTunnelHTTPServer
- extends I2PTunnelServer
Simple extension to the I2PTunnelServer that filters the HTTP
headers sent from the client to the server, replacing the Host
header with whatever this instance has been configured with, and
if the browser set Accept-encoding: x-i2p-gzip, gzip the http
message body and set Content-encoding: x-i2p-gzip.
Fields inherited from class net.i2p.i2ptunnel.I2PTunnelServer |
__serverId, _clientExecutor, _log, bidir, i2pss, l, localPort, PROP_UNIQUE_LOCAL, PROP_USE_SSL, readTimeout, remoteHost, remotePort, slock, sockMgr, sslLock, task |
Constructor Summary |
I2PTunnelHTTPServer(InetAddress host,
int port,
File privkey,
String privkeyname,
String spoofHost,
Logging l,
EventDispatcher notifyThis,
I2PTunnel tunnel)
|
I2PTunnelHTTPServer(InetAddress host,
int port,
InputStream privData,
String privkeyname,
String spoofHost,
Logging l,
EventDispatcher notifyThis,
I2PTunnel tunnel)
|
I2PTunnelHTTPServer(InetAddress host,
int port,
String privData,
String spoofHost,
Logging l,
EventDispatcher notifyThis,
I2PTunnel tunnel)
|
Methods inherited from class net.i2p.i2ptunnel.I2PTunnelTask |
connected, disconnected, errorOccurred, getId, getTunnel, isOpen, reportAbuse, routerDisconnected, setId, setName, setTunnel, toString |
OPT_POST_WINDOW
public static final String OPT_POST_WINDOW
- all of these in SECONDS
- See Also:
- Constant Field Values
OPT_POST_BAN_TIME
public static final String OPT_POST_BAN_TIME
- See Also:
- Constant Field Values
OPT_POST_TOTAL_BAN_TIME
public static final String OPT_POST_TOTAL_BAN_TIME
- See Also:
- Constant Field Values
OPT_POST_MAX
public static final String OPT_POST_MAX
- See Also:
- Constant Field Values
OPT_POST_TOTAL_MAX
public static final String OPT_POST_TOTAL_MAX
- See Also:
- Constant Field Values
OPT_REJECT_INPROXY
public static final String OPT_REJECT_INPROXY
- See Also:
- Constant Field Values
DEFAULT_POST_WINDOW
public static final int DEFAULT_POST_WINDOW
- See Also:
- Constant Field Values
DEFAULT_POST_BAN_TIME
public static final int DEFAULT_POST_BAN_TIME
- See Also:
- Constant Field Values
DEFAULT_POST_TOTAL_BAN_TIME
public static final int DEFAULT_POST_TOTAL_BAN_TIME
- See Also:
- Constant Field Values
DEFAULT_POST_MAX
public static final int DEFAULT_POST_MAX
- See Also:
- Constant Field Values
DEFAULT_POST_TOTAL_MAX
public static final int DEFAULT_POST_TOTAL_MAX
- See Also:
- Constant Field Values
I2PTunnelHTTPServer
public I2PTunnelHTTPServer(InetAddress host,
int port,
String privData,
String spoofHost,
Logging l,
EventDispatcher notifyThis,
I2PTunnel tunnel)
I2PTunnelHTTPServer
public I2PTunnelHTTPServer(InetAddress host,
int port,
File privkey,
String privkeyname,
String spoofHost,
Logging l,
EventDispatcher notifyThis,
I2PTunnel tunnel)
I2PTunnelHTTPServer
public I2PTunnelHTTPServer(InetAddress host,
int port,
InputStream privData,
String privkeyname,
String spoofHost,
Logging l,
EventDispatcher notifyThis,
I2PTunnel tunnel)
startRunning
public void startRunning()
- Description copied from class:
I2PTunnelServer
- Start running the I2PTunnelServer.
Warning, blocks while connecting to router and building tunnels;
- Overrides:
startRunning
in class I2PTunnelServer
close
public boolean close(boolean forced)
- Description copied from class:
I2PTunnelServer
- Note that the tunnel can be reopened after this by calling startRunning().
This does not release all resources. In particular, the I2PSocketManager remains
and it may have timer threads that continue running.
To release all resources permanently, call destroy().
- Overrides:
close
in class I2PTunnelServer
- Returns:
- success
- Since:
- 0.9.9
optionsUpdated
public void optionsUpdated(I2PTunnel tunnel)
- Description copied from class:
I2PTunnelServer
- Update the I2PSocketManager.
And since 0.9.15, the target host and port.
- Overrides:
optionsUpdated
in class I2PTunnelServer
- Since:
- 0.9.9
blockingHandle
protected void blockingHandle(I2PSocket socket)
- Called by the thread pool of I2PSocket handlers
- Overrides:
blockingHandle
in class I2PTunnelServer
formatHeaders
protected static String formatHeaders(Map<String,List<String>> headers,
StringBuilder command)
- Returns:
- the command followed by the header lines
readHeaders
static Map<String,List<String>> readHeaders(I2PSocket socket,
InputStream in,
StringBuilder command,
String[] skipHeaders,
I2PAppContext ctx)
throws IOException
- From I2P to server: socket non-null, in null.
From server to I2P: socket null, in non-null.
- Parameters:
socket
- if null, use in as InputStreamin
- if null, use socket.getInputStream() as InputStreamcommand
- out parameter, first line
- Throws:
SocketTimeoutException
- if timeout is reached before newline
EOFException
- if EOF is reached before newline
LineTooLongException
- if one header too long, or too many headers, or total size too big
RequestTooLongException
- if too long
BadRequestException
- on bad headers
IOException
- on other errors in the underlying stream