Package org.apache.sshd.common.forward
Class DefaultForwarder
- All Implemented Interfaces:
Closeable
,AutoCloseable
,Channel
,Closeable
,Forwarder
,PortForwardingEventListenerManager
,PortForwardingEventListenerManagerHolder
,PortForwardingInformationProvider
,PortForwardingManager
,SessionContextHolder
,SessionHolder<Session>
public class DefaultForwarder
extends AbstractInnerCloseable
implements Forwarder, SessionHolder<Session>, PortForwardingEventListenerManager
Requests a "tcpip-forward" action
- Author:
- Apache MINA SSHD Project
-
Nested Class Summary
Nested classes/interfaces inherited from class org.apache.sshd.common.util.closeable.AbstractCloseable
AbstractCloseable.State
-
Field Summary
Fields inherited from class org.apache.sshd.common.util.closeable.AbstractCloseable
closeFuture, futureLock, state
Fields inherited from class org.apache.sshd.common.util.logging.AbstractLoggingBean
log
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
Add a port forwarding listenerboolean
protected IoAcceptor
createIoAcceptor
(Factory<? extends IoHandler> handlerFactory) protected InetSocketAddress
doBind
(SshdSocketAddress address, IoAcceptor acceptor) getBoundLocalPortForwards
(int port) getBoundRemotePortForward
(int port) final ConnectionService
protected Collection<PortForwardingEventListener>
protected IoAcceptor
getForwardedPort
(int remotePort) protected Closeable
protected IoAcceptor
protected void
protected void
invokePortEventListenerSignallerHolders
(Collection<? extends PortForwardingEventListenerManager> holders, Invoker<PortForwardingEventListener, Void> invoker) protected void
invokePortEventListenerSignallerListeners
(Collection<? extends PortForwardingEventListener> listeners, Invoker<PortForwardingEventListener, Void> invoker) boolean
isLocalPortForwardingStartedForPort
(int port) Test if local port forwarding is startedvoid
Called when the other side cancelled a remote port forward.Called when the other side requested a remote port forward.protected void
preClose()
void
Remove a port forwarding listenerboolean
protected void
signalEstablishedDynamicTunnel
(PortForwardingEventListener listener, SshdSocketAddress local, SshdSocketAddress boundAddress, Throwable reason) protected void
signalEstablishedDynamicTunnel
(SshdSocketAddress local, SshdSocketAddress boundAddress, Throwable reason) protected void
signalEstablishedExplicitTunnel
(PortForwardingEventListener listener, SshdSocketAddress local, SshdSocketAddress remote, boolean localForwarding, SshdSocketAddress boundAddress, Throwable reason) protected void
signalEstablishedExplicitTunnel
(SshdSocketAddress local, SshdSocketAddress remote, boolean localForwarding, SshdSocketAddress boundAddress, Throwable reason) protected void
signalEstablishingDynamicTunnel
(PortForwardingEventListener listener, SshdSocketAddress local) protected void
protected void
signalEstablishingExplicitTunnel
(PortForwardingEventListener listener, SshdSocketAddress local, SshdSocketAddress remote, boolean localForwarding) protected void
signalEstablishingExplicitTunnel
(SshdSocketAddress local, SshdSocketAddress remote, boolean localForwarding) protected void
signalTearingDownDynamicTunnel
(PortForwardingEventListener listener, SshdSocketAddress address) protected void
protected void
signalTearingDownExplicitTunnel
(PortForwardingEventListener listener, SshdSocketAddress boundAddress, boolean localForwarding, SshdSocketAddress remoteAddress) protected void
signalTearingDownExplicitTunnel
(SshdSocketAddress boundAddress, boolean localForwarding, SshdSocketAddress remote) protected void
signalTornDownDynamicTunnel
(PortForwardingEventListener listener, SshdSocketAddress address, Throwable reason) protected void
signalTornDownDynamicTunnel
(SshdSocketAddress address, Throwable reason) protected void
signalTornDownExplicitTunnel
(PortForwardingEventListener listener, SshdSocketAddress boundAddress, boolean localForwarding, SshdSocketAddress remoteAddress, Throwable reason) protected void
signalTornDownExplicitTunnel
(SshdSocketAddress boundAddress, boolean localForwarding, SshdSocketAddress remoteAddress, Throwable reason) Start dynamic local port forwarding using a SOCKS proxy.startLocalPortForwarding
(SshdSocketAddress local, SshdSocketAddress remote) Start forwarding the given local address on the client to the given address on the server.startRemotePortForwarding
(SshdSocketAddress remote, SshdSocketAddress local) Start forwarding tcpip from the given address on the server to the given address on the client.void
Stop a previously started dynamic port forwarding.void
Stop forwarding the given local address.void
Stop forwarding of the given remote address.toString()
protected void
unbindDynamicForwarding
(SshdSocketAddress local, SocksProxy proxy, InetSocketAddress bound) protected void
unbindLocalForwarding
(SshdSocketAddress local, SshdSocketAddress remote, InetSocketAddress bound) Methods inherited from class org.apache.sshd.common.util.closeable.AbstractInnerCloseable
doCloseGracefully, doCloseImmediately
Methods inherited from class org.apache.sshd.common.util.closeable.AbstractCloseable
addCloseFutureListener, builder, close, getFutureLock, isClosed, isClosing, removeCloseFutureListener
Methods inherited from class org.apache.sshd.common.util.logging.AbstractLoggingBean
debug, debug, debug, debug, debug, error, error, error, error, error, getSimplifiedLogger, info, info, warn, warn, warn, warn, warn, warn, warn, warn
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.apache.sshd.common.Closeable
addCloseFutureListener, close, close, isClosed, isClosing, isOpen, removeCloseFutureListener
Methods inherited from interface org.apache.sshd.common.forward.PortForwardingInformationProvider
isRemotePortForwardingStartedForPort
Methods inherited from interface org.apache.sshd.common.forward.PortForwardingManager
startLocalPortForwarding
Methods inherited from interface org.apache.sshd.common.session.SessionHolder
getSessionContext
-
Field Details
-
STATIC_IO_MSG_RECEIVED_EVENTS
-
-
Constructor Details
-
DefaultForwarder
-
-
Method Details
-
getPortForwardingEventListenerProxy
- Specified by:
getPortForwardingEventListenerProxy
in interfacePortForwardingEventListenerManager
- Returns:
- A proxy listener representing all the currently registered listener through this manager
-
addPortForwardingEventListener
Description copied from interface:PortForwardingEventListenerManager
Add a port forwarding listener- Specified by:
addPortForwardingEventListener
in interfacePortForwardingEventListenerManager
- Parameters:
listener
- ThePortForwardingEventListener
to add - nevernull
-
removePortForwardingEventListener
Description copied from interface:PortForwardingEventListenerManager
Remove a port forwarding listener- Specified by:
removePortForwardingEventListener
in interfacePortForwardingEventListenerManager
- Parameters:
listener
- ThePortForwardingEventListener
to remove - ignored ifnull
-
getRegisteredManagers
- Specified by:
getRegisteredManagers
in interfacePortForwardingEventListenerManagerHolder
- Returns:
- The currently registered managers. Note: it is highly recommended that implementors return either an un-modifiable collection or a copy of the current one. Callers, should avoid modifying the retrieved value.
-
addPortForwardingEventListenerManager
- Specified by:
addPortForwardingEventListenerManager
in interfacePortForwardingEventListenerManagerHolder
-
removePortForwardingEventListenerManager
- Specified by:
removePortForwardingEventListenerManager
in interfacePortForwardingEventListenerManagerHolder
-
getSession
- Specified by:
getSession
in interfaceSessionHolder<Session>
-
getConnectionService
-
getDefaultListeners
-
startLocalPortForwarding
public SshdSocketAddress startLocalPortForwarding(SshdSocketAddress local, SshdSocketAddress remote) throws IOException Description copied from interface:PortForwardingManager
Start forwarding the given local address on the client to the given address on the server.- Specified by:
startLocalPortForwarding
in interfacePortForwardingManager
- Parameters:
local
- The local addressremote
- The remote address- Returns:
- The bound
SshdSocketAddress
- Throws:
IOException
- If failed to create the requested binding
-
stopLocalPortForwarding
Description copied from interface:PortForwardingManager
Stop forwarding the given local address.- Specified by:
stopLocalPortForwarding
in interfacePortForwardingManager
- Parameters:
local
- The local address- Throws:
IOException
- If failed to cancel the requested binding
-
unbindLocalForwarding
protected void unbindLocalForwarding(SshdSocketAddress local, SshdSocketAddress remote, InetSocketAddress bound) throws IOException - Throws:
IOException
-
startRemotePortForwarding
public SshdSocketAddress startRemotePortForwarding(SshdSocketAddress remote, SshdSocketAddress local) throws IOException Description copied from interface: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:- "" means that connections are to be accepted on all protocol families supported by the SSH implementation
- "0.0.0.0" means to listen on all IPv4 addresses
- "::" means to listen on all IPv6 addresses
- "localhost" means to listen on all protocol families supported by the SSH implementation on loopback addresses only, [RFC3330] and RFC3513]
- "127.0.0.1" and "::1" indicate listening on the loopback interfaces for IPv4 and IPv6 respectively
- Specified by:
startRemotePortForwarding
in interfacePortForwardingManager
- Parameters:
remote
- The remote addresslocal
- The local address- Returns:
- The bound
SshdSocketAddress
- Throws:
IOException
- If failed to create the requested binding
-
stopRemotePortForwarding
Description copied from interface:PortForwardingManager
Stop forwarding of the given remote address.- Specified by:
stopRemotePortForwarding
in interfacePortForwardingManager
- Parameters:
remote
- The remote address- Throws:
IOException
- If failed to cancel the requested binding
-
signalTearingDownExplicitTunnel
protected void signalTearingDownExplicitTunnel(SshdSocketAddress boundAddress, boolean localForwarding, SshdSocketAddress remote) throws IOException - Throws:
IOException
-
signalTearingDownExplicitTunnel
protected void signalTearingDownExplicitTunnel(PortForwardingEventListener listener, SshdSocketAddress boundAddress, boolean localForwarding, SshdSocketAddress remoteAddress) throws IOException - Throws:
IOException
-
signalTornDownExplicitTunnel
protected void signalTornDownExplicitTunnel(SshdSocketAddress boundAddress, boolean localForwarding, SshdSocketAddress remoteAddress, Throwable reason) throws IOException - Throws:
IOException
-
signalTornDownExplicitTunnel
protected void signalTornDownExplicitTunnel(PortForwardingEventListener listener, SshdSocketAddress boundAddress, boolean localForwarding, SshdSocketAddress remoteAddress, Throwable reason) throws IOException - Throws:
IOException
-
startDynamicPortForwarding
Description copied from interface:PortForwardingManager
Start dynamic local port forwarding using a SOCKS proxy.- Specified by:
startDynamicPortForwarding
in interfacePortForwardingManager
- Parameters:
local
- The local address- Returns:
- The bound
SshdSocketAddress
- Throws:
IOException
- If failed to create the requested binding
-
signalEstablishedDynamicTunnel
protected void signalEstablishedDynamicTunnel(SshdSocketAddress local, SshdSocketAddress boundAddress, Throwable reason) throws IOException - Throws:
IOException
-
signalEstablishedDynamicTunnel
protected void signalEstablishedDynamicTunnel(PortForwardingEventListener listener, SshdSocketAddress local, SshdSocketAddress boundAddress, Throwable reason) throws IOException - Throws:
IOException
-
signalEstablishingDynamicTunnel
- Throws:
IOException
-
signalEstablishingDynamicTunnel
protected void signalEstablishingDynamicTunnel(PortForwardingEventListener listener, SshdSocketAddress local) throws IOException - Throws:
IOException
-
stopDynamicPortForwarding
Description copied from interface:PortForwardingManager
Stop a previously started dynamic port forwarding.- Specified by:
stopDynamicPortForwarding
in interfacePortForwardingManager
- Parameters:
local
- The local address- Throws:
IOException
- If failed to cancel the requested binding
-
unbindDynamicForwarding
protected void unbindDynamicForwarding(SshdSocketAddress local, SocksProxy proxy, InetSocketAddress bound) throws IOException - Throws:
IOException
-
signalTearingDownDynamicTunnel
- Throws:
IOException
-
signalTearingDownDynamicTunnel
protected void signalTearingDownDynamicTunnel(PortForwardingEventListener listener, SshdSocketAddress address) throws IOException - Throws:
IOException
-
signalTornDownDynamicTunnel
protected void signalTornDownDynamicTunnel(SshdSocketAddress address, Throwable reason) throws IOException - Throws:
IOException
-
signalTornDownDynamicTunnel
protected void signalTornDownDynamicTunnel(PortForwardingEventListener listener, SshdSocketAddress address, Throwable reason) throws IOException - Throws:
IOException
-
getForwardedPort
- Specified by:
getForwardedPort
in interfaceForwarder
- Parameters:
remotePort
- The remote port- Returns:
- The local
SshdSocketAddress
that the remote port is forwarded to
-
localPortForwardingRequested
Description copied from interface:Forwarder
Called when the other side requested a remote port forward.- Specified by:
localPortForwardingRequested
in interfaceForwarder
- Parameters:
local
- The request address- Returns:
- The bound local
SshdSocketAddress
-null
if not allowed to forward - Throws:
IOException
- If failed to handle request
-
localPortForwardingCancelled
Description copied from interface:Forwarder
Called when the other side cancelled a remote port forward.- Specified by:
localPortForwardingCancelled
in interfaceForwarder
- Parameters:
local
- The localSshdSocketAddress
- Throws:
IOException
- If failed to handle request
-
signalEstablishingExplicitTunnel
protected void signalEstablishingExplicitTunnel(SshdSocketAddress local, SshdSocketAddress remote, boolean localForwarding) throws IOException - Throws:
IOException
-
signalEstablishingExplicitTunnel
protected void signalEstablishingExplicitTunnel(PortForwardingEventListener listener, SshdSocketAddress local, SshdSocketAddress remote, boolean localForwarding) throws IOException - Throws:
IOException
-
signalEstablishedExplicitTunnel
protected void signalEstablishedExplicitTunnel(SshdSocketAddress local, SshdSocketAddress remote, boolean localForwarding, SshdSocketAddress boundAddress, Throwable reason) throws IOException - Throws:
IOException
-
signalEstablishedExplicitTunnel
protected void signalEstablishedExplicitTunnel(PortForwardingEventListener listener, SshdSocketAddress local, SshdSocketAddress remote, boolean localForwarding, SshdSocketAddress boundAddress, Throwable reason) throws IOException - Throws:
IOException
-
invokePortEventListenerSignaller
protected void invokePortEventListenerSignaller(Invoker<PortForwardingEventListener, Void> invoker) throws Throwable- Throws:
Throwable
-
invokePortEventListenerSignallerListeners
protected void invokePortEventListenerSignallerListeners(Collection<? extends PortForwardingEventListener> listeners, Invoker<PortForwardingEventListener, Void> invoker) throws Throwable- Throws:
Throwable
-
invokePortEventListenerSignallerHolders
protected void invokePortEventListenerSignallerHolders(Collection<? extends PortForwardingEventListenerManager> holders, Invoker<PortForwardingEventListener, Void> invoker) throws Throwable- Throws:
Throwable
-
getInnerCloseable
- Specified by:
getInnerCloseable
in classAbstractInnerCloseable
-
preClose
protected void preClose()- Overrides:
preClose
in classAbstractCloseable
-
createIoAcceptor
-
getLocalIoAcceptor
-
getDynamicIoAcceptor
-
doBind
protected InetSocketAddress doBind(SshdSocketAddress address, IoAcceptor acceptor) throws IOException - Parameters:
address
- The request bind addressacceptor
- AnIoAcceptor
to bind addresses- Returns:
- The
InetSocketAddress
to which the binding occurred - Throws:
IOException
- If failed to bind
-
toString
-
getBoundLocalPortForwards
- Specified by:
getBoundLocalPortForwards
in interfacePortForwardingInformationProvider
- Parameters:
port
- The port number- Returns:
- The local bound
SshdSocketAddress
-es for the port - See Also:
-
isLocalPortForwardingStartedForPort
public boolean isLocalPortForwardingStartedForPort(int port) Description copied from interface:PortForwardingInformationProvider
Test if local port forwarding is started- Specified by:
isLocalPortForwardingStartedForPort
in interfacePortForwardingInformationProvider
- Parameters:
port
- The local port- Returns:
true
if local port forwarding is started- See Also:
-
getLocalForwardsBindings
- Specified by:
getLocalForwardsBindings
in interfacePortForwardingInformationProvider
- Returns:
- A snapshot of the currently bound forwarded local ports as "pairs" of local/remote
SshdSocketAddress
-es
-
getStartedLocalPortForwards
- Specified by:
getStartedLocalPortForwards
in interfacePortForwardingInformationProvider
- Returns:
- A
List
snapshot of the currently started local port forward bindings
-
getRemoteForwardsBindings
- Specified by:
getRemoteForwardsBindings
in interfacePortForwardingInformationProvider
- Returns:
- A snapshot of the currently bound forwarded remote ports as "pairs" of port + bound
SshdSocketAddress
-
getBoundRemotePortForward
- Specified by:
getBoundRemotePortForward
in interfacePortForwardingInformationProvider
- Parameters:
port
- The port number- Returns:
- The remote bound
SshdSocketAddress
for the port -null
if none bound - See Also:
-
getStartedRemotePortForwards
- Specified by:
getStartedRemotePortForwards
in interfacePortForwardingInformationProvider
- Returns:
- A
NavigableSet
snapshot of the currently started remote port forwards
-