public abstract class SessionHelper extends AbstractKexFactoryManager implements Session
AbstractSession
class smallerAbstractCloseable.State
Session.TimeoutStatus
AttributeRepository.AttributeKey<T>
Modifier and Type | Field and Description |
---|---|
private java.util.Map<AttributeRepository.AttributeKey<?>,java.lang.Object> |
attributes
Session specific attributes
|
private boolean |
authed
Boolean indicating if this session has been authenticated or not
|
private long |
authTimeoutStart |
private ChannelStreamPacketWriterResolver |
channelStreamPacketWriterResolver |
private long |
idleTimeoutStart |
private IoSession |
ioSession
The underlying network session
|
private java.util.Map<java.lang.String,java.lang.Object> |
properties
The session specific properties
|
private ReservedSessionMessagesHandler |
reservedSessionMessagesHandler |
private boolean |
serverSession
Client or server side
|
private java.util.concurrent.atomic.AtomicReference<Session.TimeoutStatus> |
timeoutStatus |
private UnknownChannelReferenceHandler |
unknownChannelReferenceHandler |
private java.lang.String |
username
The name of the authenticated user
|
closeFuture, lock, state
log
DEFAULT_SSH_VERSION_PREFIX, FALLBACK_SSH_VERSION_PREFIX, MAX_VERSION_LINE_LENGTH
EMPTY
NONE
CLOSE_WAIT_TIMEOUT, DEFAULT_CLOSE_WAIT_TIMEOUT
Modifier | Constructor and Description |
---|---|
protected |
SessionHelper(boolean serverSession,
FactoryManager factoryManager,
IoSession ioSession)
Create a new session.
|
Modifier and Type | Method and Description |
---|---|
java.util.Collection<AttributeRepository.AttributeKey<?>> |
attributeKeys() |
protected long |
calculateNextIgnorePacketCount(Random r,
long freq,
int variance) |
protected java.util.AbstractMap.SimpleImmutableEntry<Session.TimeoutStatus,java.lang.String> |
checkAuthenticationTimeout(long now,
long authTimeoutMs)
Checks if authentication timeout expired
|
protected void |
checkForTimeouts()
Checks whether the session has timed out (both auth and idle timeouts are checked).
|
protected java.util.AbstractMap.SimpleImmutableEntry<Session.TimeoutStatus,java.lang.String> |
checkIdleTimeout(long now,
long idleTimeoutMs)
Checks if idle timeout expired
|
void |
clearAttributes()
Removes all currently stored user-defined attributes
|
<T> T |
computeAttributeIfAbsent(AttributeRepository.AttributeKey<T> key,
java.util.function.Function<? super AttributeRepository.AttributeKey<T>,? extends T> resolver)
If the specified key is not already associated with a value (or is mapped
to
null ), attempts to compute its value using the given mapping
function and enters it into this map unless null . |
protected java.util.Map<KexProposalOption,java.lang.String> |
createProposal(java.lang.String hostKeyTypes)
Create our proposal for SSH negotiation
|
void |
disconnect(int reason,
java.lang.String msg)
Send a disconnect packet with the given reason and message.
|
protected java.util.List<java.lang.String> |
doReadIdentification(Buffer buffer,
boolean server)
Read the remote identification from this buffer.
|
void |
exceptionCaught(java.lang.Throwable t)
Handle any exceptions that occurred on this session.
|
<T> T |
getAttribute(AttributeRepository.AttributeKey<T> key)
Returns the value of the user-defined attribute.
|
int |
getAttributesCount() |
long |
getAuthTimeout() |
long |
getAuthTimeoutStart() |
SshdSocketAddress |
getBoundLocalPortForward(int port) |
SshdSocketAddress |
getBoundRemotePortForward(int port) |
ChannelStreamPacketWriterResolver |
getChannelStreamPacketWriterResolver() |
protected abstract ConnectionService |
getConnectionService() |
FactoryManager |
getFactoryManager() |
protected ForwardingFilter |
getForwardingFilter() |
long |
getIdleTimeout() |
long |
getIdleTimeoutStart() |
IoSession |
getIoSession() |
java.util.List<java.util.Map.Entry<java.lang.Integer,SshdSocketAddress>> |
getLocalForwardsBindings() |
java.lang.Object |
getLock() |
PropertyResolver |
getParentPropertyResolver() |
java.util.Map<java.lang.String,java.lang.Object> |
getProperties()
A map of properties that can be used to configure the SSH server or
client.
|
java.util.List<java.util.Map.Entry<java.lang.Integer,SshdSocketAddress>> |
getRemoteForwardsBindings() |
ReservedSessionMessagesHandler |
getReservedSessionMessagesHandler() |
java.util.NavigableSet<java.lang.Integer> |
getStartedLocalPortForwards() |
java.util.NavigableSet<java.lang.Integer> |
getStartedRemotePortForwards() |
Session.TimeoutStatus |
getTimeoutStatus()
Check if timeout has occurred.
|
UnknownChannelReferenceHandler |
getUnknownChannelReferenceHandler() |
java.lang.String |
getUsername() |
protected void |
handleDebug(Buffer buffer) |
protected void |
handleDisconnect(Buffer buffer) |
protected void |
handleDisconnect(int code,
java.lang.String msg,
java.lang.String lang,
Buffer buffer) |
protected void |
handleIgnore(Buffer buffer) |
protected void |
handleUnimplemented(Buffer buffer) |
protected void |
invokeSessionSignaller(Invoker<SessionListener,java.lang.Void> invoker) |
boolean |
isAuthenticated() |
boolean |
isLocalPortForwardingStartedForPort(int port)
Test if local port forwarding is started
|
boolean |
isRemotePortForwardingStartedForPort(int port)
Test if remote port forwarding is started
|
boolean |
isServerSession() |
protected java.util.Map<KexProposalOption,java.lang.String> |
mergeProposals(java.util.Map<KexProposalOption,java.lang.String> current,
java.util.Map<KexProposalOption,java.lang.String> proposal) |
<T> T |
removeAttribute(AttributeRepository.AttributeKey<T> key)
Removes the user-defined attribute
|
long |
resetAuthTimeout()
Re-start the authentication timeout timer
|
long |
resetIdleTimeout()
Re-start idle timeout timer
|
protected byte[] |
resizeKey(byte[] e,
int kdfSize,
Digest hash,
byte[] k,
byte[] h)
Method used while putting new keys into use that will resize the key used to
initialize the cipher to the needed length.
|
ChannelStreamPacketWriterResolver |
resolveChannelStreamPacketWriterResolver() |
protected java.lang.String |
resolveIdentificationString(java.lang.String configPropName)
Resolves the identification to send to the peer session by consulting
the associated
FactoryManager . |
protected java.net.SocketAddress |
resolvePeerAddress(java.net.SocketAddress knownAddress) |
protected ReservedSessionMessagesHandler |
resolveReservedSessionMessagesHandler() |
UnknownChannelReferenceHandler |
resolveUnknownChannelReferenceHandler()
Check if current manager has a specific handler set for it - if not,
try and resolve one from the "parent" container (if any)
|
IoWriteFuture |
sendDebugMessage(boolean display,
java.lang.Object msg,
java.lang.String lang)
Sends an
SSH_MSG_DEBUG to the peer session |
protected IoWriteFuture |
sendIdentification(java.lang.String ident)
Send our identification.
|
IoWriteFuture |
sendIgnoreMessage(byte... data)
Sends an
SSH_MSG_IGNORE to the peer session |
protected IoWriteFuture |
sendNewKeys()
Send a message to put new keys into use.
|
protected IoWriteFuture |
sendNotImplemented(long seqNoValue)
Sends a
SSH_MSG_UNIMPLEMENTED message |
<T> T |
setAttribute(AttributeRepository.AttributeKey<T> key,
T value)
Sets a user-defined attribute.
|
void |
setAuthenticated() |
void |
setChannelStreamPacketWriterResolver(ChannelStreamPacketWriterResolver resolver) |
void |
setReservedSessionMessagesHandler(ReservedSessionMessagesHandler handler) |
void |
setUnknownChannelReferenceHandler(UnknownChannelReferenceHandler unknownChannelReferenceHandler) |
void |
setUsername(java.lang.String username) |
protected void |
signalDisconnect(int code,
java.lang.String msg,
java.lang.String lang,
boolean initiator) |
protected void |
signalDisconnect(SessionListener listener,
int code,
java.lang.String msg,
java.lang.String lang,
boolean initiator) |
protected void |
signalExceptionCaught(SessionListener listener,
java.lang.Throwable t) |
protected void |
signalExceptionCaught(java.lang.Throwable t) |
protected void |
signalNegotiationEnd(java.util.Map<KexProposalOption,java.lang.String> c2sOptions,
java.util.Map<KexProposalOption,java.lang.String> s2cOptions,
java.util.Map<KexProposalOption,java.lang.String> negotiatedGuess,
java.lang.Throwable reason) |
protected void |
signalNegotiationEnd(SessionListener listener,
java.util.Map<KexProposalOption,java.lang.String> c2sOptions,
java.util.Map<KexProposalOption,java.lang.String> s2cOptions,
java.util.Map<KexProposalOption,java.lang.String> negotiatedGuess,
java.lang.Throwable reason) |
protected void |
signalNegotiationStart(java.util.Map<KexProposalOption,java.lang.String> c2sOptions,
java.util.Map<KexProposalOption,java.lang.String> s2cOptions) |
protected void |
signalNegotiationStart(SessionListener listener,
java.util.Map<KexProposalOption,java.lang.String> c2sOptions,
java.util.Map<KexProposalOption,java.lang.String> s2cOptions) |
protected void |
signalSessionClosed() |
protected void |
signalSessionClosed(SessionListener listener) |
protected void |
signalSessionCreated(IoSession ioSession) |
protected void |
signalSessionCreated(SessionListener listener) |
protected void |
signalSessionEvent(SessionListener.Event event)
Sends a session event to all currently registered session listeners
|
protected void |
signalSessionEvent(SessionListener listener,
SessionListener.Event event) |
java.lang.String |
toString() |
IoWriteFuture |
writePacket(Buffer buffer,
long timeout,
java.util.concurrent.TimeUnit unit)
Encode and send the given buffer with the specified timeout.
|
getCipherFactories, getCompressionFactories, getDelegate, getKeyExchangeFactories, getMacFactories, getSignatureFactories, resolveEffectiveFactories, resolveEffectiveProvider, setCipherFactories, setCompressionFactories, setKeyExchangeFactories, setMacFactories, setSignatureFactories
doCloseGracefully, doCloseImmediately, getInnerCloseable
addCloseFutureListener, builder, close, isClosed, isClosing, preClose, removeCloseFutureListener
getSimplifiedLogger
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
createBuffer, createBuffer, getCipherInformation, getCompressionInformation, getKex, getLocalAddress, getMacInformation, getNegotiatedKexParameter, getRemoteAddress, getService, prepareBuffer, reExchangeKeys, request, resolveAttribute, resolveAttribute, startService
getClientVersion, getServerVersion, getSessionId, isValidVersionPrefix
getBoolean, getBooleanProperty, getInteger, getIntProperty, getLong, getLongProperty, getObject, getString, getStringProperty
ofAttributesMap, ofKeyValuePair
getCipherFactories, getCipherFactoriesNameList, getCipherFactoriesNames, getCompressionFactories, getCompressionFactoriesNameList, getCompressionFactoriesNames, getKeyExchangeFactories, getMacFactories, getMacFactoriesNameList, getMacFactoriesNames, setCipherFactories, setCipherFactoriesNameList, setCipherFactoriesNames, setCipherFactoriesNames, setCompressionFactories, setCompressionFactoriesNameList, setCompressionFactoriesNames, setCompressionFactoriesNames, setKeyExchangeFactories, setMacFactories, setMacFactoriesNameList, setMacFactoriesNames, setMacFactoriesNames
getSignatureFactories, getSignatureFactories, getSignatureFactoriesNameList, getSignatureFactoriesNames, resolveSignatureFactories, setSignatureFactories, setSignatureFactoriesNameList, setSignatureFactoriesNames, setSignatureFactoriesNames
addSessionListener, getSessionListenerProxy, removeSessionListener
addChannelListener, getChannelListenerProxy, removeChannelListener
resolveChannelStreamPacketWriter
addPortForwardingEventListener, getPortForwardingEventListenerProxy, removePortForwardingEventListener
writePacket
addCloseFutureListener, close, close, close, getMaxCloseWaitTime, isClosed, isClosing, isOpen, removeCloseFutureListener
private final boolean serverSession
private final IoSession ioSession
private final java.util.Map<java.lang.String,java.lang.Object> properties
private final java.util.Map<AttributeRepository.AttributeKey<?>,java.lang.Object> attributes
private long authTimeoutStart
private long idleTimeoutStart
private final java.util.concurrent.atomic.AtomicReference<Session.TimeoutStatus> timeoutStatus
private ReservedSessionMessagesHandler reservedSessionMessagesHandler
private UnknownChannelReferenceHandler unknownChannelReferenceHandler
private ChannelStreamPacketWriterResolver channelStreamPacketWriterResolver
private java.lang.String username
private boolean authed
protected SessionHelper(boolean serverSession, FactoryManager factoryManager, IoSession ioSession)
serverSession
- true
if this is a server session, false
if client onefactoryManager
- the factory managerioSession
- the underlying I/O sessionpublic IoSession getIoSession()
getIoSession
in interface Session
IoSession
associated to this sessionpublic boolean isServerSession()
public FactoryManager getFactoryManager()
getFactoryManager
in interface FactoryManagerHolder
FactoryManager
public PropertyResolver getParentPropertyResolver()
getParentPropertyResolver
in interface PropertyResolver
null
if no parentpublic java.util.Map<java.lang.String,java.lang.Object> getProperties()
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, the toString()
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 a long
then it will be parsed into one. Also, if the mapped
value is an Integer
but a long
is expected, then it will
be converted into one.
getProperties
in interface PropertyResolver
Map
containing configuration values, never null
.
Note: may be immutable.public int getAttributesCount()
getAttributesCount
in interface AttributeRepository
public <T> T getAttribute(AttributeRepository.AttributeKey<T> key)
AttributeRepository
getAttribute
in interface AttributeRepository
T
- The generic attribute typekey
- The key of the attribute; must not be null
.null
if there is no value associated with the specified keypublic java.util.Collection<AttributeRepository.AttributeKey<?>> attributeKeys()
attributeKeys
in interface AttributeRepository
Collection
snapshot of all the currently registered
attributes in the repositorypublic <T> T computeAttributeIfAbsent(AttributeRepository.AttributeKey<T> key, java.util.function.Function<? super AttributeRepository.AttributeKey<T>,? extends T> resolver)
AttributeStore
null
), attempts to compute its value using the given mapping
function and enters it into this map unless null
.computeAttributeIfAbsent
in interface AttributeStore
T
- The generic attribute typekey
- The key of the attribute; must not be null
.resolver
- The (never null
) mapping function to use if value
not already mapped. If returns null
then value is not mapped to
the provided key.null
if value not mapped and resolver
did not return a non-null
value for itpublic <T> T setAttribute(AttributeRepository.AttributeKey<T> key, T value)
AttributeStore
setAttribute
in interface AttributeStore
T
- The generic attribute typekey
- The key of the attribute; must not be null
.value
- The value of the attribute; must not be null
.null
if it is new.public <T> T removeAttribute(AttributeRepository.AttributeKey<T> key)
AttributeStore
removeAttribute
in interface AttributeStore
T
- The generic attribute typekey
- The key of the attribute; must not be null
.null
if no previous valuepublic void clearAttributes()
AttributeStore
clearAttributes
in interface AttributeStore
public java.lang.String getUsername()
getUsername
in interface UsernameHolder
null
/empty if holder
not yet initializedpublic void setUsername(java.lang.String username)
setUsername
in interface MutableUserHolder
public boolean isAuthenticated()
isAuthenticated
in interface SessionContext
true
if session has successfully completed the authentication phasepublic void setAuthenticated() throws java.io.IOException
setAuthenticated
in interface Session
java.io.IOException
protected void checkForTimeouts() throws java.io.IOException
java.io.IOException
- If failed to checkcheckAuthenticationTimeout(long, long)
,
checkIdleTimeout(long, long)
public long getAuthTimeoutStart()
getAuthTimeoutStart
in interface Session
public long resetAuthTimeout()
Session
resetAuthTimeout
in interface Session
Session.getAuthTimeoutStart()
protected java.util.AbstractMap.SimpleImmutableEntry<Session.TimeoutStatus,java.lang.String> checkAuthenticationTimeout(long now, long authTimeoutMs)
now
- The current time in millisauthTimeoutMs
- The configured timeout in millis - if non-positive then no timeoutAbstractMap.SimpleImmutableEntry
specifying the timeout status and disconnect reason
message if timeout expired, null
or NoTimeout
if no timeout occurredgetAuthTimeout()
public long getIdleTimeoutStart()
getIdleTimeoutStart
in interface Session
protected java.util.AbstractMap.SimpleImmutableEntry<Session.TimeoutStatus,java.lang.String> checkIdleTimeout(long now, long idleTimeoutMs)
now
- The current time in millisidleTimeoutMs
- The configured timeout in millis - if non-positive then no timeoutAbstractMap.SimpleImmutableEntry
specifying the timeout status and disconnect reason
message if timeout expired, null
or NoTimeout
if no timeout occurredgetIdleTimeout()
public long resetIdleTimeout()
Session
resetIdleTimeout
in interface Session
Session.getIdleTimeoutStart()
public Session.TimeoutStatus getTimeoutStatus()
Session
getTimeoutStatus
in interface Session
null
public java.lang.Object getLock()
public ReservedSessionMessagesHandler getReservedSessionMessagesHandler()
getReservedSessionMessagesHandler
in interface ReservedSessionMessagesManager
ReservedSessionMessagesHandler
- may be null
public void setReservedSessionMessagesHandler(ReservedSessionMessagesHandler handler)
setReservedSessionMessagesHandler
in interface ReservedSessionMessagesManager
handler
- The ReservedSessionMessagesHandler
to use - may be null
protected void handleIgnore(Buffer buffer) throws java.lang.Exception
java.lang.Exception
protected IoWriteFuture sendNotImplemented(long seqNoValue) throws java.io.IOException
SSH_MSG_UNIMPLEMENTED
messageseqNoValue
- The referenced sequence numberIoWriteFuture
that can be used to wait for packet write completionjava.io.IOException
- if an error occurred sending the packetprotected void handleUnimplemented(Buffer buffer) throws java.lang.Exception
java.lang.Exception
public IoWriteFuture sendDebugMessage(boolean display, java.lang.Object msg, java.lang.String lang) throws java.io.IOException
Session
SSH_MSG_DEBUG
to the peer sessionsendDebugMessage
in interface Session
display
- true
if OK to display the message at the peer as-ismsg
- The message object whose toString()
value to be used - if
null
then the "null" string is sentlang
- The language - null
/empty if some pre-agreed default is usedIoWriteFuture
that can be used to check when the packet has actually been sentjava.io.IOException
- if an error occurred when encoding sending the packetprotected void handleDebug(Buffer buffer) throws java.lang.Exception
java.lang.Exception
protected ReservedSessionMessagesHandler resolveReservedSessionMessagesHandler()
public UnknownChannelReferenceHandler getUnknownChannelReferenceHandler()
getUnknownChannelReferenceHandler
in interface UnknownChannelReferenceHandlerManager
UnknownChannelReferenceHandlerManager
to use - if
null
then any reference to unknown channel causes an SshChannelNotFoundException
public void setUnknownChannelReferenceHandler(UnknownChannelReferenceHandler unknownChannelReferenceHandler)
setUnknownChannelReferenceHandler
in interface UnknownChannelReferenceHandlerManager
unknownChannelReferenceHandler
- The UnknownChannelReferenceHandlerManager
to use - if
null
then any reference to unknown channel causes an SshChannelNotFoundException
public UnknownChannelReferenceHandler resolveUnknownChannelReferenceHandler()
UnknownChannelReferenceHandlerManager
resolveUnknownChannelReferenceHandler
in interface UnknownChannelReferenceHandlerManager
public ChannelStreamPacketWriterResolver getChannelStreamPacketWriterResolver()
getChannelStreamPacketWriterResolver
in interface ChannelStreamPacketWriterResolverManager
public void setChannelStreamPacketWriterResolver(ChannelStreamPacketWriterResolver resolver)
setChannelStreamPacketWriterResolver
in interface ChannelStreamPacketWriterResolverManager
public ChannelStreamPacketWriterResolver resolveChannelStreamPacketWriterResolver()
resolveChannelStreamPacketWriterResolver
in interface ChannelStreamPacketWriterResolverManager
public IoWriteFuture sendIgnoreMessage(byte... data) throws java.io.IOException
Session
SSH_MSG_IGNORE
to the peer sessionsendIgnoreMessage
in interface Session
data
- The message dataIoWriteFuture
that can be used to check when the packet has actually been sentjava.io.IOException
- if an error occurred when encoding sending the packetpublic IoWriteFuture writePacket(Buffer buffer, long timeout, java.util.concurrent.TimeUnit unit) throws java.io.IOException
Session
IoWriteFuture
will be set with a
TimeoutException
exception to indicate a timeout.writePacket
in interface Session
buffer
- the buffer to encode and spendtimeout
- the timeoutunit
- the time unit of the timeout parameterjava.io.IOException
- if an error occurred when encoding sending the packetprotected void signalSessionCreated(IoSession ioSession) throws java.lang.Exception
java.lang.Exception
protected void signalSessionCreated(SessionListener listener)
protected void signalSessionEvent(SessionListener.Event event) throws java.io.IOException
event
- The event to sendjava.io.IOException
- If any of the registered listeners threw an exception.protected void signalSessionEvent(SessionListener listener, SessionListener.Event event) throws java.io.IOException
java.io.IOException
protected void invokeSessionSignaller(Invoker<SessionListener,java.lang.Void> invoker) throws java.lang.Throwable
java.lang.Throwable
protected byte[] resizeKey(byte[] e, int kdfSize, Digest hash, byte[] k, byte[] h) throws java.lang.Exception
e
- the key to resizekdfSize
- the cipher key-derivation-factor (in bytes)hash
- the hash algorithmk
- the key exchange k parameterh
- the key exchange h parameterjava.lang.Exception
- if a problem occur while resizing the keyprotected java.net.SocketAddress resolvePeerAddress(java.net.SocketAddress knownAddress)
knownAddress
- Any externally set peer address - e.g., due to some
proxy mechanism meta-datanull
otherwise, the IoSession
peer addressprotected long calculateNextIgnorePacketCount(Random r, long freq, int variance)
protected java.lang.String resolveIdentificationString(java.lang.String configPropName)
FactoryManager
. If a value is set, then it is
appended to the standard SessionContext.DEFAULT_SSH_VERSION_PREFIX
.
Otherwise a default value is returned consisting of the prefix and
the core artifact name + version in uppercase - e.g.,'
"SSH-2.0-APACHE-SSHD-1.2.3.4"configPropName
- The property used to query the factory managerprotected IoWriteFuture sendIdentification(java.lang.String ident) throws java.io.IOException
ident
- our identification to sendIoWriteFuture
that can be used to wait for notification
that identification has been sendjava.io.IOException
- If failed to send the packetprotected java.util.List<java.lang.String> doReadIdentification(Buffer buffer, boolean server)
null
value will be returned. Else the identification
string will be returned and the data read will be consumed from the buffer.buffer
- the buffer containing the identification stringserver
- true
if it is called by the server session,
false
if by the client sessionList
of all received remote identification lines until
the version line was read or null
if more data is needed.
The identification line is the last one in the listprotected java.util.Map<KexProposalOption,java.lang.String> createProposal(java.lang.String hostKeyTypes)
hostKeyTypes
- The comma-separated list of supported host key typesMap
protected java.util.Map<KexProposalOption,java.lang.String> mergeProposals(java.util.Map<KexProposalOption,java.lang.String> current, java.util.Map<KexProposalOption,java.lang.String> proposal)
protected void signalNegotiationStart(java.util.Map<KexProposalOption,java.lang.String> c2sOptions, java.util.Map<KexProposalOption,java.lang.String> s2cOptions)
protected void signalNegotiationStart(SessionListener listener, java.util.Map<KexProposalOption,java.lang.String> c2sOptions, java.util.Map<KexProposalOption,java.lang.String> s2cOptions)
protected void signalNegotiationEnd(java.util.Map<KexProposalOption,java.lang.String> c2sOptions, java.util.Map<KexProposalOption,java.lang.String> s2cOptions, java.util.Map<KexProposalOption,java.lang.String> negotiatedGuess, java.lang.Throwable reason)
protected void signalNegotiationEnd(SessionListener listener, java.util.Map<KexProposalOption,java.lang.String> c2sOptions, java.util.Map<KexProposalOption,java.lang.String> s2cOptions, java.util.Map<KexProposalOption,java.lang.String> negotiatedGuess, java.lang.Throwable reason)
protected IoWriteFuture sendNewKeys() throws java.io.IOException
IoWriteFuture
that can be used to wait and
check the result of sending the packetjava.io.IOException
- if an error occurs sending the messagepublic void disconnect(int reason, java.lang.String msg) throws java.io.IOException
Session
disconnect
in interface Session
reason
- the reason code for this disconnectmsg
- the text messagejava.io.IOException
- if an error occurred sending the packetprotected void handleDisconnect(Buffer buffer) throws java.lang.Exception
java.lang.Exception
protected void handleDisconnect(int code, java.lang.String msg, java.lang.String lang, Buffer buffer) throws java.lang.Exception
java.lang.Exception
protected void signalDisconnect(int code, java.lang.String msg, java.lang.String lang, boolean initiator)
protected void signalDisconnect(SessionListener listener, int code, java.lang.String msg, java.lang.String lang, boolean initiator)
public void exceptionCaught(java.lang.Throwable t)
SshException
.exceptionCaught
in interface Session
t
- the exception to processprotected void signalExceptionCaught(java.lang.Throwable t)
protected void signalExceptionCaught(SessionListener listener, java.lang.Throwable t)
protected void signalSessionClosed()
protected void signalSessionClosed(SessionListener listener)
protected abstract ConnectionService getConnectionService()
protected ForwardingFilter getForwardingFilter()
public java.util.List<java.util.Map.Entry<java.lang.Integer,SshdSocketAddress>> getLocalForwardsBindings()
getLocalForwardsBindings
in interface PortForwardingInformationProvider
SshdSocketAddress
public boolean isLocalPortForwardingStartedForPort(int port)
PortForwardingInformationProvider
isLocalPortForwardingStartedForPort
in interface PortForwardingInformationProvider
port
- The local porttrue
if local port forwarding is startedgetBoundLocalPortForward
public java.util.NavigableSet<java.lang.Integer> getStartedLocalPortForwards()
getStartedLocalPortForwards
in interface PortForwardingInformationProvider
NavigableSet
snapshot of the currently started
local port forwardspublic 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>> getRemoteForwardsBindings()
getRemoteForwardsBindings
in interface PortForwardingInformationProvider
SshdSocketAddress
public boolean isRemotePortForwardingStartedForPort(int port)
PortForwardingInformationProvider
isRemotePortForwardingStartedForPort
in interface PortForwardingInformationProvider
port
- The remote porttrue
if remote port forwarding is startedgetBoundRemotePortForward
public java.util.NavigableSet<java.lang.Integer> getStartedRemotePortForwards()
getStartedRemotePortForwards
in interface PortForwardingInformationProvider
NavigableSet
snapshot of the currently started
remote port forwardspublic SshdSocketAddress getBoundRemotePortForward(int port)
getBoundRemotePortForward
in interface PortForwardingInformationProvider
port
- The port numberSshdSocketAddress
for the port
- null
if none boundisRemotePortForwardingStartedForPort
,
PortForwardingInformationProvider.getStartedRemotePortForwards()
public long getAuthTimeout()
getAuthTimeout
in interface Session
public long getIdleTimeout()
getIdleTimeout
in interface Session
public java.lang.String toString()
toString
in class java.lang.Object