public class DefaultForwardingFilter extends AbstractInnerCloseable implements ForwardingFilter, SessionHolder<Session>, PortForwardingEventListenerManager
Modifier and Type | Class and Description |
---|---|
(package private) class |
DefaultForwardingFilter.StaticIoHandler |
AbstractCloseable.State
Modifier and Type | Field and Description |
---|---|
private IoAcceptor |
acceptor |
private java.util.Map<java.lang.Integer,java.net.InetSocketAddress> |
boundDynamic |
private java.util.Map<java.lang.Integer,java.net.InetSocketAddress> |
boundLocals |
static long |
DEFAULT_FORWARD_REQUEST_TIMEOUT
Default value for "tcpip-forward-request-timeout" if none specified
|
private java.util.Map<java.lang.Integer,SocksProxy> |
dynamicLocal |
private java.lang.Object |
dynamicLock |
static java.lang.String |
FORWARD_REQUEST_TIMEOUT
Used to configure the timeout (milliseconds) for receiving a response for the forwarding request
|
private PortForwardingEventListener |
listenerProxy |
private java.util.Collection<PortForwardingEventListener> |
listeners |
private java.util.Set<LocalForwardingEntry> |
localForwards |
private java.lang.Object |
localLock |
private java.util.Map<java.lang.Integer,SshdSocketAddress> |
localToRemote |
private java.util.Collection<PortForwardingEventListenerManager> |
managersHolder |
private java.util.Map<java.lang.Integer,SshdSocketAddress> |
remoteToLocal |
private ConnectionService |
service |
private Session |
sessionInstance |
private IoHandlerFactory |
socksProxyIoHandlerFactory |
static java.util.Set<ClientChannelEvent> |
STATIC_IO_MSG_RECEIVED_EVENTS |
private IoHandlerFactory |
staticIoHandlerFactory |
closeFuture, futureLock, state
log
CLOSE_WAIT_TIMEOUT, DEFAULT_CLOSE_WAIT_TIMEOUT
Constructor and Description |
---|
DefaultForwardingFilter(ConnectionService service) |
doCloseGracefully, doCloseImmediately
addCloseFutureListener, builder, close, getFutureLock, isClosed, isClosing, removeCloseFutureListener
getSimplifiedLogger
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
isLocalPortForwardingStartedForPort, isRemotePortForwardingStartedForPort
addCloseFutureListener, close, close, close, getMaxCloseWaitTime, isClosed, isClosing, isOpen, removeCloseFutureListener
getSessionContext
public static final java.lang.String FORWARD_REQUEST_TIMEOUT
public static final long DEFAULT_FORWARD_REQUEST_TIMEOUT
public static final java.util.Set<ClientChannelEvent> STATIC_IO_MSG_RECEIVED_EVENTS
private final ConnectionService service
private final IoHandlerFactory socksProxyIoHandlerFactory
private final Session sessionInstance
private final java.lang.Object localLock
private final java.util.Map<java.lang.Integer,SshdSocketAddress> localToRemote
private final java.util.Map<java.lang.Integer,java.net.InetSocketAddress> boundLocals
private final java.lang.Object dynamicLock
private final java.util.Map<java.lang.Integer,SshdSocketAddress> remoteToLocal
private final java.util.Map<java.lang.Integer,SocksProxy> dynamicLocal
private final java.util.Map<java.lang.Integer,java.net.InetSocketAddress> boundDynamic
private final java.util.Set<LocalForwardingEntry> localForwards
private final IoHandlerFactory staticIoHandlerFactory
private final java.util.Collection<PortForwardingEventListener> listeners
private final java.util.Collection<PortForwardingEventListenerManager> managersHolder
private final PortForwardingEventListener listenerProxy
private IoAcceptor acceptor
public DefaultForwardingFilter(ConnectionService service)
public PortForwardingEventListener getPortForwardingEventListenerProxy()
getPortForwardingEventListenerProxy
in interface PortForwardingEventListenerManager
public void addPortForwardingEventListener(PortForwardingEventListener listener)
PortForwardingEventListenerManager
addPortForwardingEventListener
in interface PortForwardingEventListenerManager
listener
- The PortForwardingEventListener
to add - never null
public void removePortForwardingEventListener(PortForwardingEventListener listener)
PortForwardingEventListenerManager
removePortForwardingEventListener
in interface PortForwardingEventListenerManager
listener
- The PortForwardingEventListener
to remove - ignored if null
public java.util.Collection<PortForwardingEventListenerManager> getRegisteredManagers()
getRegisteredManagers
in interface PortForwardingEventListenerManagerHolder
public boolean addPortForwardingEventListenerManager(PortForwardingEventListenerManager manager)
addPortForwardingEventListenerManager
in interface PortForwardingEventListenerManagerHolder
public boolean removePortForwardingEventListenerManager(PortForwardingEventListenerManager manager)
removePortForwardingEventListenerManager
in interface PortForwardingEventListenerManagerHolder
public Session getSession()
getSession
in interface SessionHolder<Session>
public final ConnectionService getConnectionService()
protected java.util.Collection<PortForwardingEventListener> getDefaultListeners()
public SshdSocketAddress startLocalPortForwarding(SshdSocketAddress local, SshdSocketAddress remote) throws java.io.IOException
PortForwardingManager
startLocalPortForwarding
in interface PortForwardingManager
local
- The local addressremote
- The remote addressSshdSocketAddress
java.io.IOException
- If failed to create the requested bindingpublic void stopLocalPortForwarding(SshdSocketAddress local) throws java.io.IOException
PortForwardingManager
stopLocalPortForwarding
in interface PortForwardingManager
local
- The local addressjava.io.IOException
- If failed to cancel the requested bindingprotected void unbindLocalForwarding(SshdSocketAddress local, SshdSocketAddress remote, java.net.InetSocketAddress bound) throws java.io.IOException
java.io.IOException
public SshdSocketAddress startRemotePortForwarding(SshdSocketAddress remote, SshdSocketAddress local) throws java.io.IOException
PortForwardingManager
Start forwarding tcpip from the given address on the server to the given address on the client.
The remote host name is the address to bind to on the server:startRemotePortForwarding
in interface PortForwardingManager
remote
- The remote addresslocal
- The local addressSshdSocketAddress
java.io.IOException
- If failed to create the requested bindingpublic void stopRemotePortForwarding(SshdSocketAddress remote) throws java.io.IOException
PortForwardingManager
stopRemotePortForwarding
in interface PortForwardingManager
remote
- The remote addressjava.io.IOException
- If failed to cancel the requested bindingprotected void signalTearingDownExplicitTunnel(SshdSocketAddress boundAddress, boolean localForwarding, SshdSocketAddress remote) throws java.io.IOException
java.io.IOException
protected void signalTearingDownExplicitTunnel(PortForwardingEventListener listener, SshdSocketAddress boundAddress, boolean localForwarding, SshdSocketAddress remoteAddress) throws java.io.IOException
java.io.IOException
protected void signalTornDownExplicitTunnel(SshdSocketAddress boundAddress, boolean localForwarding, SshdSocketAddress remoteAddress, java.lang.Throwable reason) throws java.io.IOException
java.io.IOException
protected void signalTornDownExplicitTunnel(PortForwardingEventListener listener, SshdSocketAddress boundAddress, boolean localForwarding, SshdSocketAddress remoteAddress, java.lang.Throwable reason) throws java.io.IOException
java.io.IOException
public SshdSocketAddress startDynamicPortForwarding(SshdSocketAddress local) throws java.io.IOException
PortForwardingManager
startDynamicPortForwarding
in interface PortForwardingManager
local
- The local addressSshdSocketAddress
java.io.IOException
- If failed to create the requested bindingprotected void signalEstablishedDynamicTunnel(SshdSocketAddress local, SshdSocketAddress boundAddress, java.lang.Throwable reason) throws java.io.IOException
java.io.IOException
protected void signalEstablishedDynamicTunnel(PortForwardingEventListener listener, SshdSocketAddress local, SshdSocketAddress boundAddress, java.lang.Throwable reason) throws java.io.IOException
java.io.IOException
protected void signalEstablishingDynamicTunnel(SshdSocketAddress local) throws java.io.IOException
java.io.IOException
protected void signalEstablishingDynamicTunnel(PortForwardingEventListener listener, SshdSocketAddress local) throws java.io.IOException
java.io.IOException
public void stopDynamicPortForwarding(SshdSocketAddress local) throws java.io.IOException
PortForwardingManager
stopDynamicPortForwarding
in interface PortForwardingManager
local
- The local addressjava.io.IOException
- If failed to cancel the requested bindingprotected void unbindDynamicForwarding(SshdSocketAddress local, SocksProxy proxy, java.net.InetSocketAddress bound) throws java.io.IOException
java.io.IOException
protected void signalTearingDownDynamicTunnel(SshdSocketAddress address) throws java.io.IOException
java.io.IOException
protected void signalTearingDownDynamicTunnel(PortForwardingEventListener listener, SshdSocketAddress address) throws java.io.IOException
java.io.IOException
protected void signalTornDownDynamicTunnel(SshdSocketAddress address, java.lang.Throwable reason) throws java.io.IOException
java.io.IOException
protected void signalTornDownDynamicTunnel(PortForwardingEventListener listener, SshdSocketAddress address, java.lang.Throwable reason) throws java.io.IOException
java.io.IOException
public SshdSocketAddress getForwardedPort(int remotePort)
getForwardedPort
in interface ForwardingFilter
remotePort
- The remote portSshdSocketAddress
that the remote port is forwarded topublic SshdSocketAddress localPortForwardingRequested(SshdSocketAddress local) throws java.io.IOException
ForwardingFilter
localPortForwardingRequested
in interface ForwardingFilter
local
- The request addressSshdSocketAddress
- null
if not allowed to forwardjava.io.IOException
- If failed to handle requestpublic void localPortForwardingCancelled(SshdSocketAddress local) throws java.io.IOException
ForwardingFilter
localPortForwardingCancelled
in interface ForwardingFilter
local
- The local SshdSocketAddress
java.io.IOException
- If failed to handle requestprotected void signalEstablishingExplicitTunnel(SshdSocketAddress local, SshdSocketAddress remote, boolean localForwarding) throws java.io.IOException
java.io.IOException
protected void signalEstablishingExplicitTunnel(PortForwardingEventListener listener, SshdSocketAddress local, SshdSocketAddress remote, boolean localForwarding) throws java.io.IOException
java.io.IOException
protected void signalEstablishedExplicitTunnel(SshdSocketAddress local, SshdSocketAddress remote, boolean localForwarding, SshdSocketAddress boundAddress, java.lang.Throwable reason) throws java.io.IOException
java.io.IOException
protected void signalEstablishedExplicitTunnel(PortForwardingEventListener listener, SshdSocketAddress local, SshdSocketAddress remote, boolean localForwarding, SshdSocketAddress boundAddress, java.lang.Throwable reason) throws java.io.IOException
java.io.IOException
protected void invokePortEventListenerSignaller(Invoker<PortForwardingEventListener,java.lang.Void> invoker) throws java.lang.Throwable
java.lang.Throwable
protected void invokePortEventListenerSignallerListeners(java.util.Collection<? extends PortForwardingEventListener> listeners, Invoker<PortForwardingEventListener,java.lang.Void> invoker) throws java.lang.Throwable
java.lang.Throwable
protected void invokePortEventListenerSignallerHolders(java.util.Collection<? extends PortForwardingEventListenerManager> holders, Invoker<PortForwardingEventListener,java.lang.Void> invoker) throws java.lang.Throwable
java.lang.Throwable
protected Closeable getInnerCloseable()
getInnerCloseable
in class AbstractInnerCloseable
protected void preClose()
AbstractCloseable
preClose
in class AbstractCloseable
private java.net.InetSocketAddress doBind(SshdSocketAddress address, Factory<? extends IoHandler> handlerFactory) throws java.io.IOException
public java.lang.String toString()
toString
in class java.lang.Object
public SshdSocketAddress getBoundLocalPortForward(int port)
getBoundLocalPortForward
in interface PortForwardingInformationProvider
port
- The port numberSshdSocketAddress
for the port - null
if none boundisLocalPortForwardingStartedForPort
,
PortForwardingInformationProvider.getStartedLocalPortForwards()
public java.util.List<java.util.Map.Entry<java.lang.Integer,SshdSocketAddress>> getLocalForwardsBindings()
getLocalForwardsBindings
in interface PortForwardingInformationProvider
SshdSocketAddress
public java.util.NavigableSet<java.lang.Integer> getStartedLocalPortForwards()
getStartedLocalPortForwards
in interface PortForwardingInformationProvider
NavigableSet
snapshot of the currently started local port forwardspublic java.util.List<java.util.Map.Entry<java.lang.Integer,SshdSocketAddress>> getRemoteForwardsBindings()
getRemoteForwardsBindings
in interface PortForwardingInformationProvider
SshdSocketAddress
public SshdSocketAddress getBoundRemotePortForward(int port)
getBoundRemotePortForward
in interface PortForwardingInformationProvider
port
- The port numberSshdSocketAddress
for the port - null
if none boundisRemotePortForwardingStartedForPort
,
PortForwardingInformationProvider.getStartedRemotePortForwards()
public java.util.NavigableSet<java.lang.Integer> getStartedRemotePortForwards()
getStartedRemotePortForwards
in interface PortForwardingInformationProvider
NavigableSet
snapshot of the currently started remote port forwards