public class TrafficMonitorFilter
extends net.lightbody.bmp.filters.HttpsAwareFiltersAdapter
HttpFilters that sends a notification when an HTTP response
is received. This is still a pretty rough implementation, but it may suffice for
limited use cases at this stage. Don't expect the HTTP request/response objects
contained in the notification to be perfect representations.
Most of this code is copied from HarCaptureFilter.
The main difference is that the HAR filter keeps adding to the HAR object when
HTTP requests or responses are intercepted, but this implementation accumulates
(most of) the same data and packages it up in a notification when the request/response
interaction is completed. The interaction is considered completed when one of four methods
is invoked:
serverToProxyResponse(HttpObject) if everything goes normally,| Constructor and Description |
|---|
TrafficMonitorFilter(io.netty.handler.codec.http.HttpRequest originalRequest,
io.netty.channel.ChannelHandlerContext ctx,
TrafficMonitor trafficMonitor)
Create a new instance of the HarCaptureFilter that will capture request and response information.
|
| Modifier and Type | Method and Description |
|---|---|
protected void |
captureHeaders(io.netty.handler.codec.http.HttpHeaders headers,
net.lightbody.bmp.core.har.HarRequest harRequest) |
protected void |
captureQueryParameters(io.netty.handler.codec.http.HttpRequest httpRequest,
net.lightbody.bmp.core.har.HarRequest harRequest) |
protected void |
captureRedirectUrl(io.netty.handler.codec.http.HttpResponse httpResponse,
net.lightbody.bmp.core.har.HarResponse harResponse) |
protected void |
captureRequestContent(io.netty.handler.codec.http.HttpRequest httpRequest,
byte[] fullMessage,
net.lightbody.bmp.core.har.HarRequest harRequest) |
protected void |
captureRequestHeaders(io.netty.handler.codec.http.HttpRequest httpRequest,
net.lightbody.bmp.core.har.HarRequest harRequest) |
protected void |
captureResponse(io.netty.handler.codec.http.HttpResponse httpResponse,
net.lightbody.bmp.core.har.HarResponse harResponse) |
protected void |
captureResponseContent(io.netty.handler.codec.http.HttpResponse httpResponse,
byte[] fullMessage,
net.lightbody.bmp.core.har.HarResponse harResponse) |
protected void |
captureResponseHeaders(io.netty.handler.codec.http.HttpResponse httpResponse,
net.lightbody.bmp.core.har.HarResponse harResponse) |
protected void |
captureResponseHeaderSize(io.netty.handler.codec.http.HttpResponse httpResponse,
net.lightbody.bmp.core.har.HarResponse harResponse) |
protected void |
captureResponseMimeType(io.netty.handler.codec.http.HttpResponse httpResponse,
net.lightbody.bmp.core.har.HarResponse harResponse) |
protected void |
captureTrailingHeaders(io.netty.handler.codec.http.LastHttpContent lastHttpContent,
net.lightbody.bmp.core.har.HarRequest harRequest) |
io.netty.handler.codec.http.HttpResponse |
clientToProxyRequest(io.netty.handler.codec.http.HttpObject httpObject) |
protected void |
populateAddressFromCache(io.netty.handler.codec.http.HttpRequest httpRequest)
Populates the serverIpAddress field of the harEntry using the internal hostname to IP address cache.
|
io.netty.handler.codec.http.HttpObject |
proxyToClientResponse(io.netty.handler.codec.http.HttpObject httpObject) |
void |
proxyToServerConnectionFailed() |
void |
proxyToServerRequestSending() |
void |
proxyToServerResolutionFailed(String hostAndPort) |
void |
proxyToServerResolutionSucceeded(String serverHostAndPort,
InetSocketAddress resolvedRemoteAddress) |
io.netty.handler.codec.http.HttpObject |
serverToProxyResponse(io.netty.handler.codec.http.HttpObject httpObject) |
void |
serverToProxyResponseTimedOut() |
getFullUrl, getHost, getHostAndPort, getOriginalUrl, isHttpsproxyToServerConnectionQueued, proxyToServerConnectionSSLHandshakeStarted, proxyToServerConnectionStarted, proxyToServerConnectionSucceeded, proxyToServerRequest, proxyToServerRequestSent, proxyToServerResolutionStarted, serverToProxyResponseReceived, serverToProxyResponseReceivingpublic TrafficMonitorFilter(io.netty.handler.codec.http.HttpRequest originalRequest,
io.netty.channel.ChannelHandlerContext ctx,
TrafficMonitor trafficMonitor)
Regardless of the CaptureTypes specified in dataToCapture, the HarCaptureFilter will always capture:
originalRequest - the original HttpRequest from the HttpFiltersSource factoryctx - channel handler contexttrafficMonitor - traffic monitor (subscriber to notifications from this filter)IllegalArgumentException - if request method is CONNECTpublic io.netty.handler.codec.http.HttpResponse clientToProxyRequest(io.netty.handler.codec.http.HttpObject httpObject)
clientToProxyRequest in interface org.littleshoot.proxy.HttpFiltersclientToProxyRequest in class org.littleshoot.proxy.HttpFiltersAdapterpublic io.netty.handler.codec.http.HttpObject proxyToClientResponse(io.netty.handler.codec.http.HttpObject httpObject)
proxyToClientResponse in interface org.littleshoot.proxy.HttpFiltersproxyToClientResponse in class org.littleshoot.proxy.HttpFiltersAdapterpublic io.netty.handler.codec.http.HttpObject serverToProxyResponse(io.netty.handler.codec.http.HttpObject httpObject)
serverToProxyResponse in interface org.littleshoot.proxy.HttpFiltersserverToProxyResponse in class org.littleshoot.proxy.HttpFiltersAdapterprotected void captureQueryParameters(io.netty.handler.codec.http.HttpRequest httpRequest,
net.lightbody.bmp.core.har.HarRequest harRequest)
protected void captureRequestHeaders(io.netty.handler.codec.http.HttpRequest httpRequest,
net.lightbody.bmp.core.har.HarRequest harRequest)
protected void captureTrailingHeaders(io.netty.handler.codec.http.LastHttpContent lastHttpContent,
net.lightbody.bmp.core.har.HarRequest harRequest)
protected void captureHeaders(io.netty.handler.codec.http.HttpHeaders headers,
net.lightbody.bmp.core.har.HarRequest harRequest)
protected void captureRequestContent(io.netty.handler.codec.http.HttpRequest httpRequest,
byte[] fullMessage,
net.lightbody.bmp.core.har.HarRequest harRequest)
protected void captureResponseContent(io.netty.handler.codec.http.HttpResponse httpResponse,
byte[] fullMessage,
net.lightbody.bmp.core.har.HarResponse harResponse)
protected void captureResponse(io.netty.handler.codec.http.HttpResponse httpResponse,
net.lightbody.bmp.core.har.HarResponse harResponse)
protected void captureResponseMimeType(io.netty.handler.codec.http.HttpResponse httpResponse,
net.lightbody.bmp.core.har.HarResponse harResponse)
protected void captureResponseHeaderSize(io.netty.handler.codec.http.HttpResponse httpResponse,
net.lightbody.bmp.core.har.HarResponse harResponse)
protected void captureResponseHeaders(io.netty.handler.codec.http.HttpResponse httpResponse,
net.lightbody.bmp.core.har.HarResponse harResponse)
protected void captureRedirectUrl(io.netty.handler.codec.http.HttpResponse httpResponse,
net.lightbody.bmp.core.har.HarResponse harResponse)
protected void populateAddressFromCache(io.netty.handler.codec.http.HttpRequest httpRequest)
httpRequest - HTTP request to take the hostname frompublic void proxyToServerResolutionSucceeded(String serverHostAndPort, InetSocketAddress resolvedRemoteAddress)
proxyToServerResolutionSucceeded in interface org.littleshoot.proxy.HttpFiltersproxyToServerResolutionSucceeded in class org.littleshoot.proxy.HttpFiltersAdapterpublic void proxyToServerRequestSending()
proxyToServerRequestSending in interface org.littleshoot.proxy.HttpFiltersproxyToServerRequestSending in class org.littleshoot.proxy.HttpFiltersAdapterpublic void proxyToServerResolutionFailed(String hostAndPort)
proxyToServerResolutionFailed in interface org.littleshoot.proxy.HttpFiltersproxyToServerResolutionFailed in class org.littleshoot.proxy.HttpFiltersAdapterpublic void proxyToServerConnectionFailed()
proxyToServerConnectionFailed in interface org.littleshoot.proxy.HttpFiltersproxyToServerConnectionFailed in class org.littleshoot.proxy.HttpFiltersAdapterpublic void serverToProxyResponseTimedOut()
serverToProxyResponseTimedOut in interface org.littleshoot.proxy.HttpFiltersserverToProxyResponseTimedOut in class org.littleshoot.proxy.HttpFiltersAdapterCopyright © 2016–2018. All rights reserved.