You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by lg...@apache.org on 2019/04/30 04:09:53 UTC
[mina-sshd] branch master updated: Added selection of I/O service
factory via command line argument to SshKeyScanMain and SshFsMounter
This is an automated email from the ASF dual-hosted git repository.
lgoldstein pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mina-sshd.git
The following commit(s) were added to refs/heads/master by this push:
new 33885a9 Added selection of I/O service factory via command line argument to SshKeyScanMain and SshFsMounter
33885a9 is described below
commit 33885a9ad50465467ad95027a20f1f670c068e20
Author: Lyor Goldstein <lg...@apache.org>
AuthorDate: Sun Apr 28 16:17:19 2019 +0300
Added selection of I/O service factory via command line argument to SshKeyScanMain and SshFsMounter
---
.../main/java/org/apache/sshd/cli/CliSupport.java | 13 +++++++++++--
.../org/apache/sshd/cli/client/SshKeyScanMain.java | 22 ++++++++++++++++++++--
.../org/apache/sshd/cli/server/SshFsMounter.java | 12 ++++++------
3 files changed, 37 insertions(+), 10 deletions(-)
diff --git a/sshd-cli/src/main/java/org/apache/sshd/cli/CliSupport.java b/sshd-cli/src/main/java/org/apache/sshd/cli/CliSupport.java
index 70d107e..783c219 100644
--- a/sshd-cli/src/main/java/org/apache/sshd/cli/CliSupport.java
+++ b/sshd-cli/src/main/java/org/apache/sshd/cli/CliSupport.java
@@ -93,9 +93,8 @@ public abstract class CliSupport {
}
String provider = args[index];
- factory = BuiltinIoServiceFactoryFactories.fromFactoryName(provider);
+ factory = resolveBuiltinIoServiceFactory(stderr, argName, provider);
if (factory == null) {
- System.err.println("provider (" + argName + ") should be one of " + BuiltinIoServiceFactoryFactories.VALUES);
return null;
}
}
@@ -108,6 +107,16 @@ public abstract class CliSupport {
return factory;
}
+ public static BuiltinIoServiceFactoryFactories resolveBuiltinIoServiceFactory(
+ PrintStream stderr, String argName, String provider) {
+ BuiltinIoServiceFactoryFactories factory = BuiltinIoServiceFactoryFactories.fromFactoryName(provider);
+ if (factory == null) {
+ System.err.println(argName + " - unknown provider (" + provider + ")"
+ + " should be one of " + BuiltinIoServiceFactoryFactories.VALUES);
+ }
+ return factory;
+ }
+
public static <M extends AbstractFactoryManager> M setupIoServiceFactory(
M manager, PropertyResolver resolver, Level level,
PrintStream stdout, PrintStream stderr, String... args) {
diff --git a/sshd-cli/src/main/java/org/apache/sshd/cli/client/SshKeyScanMain.java b/sshd-cli/src/main/java/org/apache/sshd/cli/client/SshKeyScanMain.java
index 9619499..924ad60 100644
--- a/sshd-cli/src/main/java/org/apache/sshd/cli/client/SshKeyScanMain.java
+++ b/sshd-cli/src/main/java/org/apache/sshd/cli/client/SshKeyScanMain.java
@@ -56,6 +56,7 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.logging.Level;
+import org.apache.sshd.cli.CliSupport;
import org.apache.sshd.client.SshClient;
import org.apache.sshd.client.auth.keyboard.UserInteraction;
import org.apache.sshd.client.future.ConnectFuture;
@@ -67,6 +68,8 @@ import org.apache.sshd.common.cipher.ECCurves;
import org.apache.sshd.common.config.keys.BuiltinIdentities;
import org.apache.sshd.common.config.keys.KeyUtils;
import org.apache.sshd.common.config.keys.PublicKeyEntry;
+import org.apache.sshd.common.io.BuiltinIoServiceFactoryFactories;
+import org.apache.sshd.common.io.IoServiceFactory;
import org.apache.sshd.common.io.IoSession;
import org.apache.sshd.common.kex.KexProposalOption;
import org.apache.sshd.common.keyprovider.KeyPairProvider;
@@ -216,7 +219,8 @@ public class SshKeyScanMain implements Channel, Callable<Void>, ServerKeyVerifie
}
@Override
- public String[] interactive(ClientSession session, String name, String instruction, String lang, String[] prompt, boolean[] echo) {
+ public String[] interactive(
+ ClientSession session, String name, String instruction, String lang, String[] prompt, boolean[] echo) {
return null;
}
@@ -294,7 +298,7 @@ public class SshKeyScanMain implements Channel, Callable<Void>, ServerKeyVerifie
protected void resolveServerKeys(SshClient client, String host,
Map<String, List<KeyPair>> pairsMap, Map<String, List<NamedFactory<Signature>>> sigFactories)
- throws IOException {
+ throws IOException {
// Cannot use forEach because of the potential for throwing IOException by the invoked code
for (Map.Entry<String, List<KeyPair>> pe : pairsMap.entrySet()) {
String kt = pe.getKey();
@@ -667,6 +671,20 @@ public class SshKeyScanMain implements Channel, Callable<Void>, ServerKeyVerifie
} else if ("-v".equals(optName)) {
ValidateUtils.checkTrue(scanner.getLogLevel() == null, "%s option re-specified", optName);
scanner.setLogLevel(Level.FINEST);
+ } else if ("-io".equals(optName)) {
+ if ((index + 1) >= numArgs) {
+ System.err.println("option requires an argument: " + optName);
+ break;
+ }
+
+ String provider = args[++index];
+ BuiltinIoServiceFactoryFactories factory =
+ CliSupport.resolveBuiltinIoServiceFactory(System.err, optName, provider);
+ if (factory != null) {
+ System.setProperty(IoServiceFactory.class.getName(), factory.getFactoryClassName());
+ } else {
+ break;
+ }
} else { // stop at first non-option - assume the rest are host names/addresses
ValidateUtils.checkTrue(optName.charAt(0) != '-', "Unknown option: %s", optName);
diff --git a/sshd-cli/src/test/java/org/apache/sshd/cli/server/SshFsMounter.java b/sshd-cli/src/test/java/org/apache/sshd/cli/server/SshFsMounter.java
index 6e072be..a7ddba3 100644
--- a/sshd-cli/src/test/java/org/apache/sshd/cli/server/SshFsMounter.java
+++ b/sshd-cli/src/test/java/org/apache/sshd/cli/server/SshFsMounter.java
@@ -33,6 +33,7 @@ import java.util.TreeMap;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future;
+import org.apache.sshd.cli.CliSupport;
import org.apache.sshd.common.PropertyResolver;
import org.apache.sshd.common.PropertyResolverUtils;
import org.apache.sshd.common.SshConstants;
@@ -263,18 +264,17 @@ public final class SshFsMounter extends SshServerCliSupport {
}
port = Integer.parseInt(args[++i]);
} else if ("-io".equals(argName)) {
- if (i + 1 >= numArgs) {
+ if ((i + 1) >= numArgs) {
System.err.println("option requires an argument: " + argName);
break;
}
String provider = args[++i];
- if ("mina".equals(provider)) {
- System.setProperty(IoServiceFactory.class.getName(), BuiltinIoServiceFactoryFactories.MINA.getFactoryClassName());
- } else if ("nio2".endsWith(provider)) {
- System.setProperty(IoServiceFactory.class.getName(), BuiltinIoServiceFactoryFactories.NIO2.getFactoryClassName());
+ BuiltinIoServiceFactoryFactories factory =
+ CliSupport.resolveBuiltinIoServiceFactory(System.err, argName, provider);
+ if (factory != null) {
+ System.setProperty(IoServiceFactory.class.getName(), factory.getFactoryClassName());
} else {
- System.err.println("provider should be mina or nio2: " + argName);
error = true;
break;
}