From 22957a70fb7ba8a38564d6b6be15c661da0c3a20 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Thu, 10 Apr 2014 18:58:08 -0400
Subject: [PATCH] Start SSH usage documentation
---
src/main/java/com/gitblit/transport/ssh/SshSessionFactory.java | 48 ++++++++++++++++++++++++++++--------------------
1 files changed, 28 insertions(+), 20 deletions(-)
diff --git a/src/main/java/com/gitblit/transport/ssh/SshSessionFactory.java b/src/main/java/com/gitblit/transport/ssh/SshSessionFactory.java
index ef51340..66fe057 100644
--- a/src/main/java/com/gitblit/transport/ssh/SshSessionFactory.java
+++ b/src/main/java/com/gitblit/transport/ssh/SshSessionFactory.java
@@ -17,16 +17,15 @@
import java.net.SocketAddress;
-import org.apache.mina.core.future.IoFuture;
-import org.apache.mina.core.future.IoFutureListener;
-import org.apache.mina.core.session.IoSession;
import org.apache.mina.transport.socket.SocketSessionConfig;
-import org.apache.sshd.server.session.ServerSession;
+import org.apache.sshd.common.future.CloseFuture;
+import org.apache.sshd.common.future.SshFutureListener;
+import org.apache.sshd.common.io.IoSession;
+import org.apache.sshd.common.io.mina.MinaSession;
+import org.apache.sshd.common.session.AbstractSession;
import org.apache.sshd.server.session.SessionFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
-import com.gitblit.utils.IdGenerator;
/**
@@ -38,32 +37,41 @@
private final Logger log = LoggerFactory.getLogger(getClass());
- private final IdGenerator idGenerator;
-
- public SshSessionFactory(IdGenerator idGenerator) {
- this.idGenerator = idGenerator;
+ public SshSessionFactory() {
}
@Override
- protected ServerSession createSession(final IoSession io) throws Exception {
+ protected AbstractSession createSession(final IoSession io)
+ throws Exception {
log.info("connection accepted on " + io);
- if (io.getConfig() instanceof SocketSessionConfig) {
- final SocketSessionConfig c = (SocketSessionConfig) io.getConfig();
- c.setKeepAlive(true);
+ if (io instanceof MinaSession) {
+ if (((MinaSession) io).getSession().getConfig() instanceof SocketSessionConfig) {
+ ((SocketSessionConfig) ((MinaSession) io).getSession()
+ .getConfig()).setKeepAlive(true);
+ }
}
- final ServerSession s = (ServerSession) super.createSession(io);
+ final GitblitServerSession session = (GitblitServerSession) super
+ .createSession(io);
SocketAddress peer = io.getRemoteAddress();
- SshSession session = new SshSession(idGenerator.next(), peer);
- s.setAttribute(SshSession.KEY, session);
+ SshDaemonClient client = new SshDaemonClient(peer);
+ session.setAttribute(SshDaemonClient.KEY, client);
- io.getCloseFuture().addListener(new IoFutureListener<IoFuture>() {
+ // TODO(davido): Log a session close without authentication as a
+ // failure.
+ session.addCloseSessionListener(new SshFutureListener<CloseFuture>() {
@Override
- public void operationComplete(IoFuture future) {
+ public void operationComplete(CloseFuture future) {
log.info("connection closed on " + io);
}
});
- return s;
+ return session;
+ }
+
+ @Override
+ protected AbstractSession doCreateSession(IoSession ioSession)
+ throws Exception {
+ return new GitblitServerSession(server, ioSession);
}
}
--
Gitblit v1.9.1