Package org.eclipse.jetty.proxy
Class ConnectHandler
- All Implemented Interfaces:
- Handler,- HandlerContainer,- Container,- Destroyable,- Dumpable,- Dumpable.DumpableContainer,- LifeCycle
Implementation of a Handler that supports HTTP CONNECT.
- 
Nested Class SummaryNested ClassesModifier and TypeClassDescriptionprotected static classprotected classclassclassNested classes/interfaces inherited from class org.eclipse.jetty.server.handler.AbstractHandlerAbstractHandler.ErrorDispatchHandlerNested classes/interfaces inherited from class org.eclipse.jetty.util.component.AbstractLifeCycleAbstractLifeCycle.AbstractLifeCycleListener, AbstractLifeCycle.StopExceptionNested classes/interfaces inherited from interface org.eclipse.jetty.util.component.ContainerContainer.InheritedListener, Container.ListenerNested classes/interfaces inherited from interface org.eclipse.jetty.util.component.DumpableDumpable.DumpableContainerNested classes/interfaces inherited from interface org.eclipse.jetty.util.component.LifeCycleLifeCycle.Listener
- 
Field SummaryFieldsFields inherited from class org.eclipse.jetty.server.handler.HandlerWrapper_handler
- 
Constructor SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionprotected voidconnectToServer(javax.servlet.http.HttpServletRequest request, String host, int port, Promise<SocketChannel> promise) protected voiddoStart()Starts the managed lifecycle beans in the order they were added.intlonglongvoidhandle(String target, Request jettyRequest, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) Handle a request.protected booleanhandleAuthentication(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, String address) Handles the authentication before setting up the tunnel to the remote server.protected voidhandleConnect(Request baseRequest, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, String serverAddress) Handles a CONNECT request.protected InetSocketAddressnewConnectAddress(String host, int port) Creates the server address to connect to.protected ConnectHandler.DownstreamConnectionnewDownstreamConnection(EndPoint endPoint, ConcurrentMap<String, Object> context) protected SelectorManagerprotected ConnectHandler.UpstreamConnectionnewUpstreamConnection(EndPoint endPoint, ConnectHandler.ConnectContext connectContext) protected voidonConnectFailure(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, javax.servlet.AsyncContext asyncContext, Throwable failure) protected voidonConnectSuccess(ConnectHandler.ConnectContext connectContext, ConnectHandler.UpstreamConnection upstreamConnection) protected voidprepareContext(javax.servlet.http.HttpServletRequest request, ConcurrentMap<String, Object> context) protected intread(EndPoint endPoint, ByteBuffer buffer, ConcurrentMap<String, Object> context) Reads (with non-blocking semantic) into the givenbufferfrom the givenendPoint.voidsetBufferSize(int bufferSize) voidsetByteBufferPool(ByteBufferPool bufferPool) voidsetConnectTimeout(long connectTimeout) voidsetExecutor(Executor executor) voidsetIdleTimeout(long idleTimeout) voidsetScheduler(Scheduler scheduler) booleanvalidateDestination(String host, int port) Checks the givenhostandportagainst whitelist and blacklist.protected voidwrite(EndPoint endPoint, ByteBuffer buffer, Callback callback, ConcurrentMap<String, Object> context) Writes (with non-blocking semantic) the given buffer of data onto the given endPoint.Methods inherited from class org.eclipse.jetty.server.handler.HandlerWrapperdestroy, expandChildren, getHandler, getHandlers, insertHandler, setHandlerMethods inherited from class org.eclipse.jetty.server.handler.AbstractHandlerContainerexpandHandler, findContainerOf, getChildHandlerByClass, getChildHandlers, getChildHandlersByClass, setServerMethods inherited from class org.eclipse.jetty.server.handler.AbstractHandlerdoError, doStop, getServerMethods inherited from class org.eclipse.jetty.util.component.ContainerLifeCycleaddBean, addBean, addEventListener, addManaged, contains, dump, dump, dump, dumpObjects, dumpStdErr, getBean, getBeans, getBeans, getContainedBeans, getContainedBeans, isAuto, isManaged, isUnmanaged, manage, removeBean, removeBeans, removeEventListener, setBeans, start, stop, unmanage, updateBean, updateBean, updateBeans, updateBeansMethods inherited from class org.eclipse.jetty.util.component.AbstractLifeCyclegetEventListeners, getState, getState, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, setEventListeners, start, stop, toStringMethods inherited from class java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.eclipse.jetty.util.component.ContainergetCachedBeans, getEventListenersMethods inherited from interface org.eclipse.jetty.util.component.Dumpable.DumpableContainerisDumpableMethods inherited from interface org.eclipse.jetty.util.component.LifeCycleaddEventListener, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, removeEventListener, start, stop
- 
Field Details- 
LOGprotected static final org.slf4j.Logger LOG
 
- 
- 
Constructor Details- 
ConnectHandlerpublic ConnectHandler()
- 
ConnectHandler
 
