Repository: mina-sshd
Updated Branches:
  refs/heads/master aa551bc0e -> 1f3006b93


Detect client/server ssh(d)_config keys related options during command line 
arguments parsing


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

Branch: refs/heads/master
Commit: 1f3006b93a06d6c76b98f95f0870029458ae8e83
Parents: aa551bc
Author: Goldstein Lyor <l...@c-b4.com>
Authored: Tue Aug 29 07:58:25 2017 +0300
Committer: Goldstein Lyor <l...@c-b4.com>
Committed: Tue Aug 29 08:02:27 2017 +0300

----------------------------------------------------------------------
 .../java/org/apache/sshd/client/SshClient.java     | 17 ++++++++++++-----
 .../java/org/apache/sshd/server/SshServer.java     | 13 ++++++++++++-
 2 files changed, 24 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/1f3006b9/sshd-core/src/main/java/org/apache/sshd/client/SshClient.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/SshClient.java 
b/sshd-core/src/main/java/org/apache/sshd/client/SshClient.java
index e4d37ab..876b2ca 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/SshClient.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/SshClient.java
@@ -865,7 +865,14 @@ public class SshClient extends AbstractFactoryManager 
implements ClientFactoryMa
                     error = showError(stderr, "bad syntax for option: " + opt);
                     break;
                 }
-                options.put(opt.substring(0, idx), opt.substring(idx + 1));
+
+                String optName = opt.substring(0, idx);
+                String optValue = opt.substring(idx + 1);
+                if (HostConfigEntry.IDENTITY_FILE_CONFIG_PROP.equals(optName)) 
{
+                    identities.add(resolveIdentityFile(optValue));
+                } else {
+                    options.put(optName, optValue);
+                }
             } else if ("-l".equals(argName)) {
                 if (login != null) {
                     error = showError(stderr, argName + " option value 
re-specified: " + port);
@@ -1030,8 +1037,8 @@ public class SshClient extends AbstractFactoryManager 
implements ClientFactoryMa
         return provider;
     }
 
-    public static UserInteraction 
setupSessionUserInteraction(ClientAuthenticationManager client,
-            final BufferedReader stdin, final PrintStream stdout, final 
PrintStream stderr) {
+    public static UserInteraction setupSessionUserInteraction(
+            ClientAuthenticationManager client, BufferedReader stdin, 
PrintStream stdout, PrintStream stderr) {
         UserInteraction ui = new UserInteraction() {
             @Override
             public boolean isInteractionAllowed(ClientSession session) {
@@ -1080,8 +1087,8 @@ public class SshClient extends AbstractFactoryManager 
implements ClientFactoryMa
         return ui;
     }
 
-    public static ServerKeyVerifier 
setupServerKeyVerifier(ClientAuthenticationManager manager, Map<String, ?> 
options,
-            final BufferedReader stdin, final PrintStream stdout, final 
PrintStream stderr) {
+    public static ServerKeyVerifier setupServerKeyVerifier(
+            ClientAuthenticationManager manager, Map<String, ?> options, 
BufferedReader stdin, PrintStream stdout, PrintStream stderr) {
         ServerKeyVerifier current = manager.getServerKeyVerifier();
         if (current == null) {
             current = ClientBuilder.DEFAULT_SERVER_KEY_VERIFIER;

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/1f3006b9/sshd-core/src/main/java/org/apache/sshd/server/SshServer.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/server/SshServer.java 
b/sshd-core/src/main/java/org/apache/sshd/server/SshServer.java
index 3e7c523..924c6ee 100644
--- a/sshd-core/src/main/java/org/apache/sshd/server/SshServer.java
+++ b/sshd-core/src/main/java/org/apache/sshd/server/SshServer.java
@@ -66,6 +66,7 @@ import 
org.apache.sshd.server.auth.password.PasswordAuthenticator;
 import org.apache.sshd.server.auth.pubkey.AcceptAllPublickeyAuthenticator;
 import org.apache.sshd.server.auth.pubkey.PublickeyAuthenticator;
 import org.apache.sshd.server.config.SshServerConfigFileReader;
+import org.apache.sshd.server.config.keys.ServerIdentity;
 import org.apache.sshd.server.forward.ForwardingFilter;
 import org.apache.sshd.server.keyprovider.AbstractGeneratorHostKeyProvider;
 import org.apache.sshd.server.keyprovider.SimpleGeneratorHostKeyProvider;
@@ -543,7 +544,17 @@ public class SshServer extends AbstractFactoryManager 
implements ServerFactoryMa
                     error = true;
                     break;
                 }
-                options.put(opt.substring(0, idx), opt.substring(idx + 1));
+
+                String optName = opt.substring(0, idx);
+                String optValue = opt.substring(idx + 1);
+                if (ServerIdentity.HOST_KEY_CONFIG_PROP.equals(optName)) {
+                    if (keyFiles == null) {
+                        keyFiles = new LinkedList<>();
+                    }
+                    keyFiles.add(optValue);
+                } else {
+                    options.put(optName, optValue);
+                }
             } else if (argName.startsWith("-")) {
                 System.err.println("illegal option: " + argName);
                 error = true;

Reply via email to