public abstract class TransportProtocol<T extends SshContext> extends ExecutorOperationSupport<SshContext> implements ProtocolEngine, IdleStateListener
Modifier and Type | Field and Description |
---|---|
protected Service |
activeService |
static int |
AUTH_CANCELLED_BY_USER
Disconnect reason: Authentication was cancelled
|
static int |
BY_APPLICATION
Disconnect reason: The application disconnected
|
static String |
CHARSET_ENCODING
Character set encoding.
|
protected String |
cipherCS |
protected String |
cipherSC |
static int |
COMPRESSION_ERROR
Disconnect reason: A compression error occurred
|
protected String |
compressionCS |
protected String |
compressionSC |
protected Connection<T> |
con |
static int |
CONNECTED
Protocol state: The transport protocol is connected and services can be
started or may already be active.
|
static int |
CONNECTION_LOST
Disconnect reason: The connection was lost
|
static int |
DISCONNECTED
Protocol state: The transport protocol has disconnected.
|
static int |
HOST_KEY_NOT_VERIFIABLE
Disconnect reason: The host key supplied could not be verified
|
static int |
HOST_NOT_ALLOWED
Disconnect reason: The host is not allowed
|
static int |
ILLEGAL_USER_NAME
Disconnect reason: The user's name is illegal
|
static int |
KEY_EXCHANGE_FAILED
Disconnect reason: Key exchange failed
|
protected String |
keyExchangeAlgorithm |
protected String |
localIdentification |
protected byte[] |
localkex |
static Object |
lock |
static int |
MAC_ERROR
Disconnect reason: An error occurred verifying the MAC
|
protected String |
macCS |
protected String |
macSC |
static int |
NEGOTIATING_PROTOCOL
Protocol state: Negotation of the protocol version
|
static int |
NO_MORE_AUTH_METHODS_AVAILABLE
Disconnect reason: No more authentication methods are available
|
static int |
PERFORMING_KEYEXCHANGE
Protocol state: The protocol is performing key exchange
|
static int |
PROTOCOL_ERROR
Disconnect reason: A protocol error occurred
|
static int |
PROTOCOL_VERSION_NOT_SUPPORTED
Disconnect reason: The protocol version is not supported
|
protected String |
publicKey |
protected boolean |
receivedRemoteIdentification |
protected StringBuffer |
remoteIdentification |
protected byte[] |
remotekex |
static int |
RESERVED
Disconnect reason: Reserved
|
protected boolean |
sentLocalIdentification |
static int |
SERVICE_NOT_AVAILABLE
Disconnect reason: The requested service is not available
|
protected byte[] |
sessionIdentifier |
static int |
SSH_MSG_SERVICE_ACCEPT |
protected static int |
SSH_MSG_SERVICE_REQUEST |
protected T |
sshContext |
static int |
TOO_MANY_CONNECTIONS
Disconnect reason: Too many connections, try later
|
protected UUID |
uuid |
CALLBACKS, EVENTS, MESSAGES_INCOMING, MESSAGES_OUTGOING
Constructor and Description |
---|
TransportProtocol(T sshContext,
ConnectRequestFuture connectFuture)
Create a default transport protocol instance in CLIENT_MODE.
|
Modifier and Type | Method and Description |
---|---|
void |
addEventListener(TransportProtocolListener listener) |
protected abstract boolean |
canConnect(SocketConnection connection) |
protected void |
completeKeyExchange() |
void |
disconnect(int reason,
String description)
Disconnect from the remote host.
|
protected abstract void |
disconnected() |
protected void |
generateNewKeysClientIn() |
protected void |
generateNewKeysClientOut() |
protected void |
generateNewKeysServerIn() |
protected void |
generateNewKeysServerOut() |
static byte[] |
getBytes(String str,
String charset) |
String |
getCipherCS() |
String |
getCipherSC() |
String |
getCompressionCS() |
String |
getCompressionSC() |
ConnectRequestFuture |
getConnectFuture() |
Connection<T> |
getConnection() |
T |
getContext() |
DisconnectRequestFuture |
getDisconnectFuture() |
SocketAddress |
getLocalAddress()
Returns the local address to which the remote socket is connected.
|
int |
getLocalPort()
Returns the local port to which the remote socket is connected.
|
String |
getMacCS() |
String |
getMacSC() |
int |
getQueueSizes() |
SocketAddress |
getRemoteAddress() |
String |
getRemoteIdentification() |
int |
getRemotePort()
Returns the remote port of the connected socket.
|
SecureRandom |
getRND()
Gets the secure random number generator for this transport.
|
byte[] |
getSessionKey() |
SocketConnection |
getSocketConnection()
Get the
SocketConnection for this connection. |
T |
getSshContext() |
int |
getState() |
String |
getUUID() |
boolean |
idle()
Called when the selector framework is idle.
|
protected abstract void |
initializeKeyExchange(SshKeyExchange<T> keyExchange,
boolean firstPacketFollows,
boolean useFirstPacket) |
boolean |
isConnected()
Determine if the protocol is still connected
|
protected void |
keyExchangeInitialized() |
protected abstract void |
onConnected() |
protected abstract void |
onDisconnected() |
protected abstract void |
onNewKeysReceived() |
protected abstract void |
onNewKeysSent() |
protected void |
onRemoteIdentificationReceived(String remoteIdentification) |
void |
onSocketClose()
Disconnects everything internally
|
void |
onSocketConnect(SocketConnection connection)
The socket is connected and the protocol can now start.
|
boolean |
onSocketRead(ByteBuffer incomingData)
Called when the socket channel is reported to be ready for reading.
|
SocketWriteCallback |
onSocketWrite(ByteBuffer outgoingMessage)
Called when the socket channel is reported to be ready for writing.
|
void |
postMessage(SshMessage msg) |
void |
postMessage(SshMessage msg,
boolean kex) |
protected abstract boolean |
processTransportMessage(int msgid,
byte[] msg) |
protected String |
selectNegotiatedComponent(String clientlist,
String serverlist) |
void |
sendNewKeys() |
protected void |
transferState(TransportProtocol<? extends SshContext> transport) |
boolean |
wantsToWrite()
Determines whether the protocol wants to write to the socket.
|
addedTask, addOperationListener, addTask, cleanupOperations, completedTask, getOperationsCount, removeOperationListener, startTask
public static String CHARSET_ENCODING
protected String localIdentification
protected StringBuffer remoteIdentification
protected boolean receivedRemoteIdentification
protected boolean sentLocalIdentification
protected byte[] localkex
protected byte[] remotekex
protected byte[] sessionIdentifier
protected UUID uuid
protected Service activeService
protected static final int SSH_MSG_SERVICE_REQUEST
public static final int SSH_MSG_SERVICE_ACCEPT
public static final int NEGOTIATING_PROTOCOL
public static final int PERFORMING_KEYEXCHANGE
public static final int CONNECTED
public static final int DISCONNECTED
#getLastError()
,
Constant Field Valuesprotected String cipherCS
protected String cipherSC
protected String macCS
protected String macSC
protected String compressionCS
protected String compressionSC
protected String keyExchangeAlgorithm
protected String publicKey
protected Connection<T extends SshContext> con
public static final int HOST_NOT_ALLOWED
public static final int PROTOCOL_ERROR
public static final int KEY_EXCHANGE_FAILED
public static final int RESERVED
public static final int MAC_ERROR
public static final int COMPRESSION_ERROR
public static final int SERVICE_NOT_AVAILABLE
public static final int PROTOCOL_VERSION_NOT_SUPPORTED
public static final int HOST_KEY_NOT_VERIFIABLE
public static final int CONNECTION_LOST
public static final int BY_APPLICATION
public static final int TOO_MANY_CONNECTIONS
public static final int AUTH_CANCELLED_BY_USER
public static final int NO_MORE_AUTH_METHODS_AVAILABLE
public static final int ILLEGAL_USER_NAME
protected T extends SshContext sshContext
public static Object lock
public TransportProtocol(T sshContext, ConnectRequestFuture connectFuture)
IOException
protected void transferState(TransportProtocol<? extends SshContext> transport)
public ConnectRequestFuture getConnectFuture()
getConnectFuture
in interface ProtocolEngine
public DisconnectRequestFuture getDisconnectFuture()
getDisconnectFuture
in interface ProtocolEngine
public SocketConnection getSocketConnection()
ProtocolEngine
SocketConnection
for this connection.getSocketConnection
in interface ProtocolEngine
public void addEventListener(TransportProtocolListener listener)
public SocketAddress getRemoteAddress()
public int getRemotePort()
public T getContext()
getContext
in class ExecutorOperationSupport<SshContext>
public Connection<T> getConnection()
protected abstract boolean canConnect(SocketConnection connection)
protected abstract void onConnected()
protected abstract void onDisconnected()
public void onSocketConnect(SocketConnection connection)
ProtocolEngine
onSocketConnect
in interface ProtocolEngine
connection
- SocketConnectionpublic boolean onSocketRead(ByteBuffer incomingData)
onSocketRead
in interface ProtocolEngine
incomingData
- ByteBufferpublic boolean isConnected()
isConnected
in interface ProtocolEngine
protected void onRemoteIdentificationReceived(String remoteIdentification)
public boolean wantsToWrite()
ProtocolEngine
wantsToWrite
in interface ProtocolEngine
public int getQueueSizes()
public boolean idle()
idle
in interface IdleStateListener
public SocketWriteCallback onSocketWrite(ByteBuffer outgoingMessage)
onSocketWrite
in interface ProtocolEngine
outgoingMessage
- ByteBufferpublic int getState()
public SocketAddress getLocalAddress()
public int getLocalPort()
public String getRemoteIdentification()
public String getUUID()
public void disconnect(int reason, String description)
disconnect
in interface ProtocolEngine
reason
- description
- IOException
public void onSocketClose()
onSocketClose
in interface ProtocolEngine
public SecureRandom getRND()
protected abstract void initializeKeyExchange(SshKeyExchange<T> keyExchange, boolean firstPacketFollows, boolean useFirstPacket) throws IOException, SshException
IOException
SshException
protected void keyExchangeInitialized()
protected abstract void disconnected()
protected abstract void onNewKeysReceived()
protected abstract boolean processTransportMessage(int msgid, byte[] msg) throws IOException
IOException
protected abstract void onNewKeysSent()
public void sendNewKeys()
public T getSshContext()
protected String selectNegotiatedComponent(String clientlist, String serverlist) throws IOException
IOException
protected void completeKeyExchange()
protected void generateNewKeysServerOut()
protected void generateNewKeysServerIn()
protected void generateNewKeysClientOut()
protected void generateNewKeysClientIn()
public String getCipherCS()
public String getCipherSC()
public String getMacCS()
public String getMacSC()
public String getCompressionCS()
public String getCompressionSC()
public void postMessage(SshMessage msg)
public void postMessage(SshMessage msg, boolean kex)
public byte[] getSessionKey()
Copyright © 2016. All rights reserved.