- 
- 
Method Details- 
getExecutor
- 
setExecutor
- 
getScheduler
- 
setScheduler
- 
getByteBufferPool
- 
setByteBufferPool
- 
getConnectTimeoutpublic long getConnectTimeout()- Returns:
- the timeout, in milliseconds, to connect to the remote server
 
- 
setConnectTimeoutpublic void setConnectTimeout(long connectTimeout) - Parameters:
- connectTimeout- the timeout, in milliseconds, to connect to the remote server
 
- 
getIdleTimeoutpublic long getIdleTimeout()- Returns:
- the idle timeout, in milliseconds
 
- 
setIdleTimeoutpublic void setIdleTimeout(long idleTimeout) - Parameters:
- idleTimeout- the idle timeout, in milliseconds
 
- 
getBufferSizepublic int getBufferSize()
- 
setBufferSizepublic void setBufferSize(int bufferSize) 
- 
doStartDescription copied from class:ContainerLifeCycleStarts the managed lifecycle beans in the order they were added.- Overrides:
- doStartin class- AbstractHandler
- Throws:
- AbstractLifeCycle.StopException- If thrown, the lifecycle will immediately be stopped.
- Exception- If there was a problem starting. Will cause a transition to FAILED state
 
- 
newSelectorManager
- 
handlepublic void handle(String target, Request jettyRequest, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException Description copied from interface:HandlerHandle a request.- Specified by:
- handlein interface- Handler
- Overrides:
- handlein class- HandlerWrapper
- Parameters:
- target- The target of the request - either a URI or a name.
- jettyRequest- The original unwrapped request object.
- request- The request either as the- Requestobject or a wrapper of that request. The- HttpConnection.getCurrentConnection().- getHttpChannel().- getRequest()
- response- The response as the- Responseobject or a wrapper of that request. The- HttpConnection.getCurrentConnection().- getHttpChannel().- getResponse()
- Throws:
- javax.servlet.ServletException- if unable to handle the request or response due to underlying servlet issue
- IOException- if unable to handle the request or response processing
 
- 
handleConnectprotected void handleConnect(Request baseRequest, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, String serverAddress) Handles a CONNECT request. CONNECT requests may have authentication headers such as Proxy-Authorizationthat authenticate the client with the proxy.- Parameters:
- baseRequest- Jetty-specific http request
- request- the http request
- response- the http response
- serverAddress- the remote server address in the form- host:port
 
- 
connectToServerprotected void connectToServer(javax.servlet.http.HttpServletRequest request, String host, int port, Promise<SocketChannel> promise) 
- 
newConnectAddressCreates the server address to connect to.- Parameters:
- host- The host from the CONNECT request
- port- The port from the CONNECT request
- Returns:
- The InetSocketAddress to connect to.
 
- 
onConnectSuccessprotected void onConnectSuccess(ConnectHandler.ConnectContext connectContext, ConnectHandler.UpstreamConnection upstreamConnection) 
- 
onConnectFailureprotected void onConnectFailure(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, javax.servlet.AsyncContext asyncContext, Throwable failure) 
- 
handleAuthenticationprotected boolean handleAuthentication(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, String address) Handles the authentication before setting up the tunnel to the remote server. The default implementation returns true. - Parameters:
- request- the HTTP request
- response- the HTTP response
- address- the address of the remote server in the form- host:port.
- Returns:
- true to allow to connect to the remote host, false otherwise
 
- 
newDownstreamConnectionprotected ConnectHandler.DownstreamConnection newDownstreamConnection(EndPoint endPoint, ConcurrentMap<String, Object> context) 
- 
newUpstreamConnectionprotected ConnectHandler.UpstreamConnection newUpstreamConnection(EndPoint endPoint, ConnectHandler.ConnectContext connectContext) 
- 
prepareContextprotected void prepareContext(javax.servlet.http.HttpServletRequest request, ConcurrentMap<String, Object> context) 
- 
readprotected int read(EndPoint endPoint, ByteBuffer buffer, ConcurrentMap<String, Object> context) throws IOExceptionReads (with non-blocking semantic) into the given bufferfrom the givenendPoint.- Parameters:
- endPoint- the endPoint to read from
- buffer- the buffer to read data into
- context- the context information related to the connection
- Returns:
- the number of bytes read (possibly 0 since the read is non-blocking) or -1 if the channel has been closed remotely
- Throws:
- IOException- if the endPoint cannot be read
 
- 
writeprotected void write(EndPoint endPoint, ByteBuffer buffer, Callback callback, ConcurrentMap<String, Object> context) Writes (with non-blocking semantic) the given buffer of data onto the given endPoint. - Parameters:
- endPoint- the endPoint to write to
- buffer- the buffer to write
- callback- the completion callback to invoke
- context- the context information related to the connection
 
- 
getWhiteListHosts
- 
getBlackListHosts
- 
validateDestinationChecks the givenhostandportagainst whitelist and blacklist.- Parameters:
- host- the host to check
- port- the port to check
- Returns:
- true if it is allowed to connect to the given host and port
 
 
-