You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by gn...@apache.org on 2013/07/26 11:49:18 UTC

[2/4] git commit: [SSHD-247] Enable SCP and SFTP in the default distribution Also add an option to select the IO provider

[SSHD-247] Enable SCP and SFTP in the default distribution
Also add an option to select the IO provider

Project: http://git-wip-us.apache.org/repos/asf/mina-sshd/repo
Commit: http://git-wip-us.apache.org/repos/asf/mina-sshd/commit/925e3ff5
Tree: http://git-wip-us.apache.org/repos/asf/mina-sshd/tree/925e3ff5
Diff: http://git-wip-us.apache.org/repos/asf/mina-sshd/diff/925e3ff5

Branch: refs/heads/master
Commit: 925e3ff50a9d64f7f48bc7f2cea9da50969fb7e0
Parents: 5debd37
Author: Guillaume Nodet <gn...@apache.org>
Authored: Fri Jul 26 11:48:34 2013 +0200
Committer: Guillaume Nodet <gn...@apache.org>
Committed: Fri Jul 26 11:48:34 2013 +0200

----------------------------------------------------------------------
 .../main/java/org/apache/sshd/SshServer.java    | 28 +++++++++++++++++++-
 1 file changed, 27 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/925e3ff5/sshd-core/src/main/java/org/apache/sshd/SshServer.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/SshServer.java b/sshd-core/src/main/java/org/apache/sshd/SshServer.java
index 59c2f79..57d9faf 100644
--- a/sshd-core/src/main/java/org/apache/sshd/SshServer.java
+++ b/sshd-core/src/main/java/org/apache/sshd/SshServer.java
@@ -62,7 +62,10 @@ import org.apache.sshd.common.future.CloseFuture;
 import org.apache.sshd.common.future.SshFutureListener;
 import org.apache.sshd.common.io.DefaultIoServiceFactory;
 import org.apache.sshd.common.io.IoAcceptor;
+import org.apache.sshd.common.io.IoServiceFactory;
 import org.apache.sshd.common.io.IoSession;
+import org.apache.sshd.common.io.mina.MinaServiceFactory;
+import org.apache.sshd.common.io.nio2.Nio2ServiceFactory;
 import org.apache.sshd.common.mac.HMACMD5;
 import org.apache.sshd.common.mac.HMACMD596;
 import org.apache.sshd.common.mac.HMACSHA1;
@@ -87,12 +90,14 @@ import org.apache.sshd.server.auth.UserAuthPublicKey;
 import org.apache.sshd.server.auth.gss.GSSAuthenticator;
 import org.apache.sshd.server.auth.gss.UserAuthGSS;
 import org.apache.sshd.server.channel.ChannelSession;
+import org.apache.sshd.server.command.ScpCommandFactory;
 import org.apache.sshd.server.kex.DHG1;
 import org.apache.sshd.server.kex.DHG14;
 import org.apache.sshd.server.keyprovider.PEMGeneratorHostKeyProvider;
 import org.apache.sshd.server.keyprovider.SimpleGeneratorHostKeyProvider;
 import org.apache.sshd.server.session.ServerSession;
 import org.apache.sshd.server.session.SessionFactory;
+import org.apache.sshd.server.sftp.SftpSubsystem;
 import org.apache.sshd.server.shell.ProcessShellFactory;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -445,6 +450,7 @@ public class SshServer extends AbstractFactoryManager implements ServerFactoryMa
 
     public static void main(String[] args) throws Exception {
         int port = 8000;
+        String provider;
         boolean error = false;
 
         for (int i = 0; i < args.length; i++) {
@@ -454,6 +460,20 @@ public class SshServer extends AbstractFactoryManager implements ServerFactoryMa
                     break;
                 }
                 port = Integer.parseInt(args[++i]);
+            } else if ("-io".equals(args[i])) {
+                if (i + 1 >= args.length) {
+                    System.err.println("option requires an argument: " + args[i]);
+                    break;
+                }
+                provider = args[++i];
+                if ("mina".equals(provider)) {
+                    System.setProperty(IoServiceFactory.class.getName(), MinaServiceFactory.class.getName());
+                } else if ("nio2".endsWith(provider)) {
+                    System.setProperty(IoServiceFactory.class.getName(), Nio2ServiceFactory.class.getName());
+                } else {
+                    System.err.println("provider should be mina or nio2: " + args[i]);
+                    break;
+                }
             } else if (args[i].startsWith("-")) {
                 System.err.println("illegal option: " + args[i]);
                 error = true;
@@ -465,7 +485,7 @@ public class SshServer extends AbstractFactoryManager implements ServerFactoryMa
             }
         }
         if (error) {
-            System.err.println("usage: sshd [-p port]");
+            System.err.println("usage: sshd [-p port] [-io mina|nio2]");
             System.exit(-1);
         }
 
@@ -514,7 +534,13 @@ public class SshServer extends AbstractFactoryManager implements ServerFactoryMa
                 return true;
             }
         });
+        sshd.setCommandFactory(new ScpCommandFactory());
+        sshd.setSubsystemFactories(Arrays.<NamedFactory<Command>>asList(
+                new SftpSubsystem.Factory()
+        ));
         sshd.start();
+
+        Thread.sleep(Long.MAX_VALUE);
     }
 
 }