You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mina.apache.org by "Andrew C (JIRA)" <ji...@apache.org> on 2013/01/08 16:42:12 UTC
[jira] [Created] (SSHD-203) SSH server doesn't know when auth
completed
Andrew C created SSHD-203:
-----------------------------
Summary: SSH server doesn't know when auth completed
Key: SSHD-203
URL: https://issues.apache.org/jira/browse/SSHD-203
Project: MINA SSHD
Issue Type: Bug
Affects Versions: 0.8.0
Environment: Windows
Reporter: Andrew C
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.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira