James Moger
2014-10-06 498351b0a1f674bf5e665addfb4c68be9720158e
src/main/java/com/gitblit/transport/ssh/SshDaemon.java
@@ -41,16 +41,14 @@
import com.gitblit.Keys;
import com.gitblit.manager.IGitblit;
import com.gitblit.transport.ssh.commands.SshCommandFactory;
import com.gitblit.utils.IdGenerator;
import com.gitblit.utils.JnaUtils;
import com.gitblit.utils.StringUtils;
import com.gitblit.utils.WorkQueue;
import com.google.common.io.Files;
/**
 * Manager for the ssh transport. Roughly analogous to the
 * {@link com.gitblit.transport.git.GitDaemon} class.
 *
 * @author Eric Myhre
 *
 */
public class SshDaemon {
@@ -78,14 +76,18 @@
    * Construct the Gitblit SSH daemon.
    *
    * @param gitblit
    * @param workQueue
    */
   public SshDaemon(IGitblit gitblit, IdGenerator idGenerator) {
   public SshDaemon(IGitblit gitblit, WorkQueue workQueue) {
      this.gitblit = gitblit;
      IStoredSettings settings = gitblit.getSettings();
      // Ensure that Bouncy Castle is our JCE provider
      SecurityUtils.setRegisterBouncyCastle(true);
      if (SecurityUtils.isBouncyCastleRegistered()) {
         log.debug("BouncyCastle is registered as a JCE provider");
      }
      // Generate host RSA and DSA keypairs and create the host keypair provider
      File rsaKeyStore = new File(gitblit.getBaseFolder(), "ssh-rsa-hostkey.pem");
@@ -128,7 +130,7 @@
      sshd.setSessionFactory(new SshServerSessionFactory());
      sshd.setFileSystemFactory(new DisabledFilesystemFactory());
      sshd.setTcpipForwardingFilter(new NonForwardingFilter());
      sshd.setCommandFactory(new SshCommandFactory(gitblit, idGenerator));
      sshd.setCommandFactory(new SshCommandFactory(gitblit, workQueue));
      sshd.setShellFactory(new WelcomeShell(settings));
      // Set the server id.  This can be queried with:
@@ -143,7 +145,7 @@
   public String formatUrl(String gituser, String servername, String repository) {
      if (sshd.getPort() == DEFAULT_PORT) {
         // standard port
         return MessageFormat.format("{0}@{1}/{2}", gituser, servername,
         return MessageFormat.format("ssh://{0}@{1}/{2}", gituser, servername,
               repository);
      } else {
         // non-standard port
@@ -214,8 +216,8 @@
            Files.touch(file);
            try {
               JnaUtils.setFilemode(file, JnaUtils.S_IRUSR | JnaUtils.S_IWUSR);
            } catch (UnsupportedOperationException e) {
               // Windows
            } catch (UnsatisfiedLinkError | UnsupportedOperationException e) {
               // Unexpected/Unsupported OS or Architecture
            }
            FileOutputStream os = new FileOutputStream(file);