Package 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.
-
-
Field Summary
Fields Modifier and Type Field Description static intDEFAULT_POST_BAN_TIMEstatic intDEFAULT_POST_MAXstatic intDEFAULT_POST_TOTAL_BAN_TIMEstatic intDEFAULT_POST_TOTAL_MAXstatic intDEFAULT_POST_WINDOWprotected static StringERR_REQUEST_TIMEOUTstatic StringOPT_POST_BAN_TIMEstatic StringOPT_POST_MAXstatic StringOPT_POST_TOTAL_BAN_TIMEstatic StringOPT_POST_TOTAL_MAXstatic StringOPT_POST_WINDOWall of these in SECONDSstatic StringOPT_REJECT_INPROXYstatic StringOPT_REJECT_REFERERstatic StringOPT_REJECT_USER_AGENTSstatic StringOPT_USER_AGENTS-
Fields inherited from class net.i2p.i2ptunnel.I2PTunnelServer
__serverId, _clientExecutor, _log, bidir, i2pss, l, localPort, PROP_ALT_PKF, PROP_UNIQUE_LOCAL, PROP_USE_SSL, readTimeout, remoteHost, remotePort, slock, sockMgr, sslLock, task
-
Fields inherited from class net.i2p.i2ptunnel.I2PTunnelTask
open
-
-
Constructor Summary
Constructors Constructor Description 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)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidblockingHandle(I2PSocket socket)Called by the thread pool of I2PSocket handlersbooleanclose(boolean forced)Note that the tunnel can be reopened after this by calling startRunning().protected static StringformatHeaders(Map<String,List<String>> headers, StringBuilder command)voidoptionsUpdated(I2PTunnel tunnel)Update the I2PSocketManager.(package private) static Map<String,List<String>>readHeaders(I2PSocket socket, InputStream in, StringBuilder command, String[] skipHeaders, I2PAppContext ctx)From I2P to server: socket non-null, in null.voidstartRunning()Start running the I2PTunnelServer.-
Methods inherited from class net.i2p.i2ptunnel.I2PTunnelServer
destroy, getHandlerCount, getReadTimeout, getSocket, getSocket, run, setReadTimeout, shouldUsePool
-
Methods inherited from class net.i2p.i2ptunnel.I2PTunnelTask
connected, disconnected, errorOccurred, getId, getTunnel, isOpen, reportAbuse, routerDisconnected, setId, setName, setTunnel, toString
-
Methods inherited from class net.i2p.util.EventDispatcherImpl
attachEventDispatcher, detachEventDispatcher, getEventDispatcher, getEvents, getEventValue, ignoreEvents, notifyEvent, unIgnoreEvents, waitEventValue
-
-
-
-
Field Detail
-
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
-
OPT_REJECT_REFERER
public static final String OPT_REJECT_REFERER
- See Also:
- Constant Field Values
-
OPT_REJECT_USER_AGENTS
public static final String OPT_REJECT_USER_AGENTS
- See Also:
- Constant Field Values
-
OPT_USER_AGENTS
public static final String OPT_USER_AGENTS
- 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
-
ERR_REQUEST_TIMEOUT
protected static final String ERR_REQUEST_TIMEOUT
- Since:
- protected since 0.9.33 for I2PTunnelHTTPClientBase, was private
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
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)
-
-
Method Detail
-
startRunning
public void startRunning()
Description copied from class:I2PTunnelServerStart running the I2PTunnelServer. Warning, blocks while connecting to router and building tunnels;- Overrides:
startRunningin classI2PTunnelServer
-
close
public boolean close(boolean forced)
Description copied from class:I2PTunnelServerNote 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:
closein classI2PTunnelServer- Returns:
- success
- Since:
- 0.9.9
-
optionsUpdated
public void optionsUpdated(I2PTunnel tunnel)
Description copied from class:I2PTunnelServerUpdate the I2PSocketManager. And since 0.9.15, the target host and port.- Overrides:
optionsUpdatedin classI2PTunnelServer- Since:
- 0.9.9
-
blockingHandle
protected void blockingHandle(I2PSocket socket)
Called by the thread pool of I2PSocket handlers- Overrides:
blockingHandlein classI2PTunnelServer
-
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. Note: This does not handle RFC 2616 header line splitting, which is obsoleted in RFC 7230.- Parameters:
socket- if null, use in as InputStreamin- if null, use socket.getInputStream() as InputStreamcommand- out parameter, first lineskipHeaders- MUST be lower case- Throws:
SocketTimeoutException- if timeout is reached before newlineEOFException- if EOF is reached before newlinenet.i2p.i2ptunnel.I2PTunnelHTTPServer.LineTooLongException- if one header too long, or too many headers, or total size too bignet.i2p.i2ptunnel.I2PTunnelHTTPServer.RequestTooLongException- if too longnet.i2p.i2ptunnel.I2PTunnelHTTPServer.BadRequestException- on bad headersIOException- on other errors in the underlying stream
-
-