Class AbstractFactoryManager
- All Implemented Interfaces:
Closeable
,AutoCloseable
,Channel
,AttributeRepository
,AttributeStore
,ChannelListenerManager
,ChannelStreamWriterResolver
,ChannelStreamWriterResolverManager
,Closeable
,FactoryManager
,PortForwardingEventListenerManager
,IoServiceEventListenerManager
,KexExtensionHandlerManager
,KexFactoryManager
,PropertyResolver
,ReservedSessionMessagesManager
,SessionDisconnectHandlerManager
,SessionHeartbeatController
,SessionListenerManager
,UnknownChannelReferenceHandlerManager
,SignatureFactoriesHolder
,SignatureFactoriesManager
-
Nested Class Summary
Nested classes/interfaces inherited from class org.apache.sshd.common.util.closeable.AbstractCloseable
AbstractCloseable.State
Nested classes/interfaces inherited from interface org.apache.sshd.common.AttributeRepository
AttributeRepository.AttributeKey<T>
Nested classes/interfaces inherited from interface org.apache.sshd.common.session.SessionHeartbeatController
SessionHeartbeatController.HeartbeatType
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected SshAgentFactory
private final Map
<AttributeRepository.AttributeKey<?>, Object> protected List
<? extends ChannelFactory> protected final ChannelListener
protected final Collection
<ChannelListener> private ChannelStreamWriterResolver
private IoServiceEventListener
protected ScheduledExecutorService
protected FileSystemFactory
protected ForwarderFactory
protected ForwardingFilter
protected List
<RequestHandler<ConnectionService>> protected IoServiceFactory
protected IoServiceFactoryFactory
private PropertyResolver
private ReservedSessionMessagesHandler
protected List
<? extends ServiceFactory> private SessionDisconnectHandler
protected final SessionListener
protected final Collection
<SessionListener> protected SessionTimeoutListener
protected boolean
protected ScheduledFuture
<?> protected final PortForwardingEventListener
protected final Collection
<PortForwardingEventListener> private UnknownChannelReferenceHandler
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
Fields inherited from interface org.apache.sshd.common.channel.throttle.ChannelStreamWriterResolver
NONE
Fields inherited from interface org.apache.sshd.common.FactoryManager
DEFAULT_VERSION
Fields inherited from interface org.apache.sshd.common.PropertyResolver
EMPTY
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
addChannelListener
(ChannelListener listener) Add a channel listenervoid
Add a port forwarding listenervoid
addSessionListener
(SessionListener listener) Add a session listener.protected void
void
Removes all currently stored user-defined attributes<T> T
computeAttributeIfAbsent
(AttributeRepository.AttributeKey<T> key, Function<? super AttributeRepository.AttributeKey<T>, ? extends T> resolver) If the specified key is not already associated with a value (or is mapped tonull
), attempts to compute its value using the given mapping function and enters it into this map unlessnull
.protected SessionTimeoutListener
Retrieve the agent factory for creatingSshAgent
objects.<T> T
Returns the value of the user-defined attribute.int
List
<? extends ChannelFactory> Retrieve the list of named factories forChannel
objects.Retrieve theFileSystemFactory
to be used to traverse the file system.Retrieve the forwarder factory used to support forwarding.Retrieve theForwardingFilter
to be used by the SSH server.Retrieve the list of global request handlers.int
A map of properties that can be used to configure the SSH server or client.Retrieve theRandom
factory to be used.Retrieve theScheduledExecutorService
to be used.List
<? extends ServiceFactory> Retrieve the list of SSHService
factories.An upper case string identifying the version of the software used on client or server side.<T> T
Removes the user-defined attributevoid
removeChannelListener
(ChannelListener listener) Remove a channel listenervoid
Remove a port forwarding listenervoid
removeSessionListener
(SessionListener listener) Remove a session listener.protected void
removeSessionTimeout
(AbstractSessionFactory<?, ?> sessionFactory) Check if current manager has a specific handler set for it - if not, try and resolve one from the "parent" container (if any)void
setAgentFactory
(SshAgentFactory agentFactory) <T> T
setAttribute
(AttributeRepository.AttributeKey<T> key, T value) Sets a user-defined attribute.void
setChannelFactories
(List<? extends ChannelFactory> channelFactories) void
void
setFileSystemFactory
(FileSystemFactory fileSystemFactory) void
setForwarderFactory
(ForwarderFactory forwarderFactory) void
setForwardingFilter
(ForwardingFilter forwardingFilter) void
setGlobalRequestHandlers
(List<RequestHandler<ConnectionService>> globalRequestHandlers) void
void
setIoServiceFactoryFactory
(IoServiceFactoryFactory ioServiceFactory) void
setNioWorkers
(int nioWorkers) void
void
setRandomFactory
(Factory<? extends Random> randomFactory) void
void
void
setScheduledExecutorService
(ScheduledExecutorService executor, boolean shutdownExecutor) void
setServiceFactories
(List<? extends ServiceFactory> serviceFactories) void
setSessionDisconnectHandler
(SessionDisconnectHandler sessionDisconnectHandler) void
setUnknownChannelReferenceHandler
(UnknownChannelReferenceHandler unknownChannelReferenceHandler) protected void
setupSessionTimeout
(AbstractSessionFactory<?, ?> sessionFactory) protected void
stopSessionTimeoutListener
(AbstractSessionFactory<?, ?> sessionFactory) Methods inherited from class org.apache.sshd.common.kex.AbstractKexFactoryManager
getCipherFactories, getCompressionFactories, getDelegate, getKexExtensionHandler, getKeyExchangeFactories, getMacFactories, getSignatureFactories, resolveEffectiveFactories, resolveEffectiveProvider, setCipherFactories, setCompressionFactories, setKexExtensionHandler, setKeyExchangeFactories, setMacFactories, setSignatureFactories
Methods inherited from class org.apache.sshd.common.util.closeable.AbstractInnerCloseable
doCloseGracefully, doCloseImmediately, getInnerCloseable
Methods inherited from class org.apache.sshd.common.util.closeable.AbstractCloseable
addCloseFutureListener, builder, close, getFutureLock, isClosed, isClosing, preClose, 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, toString, wait, wait, wait
Methods inherited from interface org.apache.sshd.common.channel.throttle.ChannelStreamWriterResolverManager
resolveChannelStreamWriter, resolveChannelStreamWriterResolver
Methods inherited from interface org.apache.sshd.common.FactoryManager
getAgentForwardingFilter, getTcpForwardingFilter, getX11ForwardingFilter, resolveAttribute
Methods inherited from interface org.apache.sshd.common.kex.extension.KexExtensionHandlerManager
getKexExtensionHandler, setKexExtensionHandler
Methods inherited from interface org.apache.sshd.common.kex.KexFactoryManager
getCipherFactories, getCipherFactoriesNameList, getCipherFactoriesNames, getCompressionFactories, getCompressionFactoriesNameList, getCompressionFactoriesNames, getKeyExchangeFactories, getMacFactories, getMacFactoriesNameList, getMacFactoriesNames, setCipherFactories, setCipherFactoriesNameList, setCipherFactoriesNames, setCipherFactoriesNames, setCompressionFactories, setCompressionFactoriesNameList, setCompressionFactoriesNames, setCompressionFactoriesNames, setKeyExchangeFactories, setMacFactories, setMacFactoriesNameList, setMacFactoriesNames, setMacFactoriesNames
Methods inherited from interface org.apache.sshd.common.PropertyResolver
getBoolean, getBooleanProperty, getCharset, getInteger, getIntProperty, getLong, getLongProperty, getObject, getString, getStringProperty, isEmpty
Methods inherited from interface org.apache.sshd.common.session.SessionHeartbeatController
disableSessionHeartbeat, getSessionHeartbeatInterval, getSessionHeartbeatType, setSessionHeartbeat, setSessionHeartbeat
Methods inherited from interface org.apache.sshd.common.signature.SignatureFactoriesHolder
getSignatureFactories, getSignatureFactoriesNameList, getSignatureFactoriesNames
Methods inherited from interface org.apache.sshd.common.signature.SignatureFactoriesManager
setSignatureFactories, setSignatureFactoriesNameList, setSignatureFactoriesNames, setSignatureFactoriesNames
-
Field Details
-
ioServiceFactoryFactory
-
ioServiceFactory
-
randomFactory
-
channelFactories
-
agentFactory
-
executor
-
shutdownExecutor
protected boolean shutdownExecutor -
forwarderFactory
-
forwardingFilter
-
fileSystemFactory
-
serviceFactories
-
globalRequestHandlers
-
sessionTimeoutListener
-
timeoutListenerFuture
-
sessionListeners
-
sessionListenerProxy
-
channelListeners
-
channelListenerProxy
-
tunnelListeners
-
tunnelListenerProxy
-
properties
-
attributes
-
parentResolver
-
reservedSessionMessagesHandler
-
sessionDisconnectHandler
-
channelStreamWriterResolver
-
unknownChannelReferenceHandler
-
eventListener
-
-
Constructor Details
-
AbstractFactoryManager
protected AbstractFactoryManager()
-
-
Method Details
-
getIoServiceFactory
- Specified by:
getIoServiceFactory
in interfaceFactoryManager
-
getIoServiceFactoryFactory
-
setIoServiceFactoryFactory
-
getIoServiceEventListener
- Specified by:
getIoServiceEventListener
in interfaceIoServiceEventListenerManager
-
setIoServiceEventListener
- Specified by:
setIoServiceEventListener
in interfaceIoServiceEventListenerManager
-
getRandomFactory
Description copied from interface:FactoryManager
Retrieve theRandom
factory to be used.- Specified by:
getRandomFactory
in interfaceFactoryManager
- Returns:
- The
Random
factory, nevernull
-
setRandomFactory
-
getProperties
Description copied from interface:PropertyResolver
A map of properties that can be used to configure the SSH server or client. This map will never be changed by either the server or client and is not supposed to be changed at runtime (changes are not bound to have any effect on a running client or server), though it may affect the creation of sessions later as these values are usually not cached.
Note: the type of the mapped property should match the expected configuration value type -
Long, Integer, Boolean, String
, etc.... If it doesn't, thetoString()
result of the mapped value is used to convert it to the required type. E.g., if the mapped value is the string "1234" and the expected value is along
then it will be parsed into one. Also, if the mapped value is anInteger
but along
is expected, then it will be converted into one.- Specified by:
getProperties
in interfacePropertyResolver
- Returns:
- a valid
Map
containing configuration values, nevernull
. Note: may be immutable.
-
getAttributesCount
public int getAttributesCount()- Specified by:
getAttributesCount
in interfaceAttributeRepository
- Returns:
- Current number of user-defined attributes stored in the repository
-
getAttribute
Description copied from interface:AttributeRepository
Returns the value of the user-defined attribute.- Specified by:
getAttribute
in interfaceAttributeRepository
- Type Parameters:
T
- The generic attribute type- Parameters:
key
- The key of the attribute; must not benull
.- Returns:
null
if there is no value associated with the specified key
-
attributeKeys
- Specified by:
attributeKeys
in interfaceAttributeRepository
- Returns:
- A
Collection
snapshot of all the currently registered attributes in the repository
-
computeAttributeIfAbsent
public <T> T computeAttributeIfAbsent(AttributeRepository.AttributeKey<T> key, Function<? super AttributeRepository.AttributeKey<T>, ? extends T> resolver) Description copied from interface:AttributeStore
If the specified key is not already associated with a value (or is mapped tonull
), attempts to compute its value using the given mapping function and enters it into this map unlessnull
.- Specified by:
computeAttributeIfAbsent
in interfaceAttributeStore
- Type Parameters:
T
- The generic attribute type- Parameters:
key
- The key of the attribute; must not benull
.resolver
- The (nevernull
) mapping function to use if value not already mapped. If returnsnull
then value is not mapped to the provided key.- Returns:
- The resolved value -
null
if value not mapped and resolver did not return a non-null
value for it
-
setAttribute
Description copied from interface:AttributeStore
Sets a user-defined attribute.- Specified by:
setAttribute
in interfaceAttributeStore
- Type Parameters:
T
- The generic attribute type- Parameters:
key
- The key of the attribute; must not benull
.value
- The value of the attribute; must not benull
.- Returns:
- The old value of the attribute;
null
if it is new.
-
removeAttribute
Description copied from interface:AttributeStore
Removes the user-defined attribute- Specified by:
removeAttribute
in interfaceAttributeStore
- Type Parameters:
T
- The generic attribute type- Parameters:
key
- The key of the attribute; must not benull
.- Returns:
- The removed value;
null
if no previous value
-
clearAttributes
public void clearAttributes()Description copied from interface:AttributeStore
Removes all currently stored user-defined attributes- Specified by:
clearAttributes
in interfaceAttributeStore
-
getParentPropertyResolver
- Specified by:
getParentPropertyResolver
in interfacePropertyResolver
- Returns:
- The parent resolver that can be used to query for missing properties -
null
if no parent
-
setParentPropertyResolver
-
getVersion
Description copied from interface:FactoryManager
An upper case string identifying the version of the software used on client or server side. This version includes the name and version of the software and usually looks like this:SSHD-CORE-1.0
- Specified by:
getVersion
in interfaceFactoryManager
- Returns:
- the version of the software
-
getChannelFactories
Description copied from interface:FactoryManager
Retrieve the list of named factories forChannel
objects.- Specified by:
getChannelFactories
in interfaceFactoryManager
- Returns:
- A list of
ChannelFactory
-ies, nevernull
-
setChannelFactories
-
getNioWorkers
public int getNioWorkers() -
setNioWorkers
public void setNioWorkers(int nioWorkers) -
getAgentFactory
Description copied from interface:FactoryManager
Retrieve the agent factory for creatingSshAgent
objects.- Specified by:
getAgentFactory
in interfaceFactoryManager
- Returns:
- The
SshAgentFactory
-
setAgentFactory
-
getScheduledExecutorService
Description copied from interface:FactoryManager
Retrieve theScheduledExecutorService
to be used.- Specified by:
getScheduledExecutorService
in interfaceFactoryManager
- Returns:
- The
ScheduledExecutorService
, nevernull
-
setScheduledExecutorService
-
setScheduledExecutorService
public void setScheduledExecutorService(ScheduledExecutorService executor, boolean shutdownExecutor) -
getForwarderFactory
Description copied from interface:FactoryManager
Retrieve the forwarder factory used to support forwarding.- Specified by:
getForwarderFactory
in interfaceFactoryManager
- Returns:
- The
ForwarderFactory
-
setForwarderFactory
-
getForwardingFilter
Description copied from interface:FactoryManager
Retrieve theForwardingFilter
to be used by the SSH server. If no filter has been configured (i.e. this method returnsnull
), then all forwarding requests will be rejected.- Specified by:
getForwardingFilter
in interfaceFactoryManager
- Returns:
- The
ForwardingFilter
ornull
-
setForwardingFilter
-
getFileSystemFactory
Description copied from interface:FactoryManager
Retrieve theFileSystemFactory
to be used to traverse the file system.- Specified by:
getFileSystemFactory
in interfaceFactoryManager
- Returns:
- a valid
FileSystemFactory
instance ornull
if file based interactions are not supported on this server
-
setFileSystemFactory
-
getServiceFactories
Description copied from interface:FactoryManager
Retrieve the list of SSHService
factories.- Specified by:
getServiceFactories
in interfaceFactoryManager
- Returns:
- a list of named
Service
factories, nevernull
-
setServiceFactories
-
getGlobalRequestHandlers
Description copied from interface:FactoryManager
Retrieve the list of global request handlers.- Specified by:
getGlobalRequestHandlers
in interfaceFactoryManager
- Returns:
- a list of named
GlobalRequestHandler
-
setGlobalRequestHandlers
-
getReservedSessionMessagesHandler
- Specified by:
getReservedSessionMessagesHandler
in interfaceReservedSessionMessagesManager
- Returns:
- The currently registered
ReservedSessionMessagesHandler
- may benull
-
setReservedSessionMessagesHandler
- Specified by:
setReservedSessionMessagesHandler
in interfaceReservedSessionMessagesManager
- Parameters:
handler
- TheReservedSessionMessagesHandler
to use - may benull
-
getSessionDisconnectHandler
- Specified by:
getSessionDisconnectHandler
in interfaceSessionDisconnectHandlerManager
-
setSessionDisconnectHandler
- Specified by:
setSessionDisconnectHandler
in interfaceSessionDisconnectHandlerManager
-
getChannelStreamWriterResolver
- Specified by:
getChannelStreamWriterResolver
in interfaceChannelStreamWriterResolverManager
-
setChannelStreamWriterResolver
- Specified by:
setChannelStreamWriterResolver
in interfaceChannelStreamWriterResolverManager
-
getUnknownChannelReferenceHandler
- Specified by:
getUnknownChannelReferenceHandler
in interfaceUnknownChannelReferenceHandlerManager
- Returns:
- The
UnknownChannelReferenceHandlerManager
to use - ifnull
then any reference to unknown channel causes anSshChannelNotFoundException
-
setUnknownChannelReferenceHandler
public void setUnknownChannelReferenceHandler(UnknownChannelReferenceHandler unknownChannelReferenceHandler) - Specified by:
setUnknownChannelReferenceHandler
in interfaceUnknownChannelReferenceHandlerManager
- Parameters:
unknownChannelReferenceHandler
- TheUnknownChannelReferenceHandlerManager
to use - ifnull
then any reference to unknown channel causes anSshChannelNotFoundException
-
resolveUnknownChannelReferenceHandler
Description copied from interface:UnknownChannelReferenceHandlerManager
Check if current manager has a specific handler set for it - if not, try and resolve one from the "parent" container (if any)- Specified by:
resolveUnknownChannelReferenceHandler
in interfaceUnknownChannelReferenceHandlerManager
- Returns:
- The resolved handler instance
-
addSessionListener
Description copied from interface:SessionListenerManager
Add a session listener.- Specified by:
addSessionListener
in interfaceSessionListenerManager
- Parameters:
listener
- TheSessionListener
to add - notnull
-
removeSessionListener
Description copied from interface:SessionListenerManager
Remove a session listener.- Specified by:
removeSessionListener
in interfaceSessionListenerManager
- Parameters:
listener
- TheSessionListener
to remove
-
getSessionListenerProxy
- Specified by:
getSessionListenerProxy
in interfaceSessionListenerManager
- Returns:
- A (never
null
proxySessionListener
that represents all the currently registered listeners. Any method invocation on the proxy is replicated to the currently registered listeners
-
addChannelListener
Description copied from interface:ChannelListenerManager
Add a channel listener- Specified by:
addChannelListener
in interfaceChannelListenerManager
- Parameters:
listener
- TheChannelListener
to add - notnull
-
removeChannelListener
Description copied from interface:ChannelListenerManager
Remove a channel listener- Specified by:
removeChannelListener
in interfaceChannelListenerManager
- Parameters:
listener
- TheChannelListener
to remove
-
getChannelListenerProxy
- Specified by:
getChannelListenerProxy
in interfaceChannelListenerManager
- Returns:
- A (never
null
proxyChannelListener
that represents all the currently registered listeners. Any method invocation on the proxy is replicated to the currently registered listeners
-
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
-
setupSessionTimeout
-
removeSessionTimeout
-
createSessionTimeoutListener
-
stopSessionTimeoutListener
-
checkConfig
protected void checkConfig()
-