Interface ReservedSessionMessagesHandler

  • All Superinterfaces:
    java.util.EventListener, SshdEventListener
    All Known Implementing Classes:
    ReservedSessionMessagesHandlerAdapter

    public interface ReservedSessionMessagesHandler
    extends SshdEventListener
    Provides a way to listen and handle the SSH_MSG_IGNORE and SSH_MSG_DEBUG messages that are received by a session, as well as proprietary and/or extension messages and behavior.
    • Method Detail

      • sendIdentification

        default IoWriteFuture sendIdentification​(Session session,
                                                 java.lang.String version,
                                                 java.util.List<java.lang.String> extraLines)
                                          throws java.lang.Exception
        Send the initial version exchange identification in and independent manner
        Parameters:
        session - The Session through which the version is exchange is being managed
        version - The version line that was resolved - Note: since this string is part of the KEX and is cached in the calling session, any changes to it require updating the session's cached value.
        extraLines - Extra lines to be sent - valid only for server sessions. Note:/B> the handler may modify these lines and return null thus signaling the session to proceed with sending the identification
        Returns:
        A IoWriteFuture that can be used to wait for the data to be sent successfully. If null then the session will send the identification, otherwise it is assumed that the handler has sent it.
        Throws:
        java.lang.Exception - if failed to handle the callback
        See Also:
        RFC 4253 - section 4.2 - Protocol Version Exchange
      • sendKexInitRequest

        default IoWriteFuture sendKexInitRequest​(Session session,
                                                 java.util.Map<KexProposalOption,​java.lang.String> proposal,
                                                 Buffer packet)
                                          throws java.lang.Exception
        Invoked before sending the SSH_MSG_KEXINIT packet
        Parameters:
        session - The Session through which the key exchange is being managed
        proposal - The KEX proposal that was used to build the packet
        packet - The packet containing the fully encoded message - Caveat: this packet later serves as part of the key generation, so care must be taken if manipulating it.
        Returns:
        A non-null IoWriteFuture to signal that handler took care of the KEX packet delivery.
        Throws:
        java.lang.Exception - if failed to handle the callback
      • handleIgnoreMessage

        default void handleIgnoreMessage​(Session session,
                                         Buffer buffer)
                                  throws java.lang.Exception
        Invoked when an SSH_MSG_IGNORE packet is received
        Parameters:
        session - The Session through which the message was received
        buffer - The Buffer containing the data
        Throws:
        java.lang.Exception - If failed to handle the message
        See Also:
        RFC 4253 - section 11.2
      • handleDebugMessage

        default void handleDebugMessage​(Session session,
                                        Buffer buffer)
                                 throws java.lang.Exception
        Invoked when an SSH_MSG_DEBUG packet is received
        Parameters:
        session - The Session through which the message was received
        buffer - The Buffer containing the data
        Throws:
        java.lang.Exception - If failed to handle the message
        See Also:
        RFC 4253 - section 11.3
      • handleUnimplementedMessage

        default boolean handleUnimplementedMessage​(Session session,
                                                   int cmd,
                                                   Buffer buffer)
                                            throws java.lang.Exception
        Invoked when a packet with an un-implemented message is received - including SSH_MSG_UNIMPLEMENTED itself
        Parameters:
        session - The Session through which the message was received
        cmd - The received (un-implemented) command
        buffer - The Buffer containing the data - positioned just beyond the command
        Returns:
        true if message handled internally, false if should return a SSH_MSG_UNIMPLEMENTED reply (default behavior)
        Throws:
        java.lang.Exception - If failed to handle the message
        See Also:
        RFC 4253 - section 11.4
      • sendReservedHeartbeat

        default boolean sendReservedHeartbeat​(ConnectionService service)
                                       throws java.lang.Exception
        Invoked if the user configured usage of a proprietary heartbeat mechanism. Note: by default throws UnsupportedOperationException so users who configure a proprietary heartbeat mechanism option must provide an implementation for this method.
        Parameters:
        service - The ConnectionService through which the heartbeat is being executed.
        Returns:
        true whether heartbeat actually sent - Note: used mainly for debugging purposes.
        Throws:
        java.lang.Exception - If failed to send the heartbeat - Note: causes associated session termination.