You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by cs...@apache.org on 2017/08/05 08:44:25 UTC
karaf git commit: Create key on demand again to see if it fixes the
itest issues
Repository: karaf
Updated Branches:
refs/heads/master d00f282b6 -> 8074e3212
Create key on demand again to see if it fixes the itest issues
Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/8074e321
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/8074e321
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/8074e321
Branch: refs/heads/master
Commit: 8074e32124a77809670f76ce0bd54222e25a163a
Parents: d00f282
Author: Christian Schneider <ch...@die-schneider.net>
Authored: Sat Aug 5 10:44:19 2017 +0200
Committer: Christian Schneider <ch...@die-schneider.net>
Committed: Sat Aug 5 10:44:19 2017 +0200
----------------------------------------------------------------------
.../apache/karaf/itests/KarafTestSupport.java | 2 +-
.../org/apache/karaf/shell/ssh/Activator.java | 26 +++-----------------
.../keygenerator/OpenSSHKeyPairProvider.java | 23 +++++++++++++++--
.../OpenSSHGeneratorKeyFileProviderTest.java | 2 +-
4 files changed, 26 insertions(+), 27 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/karaf/blob/8074e321/itests/src/test/java/org/apache/karaf/itests/KarafTestSupport.java
----------------------------------------------------------------------
diff --git a/itests/src/test/java/org/apache/karaf/itests/KarafTestSupport.java b/itests/src/test/java/org/apache/karaf/itests/KarafTestSupport.java
index 5831015..17413bd 100644
--- a/itests/src/test/java/org/apache/karaf/itests/KarafTestSupport.java
+++ b/itests/src/test/java/org/apache/karaf/itests/KarafTestSupport.java
@@ -203,7 +203,7 @@ public class KarafTestSupport {
mavenBundle().groupId("org.awaitility").artifactId("awaitility").versionAsInProject(),
mavenBundle().groupId("org.apache.servicemix.bundles").artifactId("org.apache.servicemix.bundles.hamcrest").versionAsInProject(),
replaceConfigurationFile("etc/org.ops4j.pax.logging.cfg", getConfigFile("/etc/org.ops4j.pax.logging.cfg")),
- replaceConfigurationFile("etc/host.key", getConfigFile("/etc/host.key")),
+ //replaceConfigurationFile("etc/host.key", getConfigFile("/etc/host.key")),
editConfigurationFilePut("etc/org.apache.karaf.features.cfg", "updateSnapshots", "none"),
editConfigurationFilePut("etc/org.ops4j.pax.web.cfg", "org.osgi.service.http.port", httpPort),
editConfigurationFilePut("etc/org.apache.karaf.management.cfg", "rmiRegistryPort", rmiRegistryPort),
http://git-wip-us.apache.org/repos/asf/karaf/blob/8074e321/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/Activator.java
----------------------------------------------------------------------
diff --git a/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/Activator.java b/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/Activator.java
index 584771f..0ffbbba 100644
--- a/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/Activator.java
+++ b/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/Activator.java
@@ -18,22 +18,16 @@
*/
package org.apache.karaf.shell.ssh;
-import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
-import java.security.KeyPair;
import java.util.Collections;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
import org.apache.karaf.shell.api.action.lifecycle.Manager;
import org.apache.karaf.shell.api.console.CommandLoggingFilter;
import org.apache.karaf.shell.api.console.Session;
import org.apache.karaf.shell.api.console.SessionFactory;
-import org.apache.karaf.shell.ssh.keygenerator.OpenSSHKeyPairGenerator;
import org.apache.karaf.shell.ssh.keygenerator.OpenSSHKeyPairProvider;
-import org.apache.karaf.shell.ssh.keygenerator.PemWriter;
import org.apache.karaf.shell.support.RegexCommandLoggingFilter;
import org.apache.karaf.util.tracker.BaseActivator;
import org.apache.karaf.util.tracker.annotation.Managed;
@@ -65,7 +59,6 @@ public class Activator extends BaseActivator implements ManagedService {
ServiceTracker<Session, Session> sessionTracker;
SessionFactory sessionFactory;
SshServer server;
- ExecutorService executor = Executors.newSingleThreadExecutor();
@Override
protected void doOpen() throws Exception {
@@ -113,8 +106,7 @@ public class Activator extends BaseActivator implements ManagedService {
sessionFactory = sf;
sessionFactory.getRegistry().getService(Manager.class).register(SshAction.class);
if (Boolean.parseBoolean(bundleContext.getProperty("karaf.startRemoteShell"))) {
- // Start server in background as key generation might take some time
- executor.submit(() -> createAndRunSshServer());
+ createAndRunSshServer();
}
}
@@ -165,11 +157,7 @@ public class Activator extends BaseActivator implements ManagedService {
String moduliUrl = getString("moduli-url", null);
Path serverKeyPath = Paths.get(hostKey);
- if (!serverKeyPath.toFile().exists()) {
- createServerKey(serverKeyPath.toFile(), algorithm, keySize);
- }
-
- KeyPairProvider keyPairProvider = new OpenSSHKeyPairProvider(serverKeyPath.toFile());
+ KeyPairProvider keyPairProvider = new OpenSSHKeyPairProvider(serverKeyPath.toFile(), algorithm, keySize);
KarafJaasAuthenticator authenticator = new KarafJaasAuthenticator(sshRealm);
UserAuthFactoriesFactory authFactoriesFactory = new UserAuthFactoriesFactory();
authFactoriesFactory.setAuthMethods(authMethods);
@@ -201,14 +189,6 @@ public class Activator extends BaseActivator implements ManagedService {
return server;
}
- private void createServerKey(File keyFile, String algorithm, int keySize) {
- try {
- logger.info("Creating ssh server key at " + keyFile);
- KeyPair kp = new OpenSSHKeyPairGenerator(algorithm, keySize).generate();
- new PemWriter(keyFile).writeKeyPair(algorithm, kp);
- } catch (Exception e) {
- throw new RuntimeException("Key file generation failed", e);
- }
- }
+
}
http://git-wip-us.apache.org/repos/asf/karaf/blob/8074e321/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/keygenerator/OpenSSHKeyPairProvider.java
----------------------------------------------------------------------
diff --git a/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/keygenerator/OpenSSHKeyPairProvider.java b/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/keygenerator/OpenSSHKeyPairProvider.java
index df3e025..78a458d 100644
--- a/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/keygenerator/OpenSSHKeyPairProvider.java
+++ b/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/keygenerator/OpenSSHKeyPairProvider.java
@@ -28,21 +28,31 @@ import java.security.KeyPair;
import org.apache.commons.ssl.PKCS8Key;
import org.apache.sshd.common.keyprovider.AbstractKeyPairProvider;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class OpenSSHKeyPairProvider extends AbstractKeyPairProvider {
+ private static final Logger LOGGER = LoggerFactory.getLogger(OpenSSHKeyPairProvider.class);
private File keyFile;
private String password;
private KeyPair cachedKey;
+ private String algorithm;
+ private int keySize;
- public OpenSSHKeyPairProvider(File keyFile) {
+ public OpenSSHKeyPairProvider(File keyFile, String algorithm, int keySize) {
this.keyFile = keyFile;
+ this.algorithm = algorithm;
+ this.keySize = keySize;
}
@Override
- public Iterable<KeyPair> loadKeys() {
+ public synchronized Iterable<KeyPair> loadKeys() {
if (cachedKey != null) {
return singleton(cachedKey);
}
+ if (!keyFile.exists()) {
+ createServerKey();
+ }
try (FileInputStream is = new FileInputStream(keyFile)) {
KeyPair kp = getKeyPair(is);
cachedKey = kp;
@@ -58,4 +68,13 @@ public class OpenSSHKeyPairProvider extends AbstractKeyPairProvider {
return kp;
}
+ private void createServerKey() {
+ try {
+ LOGGER.info("Creating ssh server key at " + keyFile);
+ KeyPair kp = new OpenSSHKeyPairGenerator(algorithm, keySize).generate();
+ new PemWriter(keyFile).writeKeyPair(algorithm, kp);
+ } catch (Exception e) {
+ throw new RuntimeException("Key file generation failed", e);
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/karaf/blob/8074e321/shell/ssh/src/test/java/org/apache/karaf/shell/ssh/keygenerator/OpenSSHGeneratorKeyFileProviderTest.java
----------------------------------------------------------------------
diff --git a/shell/ssh/src/test/java/org/apache/karaf/shell/ssh/keygenerator/OpenSSHGeneratorKeyFileProviderTest.java b/shell/ssh/src/test/java/org/apache/karaf/shell/ssh/keygenerator/OpenSSHGeneratorKeyFileProviderTest.java
index 891b042..ef02e98 100644
--- a/shell/ssh/src/test/java/org/apache/karaf/shell/ssh/keygenerator/OpenSSHGeneratorKeyFileProviderTest.java
+++ b/shell/ssh/src/test/java/org/apache/karaf/shell/ssh/keygenerator/OpenSSHGeneratorKeyFileProviderTest.java
@@ -37,7 +37,7 @@ public class OpenSSHGeneratorKeyFileProviderTest {
new PemWriter(temp).writeKeyPair(KeyUtils.RSA_ALGORITHM, kp);
//File path = new File("/home/cschneider/.ssh/id_rsa");
- OpenSSHKeyPairProvider prov = new OpenSSHKeyPairProvider(temp);
+ OpenSSHKeyPairProvider prov = new OpenSSHKeyPairProvider(temp, KeyUtils.RSA_ALGORITHM, 1024);
KeyPair keys = prov.loadKeys().iterator().next();
Assert.assertNotNull(keys);
Assert.assertTrue("Loaded key is not RSA Key", keys.getPrivate() instanceof RSAPrivateCrtKey);