Uploaded image for project: 'MINA SSHD'
  1. MINA SSHD
  2. SSHD-203

Add session state notifications

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 0.8.0
    • 0.9.0
    • None
    • Windows

    Description

      To the best of my knowledge, there's no way, in a customised SSH server, to detect when the client connection's auth has successfully completed. As a hack I came up with:

      public class RelaySshSession extends ServerSession {
      private final RelayService relayService;
      public RelaySshSession(RelayService relayService, SshServer server, IoSession sshIoSession) throws Exception

      { super(server, sshIoSession); this.relayService = relayService; }

      @Override
      public CloseFuture close(boolean immediately)

      { relayService.unbind(this); return super.close(immediately); }

      private boolean authorized = false;
      @Override
      public WriteFuture writePacket(Buffer buffer) throws IOException {
      if (!this.authorized) {
      byte[] bytes = buffer.array();
      if (bytes.length > 5 && bytes[5] == SshConstants.Message.SSH_MSG_USERAUTH_SUCCESS.toByte())

      { // need to send the auth packet before starting network session so that the // local service packets always follow the service. WriteFuture writeFuture = super.writePacket(buffer); // Tell the server side to start. relayService.bind(this); this.authorized = true; return writeFuture; }

      }
      return super.writePacket(buffer);
      }
      }

      As an example for why this might be useful, consider a dispatcher that accepts multiple clients. As long as any client is active the custom server send dispatch messages.

      Attachments

        Issue Links

          Activity

            People

              gnodet Guillaume Nodet
              fixmo-cagney Andrew C
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: