Package com.browserup.bup.filters
Class HttpConnectHarCaptureFilter
- java.lang.Object
-
- org.littleshoot.proxy.HttpFiltersAdapter
-
- com.browserup.bup.filters.HttpsAwareFiltersAdapter
-
- com.browserup.bup.filters.HttpConnectHarCaptureFilter
-
- All Implemented Interfaces:
ModifiedRequestAwareFilter,org.littleshoot.proxy.HttpFilters
public class HttpConnectHarCaptureFilter extends HttpsAwareFiltersAdapter implements ModifiedRequestAwareFilter
This filter captures HAR data for HTTP CONNECT requests. CONNECTs are "meta" requests that must be made before HTTPS requests, but are not populated as separate requests in the HAR. Most information from HTTP CONNECTs (such as SSL handshake time, dns resolution time, etc.) is populated in the HAR entry for the first "true" request following the CONNECT. This filter captures the timing-related information and makes it available to subsequent filters through static methods. This filter also handles HTTP CONNECT errors and creates HAR entries for those errors, since there would otherwise not be any record in the HAR of the error (if the CONNECT fails, there will be no subsequent "real" request in which to record the error).
-
-
Field Summary
-
Fields inherited from class com.browserup.bup.filters.HttpsAwareFiltersAdapter
HOST_ATTRIBUTE_NAME, IS_HTTPS_ATTRIBUTE_NAME, ORIGINAL_HOST_ATTRIBUTE_NAME
-
-
Constructor Summary
Constructors Constructor Description HttpConnectHarCaptureFilter(io.netty.handler.codec.http.HttpRequest originalRequest, io.netty.channel.ChannelHandlerContext ctx, Har har, java.lang.String currentPageRef)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description io.netty.handler.codec.http.HttpResponseclientToProxyRequest(io.netty.handler.codec.http.HttpObject httpObject)static HttpConnectTimingconsumeConnectTimingForConnection(java.net.InetSocketAddress clientAddress)Retrieves and removes (thus "consumes") the SSL timing information from the connection cache for the specified address.voidproxyToServerConnectionFailed()voidproxyToServerConnectionQueued()voidproxyToServerConnectionSSLHandshakeStarted()voidproxyToServerConnectionStarted()voidproxyToServerConnectionSucceeded(io.netty.channel.ChannelHandlerContext serverCtx)voidproxyToServerRequestSending()voidproxyToServerRequestSent()voidproxyToServerResolutionFailed(java.lang.String hostAndPort)java.net.InetSocketAddressproxyToServerResolutionStarted(java.lang.String resolvingServerHostAndPort)voidproxyToServerResolutionSucceeded(java.lang.String serverHostAndPort, java.net.InetSocketAddress resolvedRemoteAddress)voidserverToProxyResponseReceiving()voidserverToProxyResponseTimedOut()voidsetModifiedHttpRequest(io.netty.handler.codec.http.HttpRequest modifiedHttpRequest)Notifies implementing classes of the modified HttpRequest that will be sent to the server, reflecting all modifications from filters.-
Methods inherited from class com.browserup.bup.filters.HttpsAwareFiltersAdapter
getFullUrl, getHost, getHostAndPort, getOriginalUrl, isHttps
-
-
-
-
Constructor Detail
-
HttpConnectHarCaptureFilter
public HttpConnectHarCaptureFilter(io.netty.handler.codec.http.HttpRequest originalRequest, io.netty.channel.ChannelHandlerContext ctx, Har har, java.lang.String currentPageRef)
-
-
Method Detail
-
clientToProxyRequest
public io.netty.handler.codec.http.HttpResponse clientToProxyRequest(io.netty.handler.codec.http.HttpObject httpObject)
- Specified by:
clientToProxyRequestin interfaceorg.littleshoot.proxy.HttpFilters- Overrides:
clientToProxyRequestin classorg.littleshoot.proxy.HttpFiltersAdapter
-
proxyToServerResolutionFailed
public void proxyToServerResolutionFailed(java.lang.String hostAndPort)
- Specified by:
proxyToServerResolutionFailedin interfaceorg.littleshoot.proxy.HttpFilters- Overrides:
proxyToServerResolutionFailedin classorg.littleshoot.proxy.HttpFiltersAdapter
-
proxyToServerConnectionFailed
public void proxyToServerConnectionFailed()
- Specified by:
proxyToServerConnectionFailedin interfaceorg.littleshoot.proxy.HttpFilters- Overrides:
proxyToServerConnectionFailedin classorg.littleshoot.proxy.HttpFiltersAdapter
-
proxyToServerConnectionSucceeded
public void proxyToServerConnectionSucceeded(io.netty.channel.ChannelHandlerContext serverCtx)
- Specified by:
proxyToServerConnectionSucceededin interfaceorg.littleshoot.proxy.HttpFilters- Overrides:
proxyToServerConnectionSucceededin classorg.littleshoot.proxy.HttpFiltersAdapter
-
proxyToServerConnectionSSLHandshakeStarted
public void proxyToServerConnectionSSLHandshakeStarted()
- Specified by:
proxyToServerConnectionSSLHandshakeStartedin interfaceorg.littleshoot.proxy.HttpFilters- Overrides:
proxyToServerConnectionSSLHandshakeStartedin classorg.littleshoot.proxy.HttpFiltersAdapter
-
serverToProxyResponseTimedOut
public void serverToProxyResponseTimedOut()
- Specified by:
serverToProxyResponseTimedOutin interfaceorg.littleshoot.proxy.HttpFilters- Overrides:
serverToProxyResponseTimedOutin classorg.littleshoot.proxy.HttpFiltersAdapter
-
proxyToServerConnectionQueued
public void proxyToServerConnectionQueued()
- Specified by:
proxyToServerConnectionQueuedin interfaceorg.littleshoot.proxy.HttpFilters- Overrides:
proxyToServerConnectionQueuedin classorg.littleshoot.proxy.HttpFiltersAdapter
-
proxyToServerResolutionStarted
public java.net.InetSocketAddress proxyToServerResolutionStarted(java.lang.String resolvingServerHostAndPort)
- Specified by:
proxyToServerResolutionStartedin interfaceorg.littleshoot.proxy.HttpFilters- Overrides:
proxyToServerResolutionStartedin classorg.littleshoot.proxy.HttpFiltersAdapter
-
proxyToServerResolutionSucceeded
public void proxyToServerResolutionSucceeded(java.lang.String serverHostAndPort, java.net.InetSocketAddress resolvedRemoteAddress)- Specified by:
proxyToServerResolutionSucceededin interfaceorg.littleshoot.proxy.HttpFilters- Overrides:
proxyToServerResolutionSucceededin classorg.littleshoot.proxy.HttpFiltersAdapter
-
proxyToServerConnectionStarted
public void proxyToServerConnectionStarted()
- Specified by:
proxyToServerConnectionStartedin interfaceorg.littleshoot.proxy.HttpFilters- Overrides:
proxyToServerConnectionStartedin classorg.littleshoot.proxy.HttpFiltersAdapter
-
proxyToServerRequestSending
public void proxyToServerRequestSending()
- Specified by:
proxyToServerRequestSendingin interfaceorg.littleshoot.proxy.HttpFilters- Overrides:
proxyToServerRequestSendingin classorg.littleshoot.proxy.HttpFiltersAdapter
-
proxyToServerRequestSent
public void proxyToServerRequestSent()
- Specified by:
proxyToServerRequestSentin interfaceorg.littleshoot.proxy.HttpFilters- Overrides:
proxyToServerRequestSentin classorg.littleshoot.proxy.HttpFiltersAdapter
-
serverToProxyResponseReceiving
public void serverToProxyResponseReceiving()
- Specified by:
serverToProxyResponseReceivingin interfaceorg.littleshoot.proxy.HttpFilters- Overrides:
serverToProxyResponseReceivingin classorg.littleshoot.proxy.HttpFiltersAdapter
-
consumeConnectTimingForConnection
public static HttpConnectTiming consumeConnectTimingForConnection(java.net.InetSocketAddress clientAddress)
Retrieves and removes (thus "consumes") the SSL timing information from the connection cache for the specified address.- Parameters:
clientAddress- the address of the client connection that established the HTTP tunnel- Returns:
- the timing information for the tunnel previously established from the clientAddress
-
setModifiedHttpRequest
public void setModifiedHttpRequest(io.netty.handler.codec.http.HttpRequest modifiedHttpRequest)
Description copied from interface:ModifiedRequestAwareFilterNotifies implementing classes of the modified HttpRequest that will be sent to the server, reflecting all modifications from filters.- Specified by:
setModifiedHttpRequestin interfaceModifiedRequestAwareFilter- Parameters:
modifiedHttpRequest- the modified HttpRequest sent to the server
-
-