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 int
DEFAULT_POST_BAN_TIME
static int
DEFAULT_POST_MAX
static int
DEFAULT_POST_TOTAL_BAN_TIME
static int
DEFAULT_POST_TOTAL_MAX
static int
DEFAULT_POST_WINDOW
protected static String
ERR_REQUEST_TIMEOUT
static String
OPT_POST_BAN_TIME
static String
OPT_POST_MAX
static String
OPT_POST_TOTAL_BAN_TIME
static String
OPT_POST_TOTAL_MAX
static String
OPT_POST_WINDOW
all of these in SECONDSstatic String
OPT_REJECT_INPROXY
static String
OPT_REJECT_REFERER
static String
OPT_REJECT_USER_AGENTS
static String
OPT_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 void
blockingHandle(I2PSocket socket)
Called by the thread pool of I2PSocket handlersboolean
close(boolean forced)
Note that the tunnel can be reopened after this by calling startRunning().protected static String
formatHeaders(Map<String,List<String>> headers, StringBuilder command)
void
optionsUpdated(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.void
startRunning()
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:I2PTunnelServer
Start running the I2PTunnelServer. Warning, blocks while connecting to router and building tunnels;- Overrides:
startRunning
in classI2PTunnelServer
-
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 classI2PTunnelServer
- 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 classI2PTunnelServer
- Since:
- 0.9.9
-
blockingHandle
protected void blockingHandle(I2PSocket socket)
Called by the thread pool of I2PSocket handlers- Overrides:
blockingHandle
in 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
-
-