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 2014/12/12 14:18:11 UTC

[2/6] mina-sshd git commit: [SSHD-382] Add support for custom properties on the command line for client and server

[SSHD-382] Add support for custom properties on the command line for client and server

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

Branch: refs/heads/master
Commit: 71ad6a07607ce1178ef913b3d3f3040114603617
Parents: 24a5f7d
Author: Guillaume Nodet <gn...@apache.org>
Authored: Fri Dec 12 10:48:27 2014 +0100
Committer: Guillaume Nodet <gn...@apache.org>
Committed: Fri Dec 12 10:48:27 2014 +0100

----------------------------------------------------------------------
 .../main/java/org/apache/sshd/SshClient.java    | 20 +++++++++++++++++++-
 .../main/java/org/apache/sshd/SshServer.java    | 20 +++++++++++++++++++-
 2 files changed, 38 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/71ad6a07/sshd-core/src/main/java/org/apache/sshd/SshClient.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/SshClient.java b/sshd-core/src/main/java/org/apache/sshd/SshClient.java
index 461b8ca..ef34288 100644
--- a/sshd-core/src/main/java/org/apache/sshd/SshClient.java
+++ b/sshd-core/src/main/java/org/apache/sshd/SshClient.java
@@ -33,7 +33,9 @@ import java.net.SocketAddress;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Date;
+import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.concurrent.Callable;
 import java.util.logging.ConsoleHandler;
 import java.util.logging.Formatter;
@@ -374,6 +376,7 @@ public class SshClient extends AbstractFactoryManager implements ClientFactoryMa
         int socksPort = -1;
         boolean error = false;
         List<String> identities = new ArrayList<String>();
+        Map<String, String> options = new LinkedHashMap<String, String>();
 
         for (int i = 0; i < args.length; i++) {
             if (command == null && "-p".equals(args[i])) {
@@ -414,6 +417,20 @@ public class SshClient extends AbstractFactoryManager implements ClientFactoryMa
                     break;
                 }
                 identities.add(args[++i]);
+            } else if (command == null && "-o".equals(args[i])) {
+                if (i + 1 >= args.length) {
+                    System.err.println("option requires and argument: " + args[i]);
+                    error = true;
+                    break;
+                }
+                String opt = args[++i];
+                int idx = opt.indexOf('=');
+                if (idx <= 0) {
+                    System.err.println("bad syntax for option: " + opt);
+                    error = true;
+                    break;
+                }
+                options.put(opt.substring(0, idx), opt.substring(idx + 1));
             } else if (command == null && args[i].startsWith("-")) {
                 System.err.println("illegal option: " + args[i]);
                 error = true;
@@ -434,7 +451,7 @@ public class SshClient extends AbstractFactoryManager implements ClientFactoryMa
             error = true;
         }
         if (error) {
-            System.err.println("usage: ssh [-A|-a] [-v[v][v]] [-D socksPort] [-l login] [-p port] hostname [command]");
+            System.err.println("usage: ssh [-A|-a] [-v[v][v]] [-D socksPort] [-l login] [-p port] [-o option=value] hostname [command]");
             System.exit(-1);
         }
         if (logLevel <= 0) {
@@ -486,6 +503,7 @@ public class SshClient extends AbstractFactoryManager implements ClientFactoryMa
         }
 
         SshClient client = SshClient.setUpDefaultClient();
+        client.getProperties().putAll(options);
         client.start();
         client.setKeyPairProvider(provider);
         client.setUserInteraction(new UserInteraction() {

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/71ad6a07/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 2424df4..d29ef9e 100644
--- a/sshd-core/src/main/java/org/apache/sshd/SshServer.java
+++ b/sshd-core/src/main/java/org/apache/sshd/SshServer.java
@@ -25,7 +25,9 @@ import java.security.PublicKey;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.EnumSet;
+import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.Map;
 
 import org.apache.sshd.common.AbstractFactoryManager;
 import org.apache.sshd.common.Closeable;
@@ -372,6 +374,7 @@ public class SshServer extends AbstractFactoryManager implements ServerFactoryMa
         int port = 8000;
         String provider;
         boolean error = false;
+        Map<String, String> options = new LinkedHashMap<String, String>();
 
         for (int i = 0; i < args.length; i++) {
             if ("-p".equals(args[i])) {
@@ -394,6 +397,20 @@ public class SshServer extends AbstractFactoryManager implements ServerFactoryMa
                     System.err.println("provider should be mina or nio2: " + args[i]);
                     break;
                 }
+            } else if ("-o".equals(args[i])) {
+                if (i + 1 >= args.length) {
+                    System.err.println("option requires and argument: " + args[i]);
+                    error = true;
+                    break;
+                }
+                String opt = args[++i];
+                int idx = opt.indexOf('=');
+                if (idx <= 0) {
+                    System.err.println("bad syntax for option: " + opt);
+                    error = true;
+                    break;
+                }
+                options.put(opt.substring(0, idx), opt.substring(idx + 1));
             } else if (args[i].startsWith("-")) {
                 System.err.println("illegal option: " + args[i]);
                 error = true;
@@ -405,13 +422,14 @@ public class SshServer extends AbstractFactoryManager implements ServerFactoryMa
             }
         }
         if (error) {
-            System.err.println("usage: sshd [-p port] [-io mina|nio2]");
+            System.err.println("usage: sshd [-p port] [-io mina|nio2] [-o option=value]");
             System.exit(-1);
         }
 
         System.err.println("Starting SSHD on port " + port);
                                                     
         SshServer sshd = SshServer.setUpDefaultServer();
+        sshd.getProperties().putAll(options);
         sshd.setPort(port);
         sshd.getProperties().put(SshServer.WELCOME_BANNER, "Welcome to SSHD\n");
         if (SecurityUtils.isBouncyCastleRegistered()) {