public interface Session extends KexFactoryManager, SessionListenerManager, ReservedSessionMessagesManager, ChannelListenerManager, ChannelStreamPacketWriterResolverManager, PortForwardingEventListenerManager, UnknownChannelReferenceHandlerManager, FactoryManagerHolder, PortForwardingInformationProvider, PropertyResolver, AttributeStore, Closeable, MutableUserHolder, PacketWriter
null
/empty if the session is not yet authenticatedModifier and Type | Interface and Description |
---|---|
static class |
Session.TimeoutStatus
Timeout status.
|
AttributeStore.AttributeKey<T>
Modifier and Type | Field and Description |
---|---|
static String |
DEFAULT_SSH_VERSION_PREFIX
Default prefix expected for the client / server identification string
|
static String |
FALLBACK_SSH_VERSION_PREFIX
Backward compatible special prefix
|
static int |
MAX_VERSION_LINE_LENGTH
Maximum number of characters for any single line sent as part
of the initial handshake - according to
RFC 4253 - section 4.2:
|
NONE
EMPTY
CLOSE_WAIT_TIMEOUT, DEFAULT_CLOSE_WAIT_TIMEOUT
Modifier and Type | Method and Description |
---|---|
Buffer |
createBuffer(byte cmd)
Create a new buffer for the specified SSH packet and reserve the needed space
(5 bytes) for the packet header.
|
Buffer |
createBuffer(byte cmd,
int estimatedSize)
Create a new buffer for the specified SSH packet and reserve the needed space
(5 bytes) for the packet header.
|
void |
disconnect(int reason,
String msg)
Send a disconnect packet with the given reason and message.
|
void |
exceptionCaught(Throwable t)
Handle any exceptions that occurred on this session.
|
long |
getAuthTimeout() |
CipherInformation |
getCipherInformation(boolean incoming)
Retrieves current cipher information - Note: may change if
key re-exchange executed
|
String |
getClientVersion()
Retrieve the client version for this session.
|
CompressionInformation |
getCompressionInformation(boolean incoming)
Retrieves current compression information - Note: may change if
key re-exchange executed
|
long |
getIdleTimeout() |
IoSession |
getIoSession() |
KeyExchange |
getKex() |
MacInformation |
getMacInformation(boolean incoming)
Retrieves current MAC information - Note: may change if
key re-exchange executed
|
String |
getNegotiatedKexParameter(KexProposalOption paramType)
Retrieve one of the negotiated values during the KEX stage
|
String |
getServerVersion()
Retrieve the server version for this session.
|
<T extends Service> |
getService(Class<T> clazz)
Get the service of the specified type.
|
byte[] |
getSessionId() |
Session.TimeoutStatus |
getTimeoutStatus()
Check if timeout has occurred.
|
boolean |
isAuthenticated() |
static boolean |
isValidVersionPrefix(String version) |
Buffer |
prepareBuffer(byte cmd,
Buffer buffer)
Prepare a new "clean" buffer while reserving the needed space
(5 bytes) for the packet header.
|
KeyExchangeFuture |
reExchangeKeys()
Initiate a new key exchange.
|
Buffer |
request(String request,
Buffer buffer,
long timeout,
TimeUnit unit)
Send a global request and wait for the response.
|
void |
resetIdleTimeout()
Re-start idle timeout timer
|
default <T> T |
resolveAttribute(AttributeStore.AttributeKey<T> key)
Attempts to resolve the associated value by going up the store's
hierarchy (if any)
|
static <T> T |
resolveAttribute(Session session,
AttributeStore.AttributeKey<T> key)
Attempts to use the session's attribute, if not found then tries the factory manager
|
IoWriteFuture |
sendDebugMessage(boolean display,
Object msg,
String lang)
Sends an
SSH_MSG_DEBUG to the peer session |
IoWriteFuture |
sendIgnoreMessage(byte... data)
Sends an
SSH_MSG_IGNORE to the peer session |
void |
setAuthenticated() |
void |
startService(String name) |
IoWriteFuture |
writePacket(Buffer buffer,
long timeout,
TimeUnit unit)
Encode and send the given buffer with the specified timeout.
|
getCipherFactories, getCipherFactoriesNameList, getCipherFactoriesNames, getCompressionFactories, getCompressionFactoriesNameList, getCompressionFactoriesNames, getKeyExchangeFactories, getMacFactories, getMacFactoriesNameList, getMacFactoriesNames, setCipherFactories, setCipherFactoriesNameList, setCipherFactoriesNames, setCipherFactoriesNames, setCompressionFactories, setCompressionFactoriesNameList, setCompressionFactoriesNames, setCompressionFactoriesNames, setKeyExchangeFactories, setMacFactories, setMacFactoriesNameList, setMacFactoriesNames, setMacFactoriesNames
getKeyPairProvider, setKeyPairProvider
getSignatureFactories, getSignatureFactories, getSignatureFactoriesNameList, getSignatureFactoriesNames, resolveSignatureFactories, setSignatureFactories, setSignatureFactoriesNameList, setSignatureFactoriesNames, setSignatureFactoriesNames
addSessionListener, getSessionListenerProxy, removeSessionListener
getReservedSessionMessagesHandler, setReservedSessionMessagesHandler
addChannelListener, getChannelListenerProxy, removeChannelListener
getChannelStreamPacketWriterResolver, resolveChannelStreamPacketWriter, resolveChannelStreamPacketWriterResolver, setChannelStreamPacketWriterResolver
addPortForwardingEventListener, getPortForwardingEventListenerProxy, removePortForwardingEventListener
getUnknownChannelReferenceHandler, resolveUnknownChannelReferenceHandler, setUnknownChannelReferenceHandler
getFactoryManager
getBoundLocalPortForward, getBoundRemotePortForward, getLocalForwardsBindings, getRemoteForwardsBindings, getStartedLocalPortForwards, getStartedRemotePortForwards, isLocalPortForwardingStartedForPort, isRemotePortForwardingStartedForPort
getBoolean, getBooleanProperty, getInteger, getIntProperty, getLong, getLongProperty, getObject, getParentPropertyResolver, getProperties, getString, getStringProperty
getAttribute, removeAttribute, setAttribute
addCloseFutureListener, close, close, close, getMaxCloseWaitTime, isClosed, isClosing, isOpen, removeCloseFutureListener
setUsername
getUsername
writePacket
static final String DEFAULT_SSH_VERSION_PREFIX
static final String FALLBACK_SSH_VERSION_PREFIX
static final int MAX_VERSION_LINE_LENGTH
The maximum length of the string is 255 characters,
including the Carriage Return and Line Feed.
String getClientVersion()
String getServerVersion()
String getNegotiatedKexParameter(KexProposalOption paramType)
paramType
- The request KexProposalOption
value
- ignored if null
null
if invalid
parameter or no negotiated valueCipherInformation getCipherInformation(boolean incoming)
incoming
- If true
then the cipher for the incoming data,
otherwise for the outgoing dataCipherInformation
- or null
if not negotiated yet.CompressionInformation getCompressionInformation(boolean incoming)
incoming
- If true
then the compression for the incoming data,
otherwise for the outgoing dataCompressionInformation
- or null
if not negotiated yet.MacInformation getMacInformation(boolean incoming)
incoming
- If true
then the MAC for the incoming data,
otherwise for the outgoing dataMacInformation
- or null
if not negotiated yet.Buffer createBuffer(byte cmd)
cmd
- the SSH commandBuffer createBuffer(byte cmd, int estimatedSize)
cmd
- The SSH command to initialize the buffer withestimatedSize
- Estimated number of bytes the buffer will hold, 0 if unknown.prepareBuffer(byte, Buffer)
Buffer prepareBuffer(byte cmd, Buffer buffer)
cmd
- The SSH command to initialize the buffer withbuffer
- The Buffer
instance to initializeIoWriteFuture sendDebugMessage(boolean display, Object msg, String lang) throws IOException
SSH_MSG_DEBUG
to the peer sessiondisplay
- 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 sentIOException
- if an error occurred when encoding sending the packetIoWriteFuture sendIgnoreMessage(byte... data) throws IOException
SSH_MSG_IGNORE
to the peer sessiondata
- The message dataIoWriteFuture
that can be used to check when the packet has actually been sentIOException
- if an error occurred when encoding sending the packetIoWriteFuture writePacket(Buffer buffer, long timeout, TimeUnit unit) throws IOException
IoWriteFuture
will be set with a
TimeoutException
exception to indicate a timeout.buffer
- the buffer to encode and spendtimeout
- the timeoutunit
- the time unit of the timeout parameterIOException
- if an error occurred when encoding sending the packetBuffer request(String request, Buffer buffer, long timeout, TimeUnit unit) throws IOException
SSH_MSG_GLOBAL_REQUEST
with a result expected, else it will time outrequest
- the request name - used mainly for logging and debuggingbuffer
- the buffer containing the global requesttimeout
- The number of time units to wait - must be positiveunit
- The TimeUnit
to wait for the responsenull
otherwise.IOException
- if an error occurred when encoding sending the packetvoid exceptionCaught(Throwable t)
SshException
with a positive error codet
- the exception to processKeyExchangeFuture reExchangeKeys() throws IOException
KeyExchangeFuture
for awaiting the completion of the exchangeIOException
- If failed to request keys re-negotiation<T extends Service> T getService(Class<T> clazz)
T
- The generic Service
typeclazz
- The service classIllegalStateException
- If failed to find a matching servicevoid resetIdleTimeout()
Session.TimeoutStatus getTimeoutStatus()
null
long getAuthTimeout()
long getIdleTimeout()
boolean isAuthenticated()
void setAuthenticated() throws IOException
IOException
byte[] getSessionId()
null
if
not yet establishedKeyExchange getKex()
void disconnect(int reason, String msg) throws IOException
reason
- the reason code for this disconnectmsg
- the text messageIOException
- if an error occurred sending the packetvoid startService(String name) throws Exception
name
- Service nameException
- If failed to start itdefault <T> T resolveAttribute(AttributeStore.AttributeKey<T> key)
AttributeStore
resolveAttribute
in interface AttributeStore
T
- The generic attribute typekey
- The key of the attribute; must not be null
.null
if there is no value associated with the specified keystatic boolean isValidVersionPrefix(String version)
version
- The reported client/server versiontrue
if version not empty and starts with either
"SSH-2.0-" or "SSH-1.99-"static <T> T resolveAttribute(Session session, AttributeStore.AttributeKey<T> key)
T
- The generic attribute typesession
- The Session
- ignored if null
key
- The attribute key - never null
null
if not foundFactoryManagerHolder.getFactoryManager()
,
FactoryManager#resolveAttribute(FactoryManager, AttributeKey)
Copyright © 2008–2018 The Apache Software Foundation. All rights reserved.