public class HTTPProxyCallback extends java.lang.Object implements ProxyCallback
Modifier and Type | Class and Description |
---|---|
class |
HTTPProxyCallback.DownstreamUnhandledException |
static class |
HTTPProxyCallback.HTTPConnectionHeader |
private static interface |
HTTPProxyCallback.IHTTPHelper |
Modifier and Type | Field and Description |
---|---|
(package private) static java.lang.String |
CRLF |
private static HTTPProxyCallback.IHTTPHelper |
DOWNSTREAM_HELPER |
private static boolean |
FIRE_EVENT |
static java.lang.String |
HTTP_ACCEPT |
static java.lang.String |
HTTP_ACCEPT_CHARSET |
static java.lang.String |
HTTP_ACCEPT_ENCODING |
static java.lang.String |
HTTP_ACCEPT_LANGUAGE |
static java.lang.String |
HTTP_ATTR_CLOSE |
static java.lang.String |
HTTP_ATTR_KEEP_ALIVE |
static java.lang.String |
HTTP_CACHE_CONTROL |
static java.lang.String |
HTTP_CONNECTION |
static java.lang.String |
HTTP_CONTENT_ENCODING |
static java.lang.String |
HTTP_CONTENT_LENGTH |
static java.lang.String |
HTTP_CONTENT_TYPE |
static java.lang.String |
HTTP_COOKIE |
(package private) static java.lang.String |
HTTP_HEADER_DELIM |
(package private) static java.lang.String |
HTTP_HEADER_END |
(package private) static byte[] |
HTTP_HEADER_END_BYTES |
static java.lang.String |
HTTP_HOST |
static java.lang.String |
HTTP_IE_UA_CPU |
static java.lang.String |
HTTP_KEEP_ALIVE |
static java.lang.String |
HTTP_LOCATION |
static java.lang.String |
HTTP_PRAGMA |
static java.lang.String |
HTTP_PROXY_CONNECTION |
static java.lang.String |
HTTP_RANGE |
static java.lang.String |
HTTP_REFERER |
(package private) static java.lang.String[] |
HTTP_REQUEST_METHODS |
(package private) static byte[][] |
HTTP_REQUEST_METHODS_BYTES |
static java.lang.String |
HTTP_START_LINE_KEY |
static java.lang.String |
HTTP_USER_AGENT |
static java.lang.String |
HTTP_VERSION_PREFIX |
(package private) static byte[] |
HTTP_VERSION_PREFIX_BYTES |
private boolean |
m_bBlockHTTPListeners |
private java.util.Hashtable |
m_connectionHTTPHeaders
Container for the Headers of a whole HTTP Connection
including Request and Response.
|
private java.util.Hashtable |
m_downstreamBytes |
private java.util.Vector |
m_httpConnectionListeners |
private java.util.Hashtable |
m_unfinishedRequests
request messages whose parsing hasn't finished yet
|
private java.util.Hashtable |
m_unfinishedResponses
response messages whose parsing hasn't finished yet
|
private java.util.Hashtable |
m_upstreamBytes |
(package private) static int |
MESSAGE_TYPE_REQUEST |
(package private) static int |
MESSAGE_TYPE_RESPONSE |
private static boolean |
ms_bCountRedirect |
private static int |
ms_iRedirectProbability |
private static long |
ms_lCountHTML |
private static long |
ms_lNextRedirect |
private static long |
ms_lTotalCountHTML |
(package private) static java.lang.String |
MSG_INVALID_LINETERM_REQUEST |
(package private) static java.lang.String |
MSG_INVALID_LINETERM_RESPONSE |
static java.lang.String |
MSG_URL_ANONYMITY_TEST |
private static MyRandom |
RANDOM |
static int |
REDIRECT_ANONYMITY_TEST |
static int |
REDIRECT_SQUID_REMINDER |
private static java.lang.Object |
SYNC_COUNTER |
private static HTTPProxyCallback.IHTTPHelper |
UPSTREAM_HELPER |
STATUS_DELAY, STATUS_FINISHED, STATUS_PROCESSABLE
Constructor and Description |
---|
HTTPProxyCallback() |
Modifier and Type | Method and Description |
---|---|
void |
addHTTPConnectionListener(AbstractHTTPConnectionListener listener) |
protected void |
blockHTTPListeners(boolean a_bBlock) |
static boolean |
checkValidity(java.lang.String headerData)
checks whether the HTTP message headers fragment specified by headerData
contains invalid line terminations, i.e. all terminations other
than CRLF
|
void |
closeRequest(AnonProxyRequest anonRequest)
Signals to the
HTTPProxyCallback that the given
AnonProxyRequest is being closed and all the related stored data
can be discarded. |
private long |
countContentBytes(AnonProxyRequest anonRequest,
int contentBytes,
java.util.Hashtable contentBytesCount,
boolean fire) |
private boolean |
extractHeaderParts(AnonProxyRequest anonRequest,
java.lang.String chunkData,
int messageType) |
void |
fireDownstreamContentBytesReceived(HTTPConnectionEvent event) |
void |
fireRequestHeadersReceived(HTTPConnectionEvent event) |
void |
fireResponseHeadersReceived(HTTPConnectionEvent event) |
void |
fireUpstreamContentBytesReceived(HTTPConnectionEvent event) |
private long |
getContentBytes(AnonProxyRequest anonRequest,
java.util.Hashtable contentByteCount) |
long |
getDownStreamContentBytes(AnonProxyRequest anonRequest) |
private HTTPConnectionEvent |
getEvent(AnonProxyRequest anonRequest) |
long |
getUpStreamContentBytes(AnonProxyRequest anonRequest) |
int |
handleDownstreamChunk(AnonProxyRequest anonRequest,
ProxyCallbackBuffer buffer)
Processes a chunk of received data, before it is given to the client of the
proxy.
|
private int |
handleStreamChunk(AnonProxyRequest anonRequest,
ProxyCallbackBuffer buffer,
int a_messageType,
HTTPProxyCallback.IHTTPHelper a_helper) |
int |
handleUpstreamChunk(AnonProxyRequest anonRequest,
ProxyCallbackBuffer buffer)
Processes a chunk of data, before it is sent out.
|
private boolean |
hasAlignedHTTPStartLine(byte[] chunk,
int off,
int len,
int messageType) |
private boolean |
hasAlignedHTTPStartLine(java.lang.String chunkData,
int messageType) |
static int |
indexOfHTTPHeaderEnd(byte[] prefix,
byte[] chunk,
int chunkStartIndex,
int chunkEndIndex)
Returns the index of the first char after the first occurence of the CRLFCRLF termination
in the array 'chunk' or -1 if such a termination sequence was not found.
|
static int |
indexOfHTTPHeaderEnd(byte[] chunk,
int startIndex,
int endIndex)
Returns the index of the first char after the first occurence of the CRLFCRLF termination
in the array 'chunk' or -1 if such a termination sequence was not found.
|
static boolean |
isAnonymityTestDomain(HTTPProxyCallback.HTTPConnectionHeader a_connectionHeader) |
private static boolean |
isAnonymityTestDomain(java.lang.String a_domain) |
static boolean |
isJonDosDomain(HTTPProxyCallback.HTTPConnectionHeader a_connectionHeader) |
private static boolean |
isJonDosDomain(java.lang.String a_domain) |
private static boolean |
isOperatorDomain(java.lang.String a_domain) |
private boolean |
isRequest(byte[] chunk,
int off,
int len)
this method makes a bytewise comparison so we don't have
to turn the whole chunk into a string for header detection.
|
private boolean |
isRequest(java.lang.String chunkData) |
private boolean |
isResponse(byte[] chunk,
int off,
int len) |
private boolean |
isResponse(java.lang.String chunkData) |
static java.lang.String |
parseDomain(java.lang.String a_URL,
boolean a_bRemoveSubdomain) |
private void |
parseHTTPHeader(java.lang.String headerData,
HTTPProxyCallback.HTTPConnectionHeader connHeader,
int headerType) |
static boolean |
redirect(HTTPProxyCallback.HTTPConnectionHeader a_connectionHeader,
int a_redirectTarget) |
void |
removeAllHTTPConnectionListeners() |
void |
removeHTTPConnectionListener(AbstractHTTPConnectionListener listener) |
protected void |
resetRedirect(int a_probability,
boolean a_bCount) |
private static final boolean FIRE_EVENT
private static final MyRandom RANDOM
public static final java.lang.String MSG_URL_ANONYMITY_TEST
static final int MESSAGE_TYPE_REQUEST
static final int MESSAGE_TYPE_RESPONSE
static final java.lang.String CRLF
static final java.lang.String HTTP_HEADER_END
static final byte[] HTTP_HEADER_END_BYTES
static final java.lang.String HTTP_HEADER_DELIM
public static final java.lang.String HTTP_START_LINE_KEY
public static final java.lang.String HTTP_VERSION_PREFIX
static final byte[] HTTP_VERSION_PREFIX_BYTES
static final java.lang.String[] HTTP_REQUEST_METHODS
static final byte[][] HTTP_REQUEST_METHODS_BYTES
static final java.lang.String MSG_INVALID_LINETERM_REQUEST
static final java.lang.String MSG_INVALID_LINETERM_RESPONSE
public static final java.lang.String HTTP_CONTENT_LENGTH
public static final java.lang.String HTTP_CONTENT_ENCODING
public static final java.lang.String HTTP_CONTENT_TYPE
public static final java.lang.String HTTP_HOST
public static final java.lang.String HTTP_USER_AGENT
public static final java.lang.String HTTP_ACCEPT
public static final java.lang.String HTTP_LOCATION
public static final java.lang.String HTTP_ACCEPT_LANGUAGE
public static final java.lang.String HTTP_ACCEPT_ENCODING
public static final java.lang.String HTTP_ACCEPT_CHARSET
public static final java.lang.String HTTP_KEEP_ALIVE
public static final java.lang.String HTTP_ATTR_KEEP_ALIVE
public static final java.lang.String HTTP_ATTR_CLOSE
public static final java.lang.String HTTP_PROXY_CONNECTION
public static final java.lang.String HTTP_CONNECTION
public static final java.lang.String HTTP_REFERER
public static final java.lang.String HTTP_CACHE_CONTROL
public static final java.lang.String HTTP_COOKIE
public static final java.lang.String HTTP_PRAGMA
public static final java.lang.String HTTP_RANGE
public static final java.lang.String HTTP_IE_UA_CPU
public static final int REDIRECT_ANONYMITY_TEST
public static final int REDIRECT_SQUID_REMINDER
private static long ms_lCountHTML
private static long ms_lTotalCountHTML
private static long ms_lNextRedirect
private static int ms_iRedirectProbability
private static boolean ms_bCountRedirect
private static final java.lang.Object SYNC_COUNTER
private java.util.Hashtable m_connectionHTTPHeaders
private java.util.Hashtable m_unfinishedRequests
private java.util.Hashtable m_unfinishedResponses
private java.util.Hashtable m_downstreamBytes
private java.util.Hashtable m_upstreamBytes
private java.util.Vector m_httpConnectionListeners
private boolean m_bBlockHTTPListeners
private static final HTTPProxyCallback.IHTTPHelper UPSTREAM_HELPER
private static final HTTPProxyCallback.IHTTPHelper DOWNSTREAM_HELPER
public int handleUpstreamChunk(AnonProxyRequest anonRequest, ProxyCallbackBuffer buffer) throws ProxyCallbackNotProcessableException
ProxyCallback
handleUpstreamChunk
in interface ProxyCallback
anonRequest
- The request the data is from.buffer
- Data that is sent to and from the ProxyCallback object.ProxyCallbackNotProcessableException
- if an error occurred during
processing of the data.public int handleDownstreamChunk(AnonProxyRequest anonRequest, ProxyCallbackBuffer buffer) throws ProxyCallbackNotProcessableException
ProxyCallback
handleDownstreamChunk
in interface ProxyCallback
anonRequest
- The request the data is from.buffer
- Data that is sent to and from the ProxyCallback object.ProxyCallbackNotProcessableException
- if an error occurred during
processing of the data.private int handleStreamChunk(AnonProxyRequest anonRequest, ProxyCallbackBuffer buffer, int a_messageType, HTTPProxyCallback.IHTTPHelper a_helper) throws ProxyCallbackNotProcessableException
private long countContentBytes(AnonProxyRequest anonRequest, int contentBytes, java.util.Hashtable contentBytesCount, boolean fire)
public long getUpStreamContentBytes(AnonProxyRequest anonRequest)
public long getDownStreamContentBytes(AnonProxyRequest anonRequest)
private long getContentBytes(AnonProxyRequest anonRequest, java.util.Hashtable contentByteCount)
private HTTPConnectionEvent getEvent(AnonProxyRequest anonRequest)
private boolean extractHeaderParts(AnonProxyRequest anonRequest, java.lang.String chunkData, int messageType) throws ProxyCallbackNotProcessableException, HTTPProxyCallback.DownstreamUnhandledException
public static boolean isJonDosDomain(HTTPProxyCallback.HTTPConnectionHeader a_connectionHeader)
public static boolean isAnonymityTestDomain(HTTPProxyCallback.HTTPConnectionHeader a_connectionHeader)
protected void resetRedirect(int a_probability, boolean a_bCount)
public static boolean redirect(HTTPProxyCallback.HTTPConnectionHeader a_connectionHeader, int a_redirectTarget)
private static boolean isJonDosDomain(java.lang.String a_domain)
private static boolean isOperatorDomain(java.lang.String a_domain)
private static boolean isAnonymityTestDomain(java.lang.String a_domain)
public static boolean checkValidity(java.lang.String headerData)
headerData
- the fragment of the HTTP headers of a HTTP messageprivate boolean hasAlignedHTTPStartLine(java.lang.String chunkData, int messageType)
private boolean hasAlignedHTTPStartLine(byte[] chunk, int off, int len, int messageType)
private boolean isRequest(java.lang.String chunkData)
private boolean isRequest(byte[] chunk, int off, int len)
chunk
- len
- private boolean isResponse(java.lang.String chunkData)
private boolean isResponse(byte[] chunk, int off, int len)
public static int indexOfHTTPHeaderEnd(byte[] chunk, int startIndex, int endIndex)
public static int indexOfHTTPHeaderEnd(byte[] prefix, byte[] chunk, int chunkStartIndex, int chunkEndIndex)
private void parseHTTPHeader(java.lang.String headerData, HTTPProxyCallback.HTTPConnectionHeader connHeader, int headerType)
public void addHTTPConnectionListener(AbstractHTTPConnectionListener listener)
public void removeHTTPConnectionListener(AbstractHTTPConnectionListener listener)
public void removeAllHTTPConnectionListeners()
public void fireRequestHeadersReceived(HTTPConnectionEvent event)
public void fireResponseHeadersReceived(HTTPConnectionEvent event)
protected void blockHTTPListeners(boolean a_bBlock)
public void fireDownstreamContentBytesReceived(HTTPConnectionEvent event)
public void fireUpstreamContentBytesReceived(HTTPConnectionEvent event)
public void closeRequest(AnonProxyRequest anonRequest)
HTTPProxyCallback
that the given
AnonProxyRequest
is being closed and all the related stored data
can be discarded.closeRequest
in interface ProxyCallback
public static java.lang.String parseDomain(java.lang.String a_URL, boolean a_bRemoveSubdomain)
Copyright © 2023. All rights reserved.