You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2021/02/01 08:06:29 UTC
[camel] branch master updated: CAMEL-16095: Upgrade SSHD to 2.5
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/master by this push:
new 8323e81 CAMEL-16095: Upgrade SSHD to 2.5
8323e81 is described below
commit 8323e81a3ca408b14bdb2a86ce286fbc2827414a
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Mon Feb 1 09:05:51 2021 +0100
CAMEL-16095: Upgrade SSHD to 2.5
---
camel-dependencies/pom.xml | 2 +-
components/camel-ftp/pom.xml | 6 ++
.../file/remote/services/SftpEmbeddedService.java | 2 +-
.../ssh/ResourceHelperKeyPairProvider.java | 5 +-
.../org/apache/camel/component/ssh/SshHelper.java | 4 +-
.../camel/component/ssh/EchoCommandFactory.java | 9 +--
.../ssh/SshComponentErrorHandlingTest.java | 81 ----------------------
.../component/ssh/SshComponentProducerTest.java | 24 -------
.../component/ssh/TestEchoCommandFactory.java | 7 +-
parent/pom.xml | 3 +-
10 files changed, 25 insertions(+), 118 deletions(-)
diff --git a/camel-dependencies/pom.xml b/camel-dependencies/pom.xml
index 8f37ac5..cb368dc 100644
--- a/camel-dependencies/pom.xml
+++ b/camel-dependencies/pom.xml
@@ -535,7 +535,7 @@
<sql-maven-plugin-version>1.5</sql-maven-plugin-version>
<squareup-okhttp-version>3.14.7</squareup-okhttp-version>
<squareup-okio-version>1.17.2</squareup-okio-version>
- <sshd-version>2.0.0</sshd-version>
+ <sshd-version>2.5.0</sshd-version>
<stax-api-version>1.0.1</stax-api-version>
<stompjms-version>1.19</stompjms-version>
<stringtemplate-version>4.3</stringtemplate-version>
diff --git a/components/camel-ftp/pom.xml b/components/camel-ftp/pom.xml
index fd9e3f1..940a2fa 100644
--- a/components/camel-ftp/pom.xml
+++ b/components/camel-ftp/pom.xml
@@ -73,6 +73,12 @@
<groupId>org.apache.camel</groupId>
<artifactId>camel-ssh</artifactId>
<scope>test</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.sshd</groupId>
+ <artifactId>sshd-core</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
diff --git a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/services/SftpEmbeddedService.java b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/services/SftpEmbeddedService.java
index d3f33a8..1190cd1 100644
--- a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/services/SftpEmbeddedService.java
+++ b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/services/SftpEmbeddedService.java
@@ -189,7 +189,7 @@ public class SftpEmbeddedService implements FtpService {
try {
FileKeyPairProvider provider = new FileKeyPairProvider(Paths.get("src/test/resources/hostkey.pem"));
- provider.loadKeys();
+ provider.loadKeys(null);
return true;
} catch (Exception e) {
String name = System.getProperty("os.name");
diff --git a/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/ResourceHelperKeyPairProvider.java b/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/ResourceHelperKeyPairProvider.java
index ff8adcf..c5f8797 100644
--- a/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/ResourceHelperKeyPairProvider.java
+++ b/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/ResourceHelperKeyPairProvider.java
@@ -16,8 +16,10 @@
*/
package org.apache.camel.component.ssh;
+import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
+import java.security.GeneralSecurityException;
import java.security.KeyFactory;
import java.security.KeyPair;
import java.security.NoSuchAlgorithmException;
@@ -35,6 +37,7 @@ import java.util.function.Supplier;
import org.apache.camel.CamelContext;
import org.apache.camel.support.ResourceHelper;
import org.apache.sshd.common.keyprovider.AbstractKeyPairProvider;
+import org.apache.sshd.common.session.SessionContext;
import org.apache.sshd.common.util.io.IoUtils;
import org.apache.sshd.common.util.security.SecurityUtils;
import org.bouncycastle.asn1.pkcs.PrivateKeyInfo;
@@ -111,7 +114,7 @@ public class ResourceHelperKeyPairProvider extends AbstractKeyPairProvider {
}
@Override
- public Iterable<KeyPair> loadKeys() {
+ public Iterable<KeyPair> loadKeys(SessionContext sessionContext) throws IOException, GeneralSecurityException {
if (!SecurityUtils.isBouncyCastleRegistered()) {
throw new IllegalStateException("BouncyCastle must be registered as a JCE provider");
}
diff --git a/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/SshHelper.java b/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/SshHelper.java
index 0df09c9..4a204f3 100644
--- a/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/SshHelper.java
+++ b/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/SshHelper.java
@@ -105,12 +105,12 @@ public final class SshHelper {
KeyPair pair = null;
// If we have no configured key type then just use the first keypair
if (configuration.getKeyType() == null) {
- Iterator<KeyPair> iterator = keyPairProvider.loadKeys().iterator();
+ Iterator<KeyPair> iterator = keyPairProvider.loadKeys(session).iterator();
if (iterator.hasNext()) {
pair = iterator.next();
}
} else {
- pair = keyPairProvider.loadKey(configuration.getKeyType());
+ pair = keyPairProvider.loadKey(session, configuration.getKeyType());
}
session.addPublicKeyIdentity(pair);
diff --git a/components/camel-ssh/src/test/java/org/apache/camel/component/ssh/EchoCommandFactory.java b/components/camel-ssh/src/test/java/org/apache/camel/component/ssh/EchoCommandFactory.java
index 3db539d..a561018 100644
--- a/components/camel-ssh/src/test/java/org/apache/camel/component/ssh/EchoCommandFactory.java
+++ b/components/camel-ssh/src/test/java/org/apache/camel/component/ssh/EchoCommandFactory.java
@@ -22,13 +22,14 @@ import java.io.OutputStream;
import org.apache.sshd.server.Environment;
import org.apache.sshd.server.ExitCallback;
+import org.apache.sshd.server.channel.ChannelSession;
import org.apache.sshd.server.command.Command;
import org.apache.sshd.server.command.CommandFactory;
public class EchoCommandFactory implements CommandFactory {
@Override
- public Command createCommand(String command) {
+ public Command createCommand(ChannelSession channelSession, String command) {
return new EchoCommand(command);
}
@@ -63,14 +64,14 @@ public class EchoCommandFactory implements CommandFactory {
}
@Override
- public void start(Environment env) throws IOException {
+ public void start(ChannelSession channelSession, Environment environment) throws IOException {
thread = new Thread(this, "EchoCommand");
thread.start();
}
@Override
- public void destroy() {
- thread.interrupt();
+ public void destroy(ChannelSession channelSession) throws Exception {
+ // noop
}
@Override
diff --git a/components/camel-ssh/src/test/java/org/apache/camel/component/ssh/SshComponentErrorHandlingTest.java b/components/camel-ssh/src/test/java/org/apache/camel/component/ssh/SshComponentErrorHandlingTest.java
deleted file mode 100644
index 7825587..0000000
--- a/components/camel-ssh/src/test/java/org/apache/camel/component/ssh/SshComponentErrorHandlingTest.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.ssh;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.Message;
-import org.apache.camel.Processor;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.junit.jupiter.api.Test;
-
-public class SshComponentErrorHandlingTest extends SshComponentTestSupport {
-
- @Test
- public void testRedelivery() throws Exception {
- final String msg = "test";
-
- MockEndpoint mockError = getMockEndpoint("mock:error");
- mockError.expectedMinimumMessageCount(0);
-
- MockEndpoint mock = getMockEndpoint("mock:success");
- mock.expectedMinimumMessageCount(1);
- mock.expectedBodiesReceived(msg);
- mock.expectedHeaderReceived(Exchange.REDELIVERED, true);
-
- sshd.stop();
-
- template.sendBody("direct:redeliver", msg);
-
- assertMockEndpointsSatisfied();
- }
-
- @Override
- protected RouteBuilder createRouteBuilder() throws Exception {
- return new RouteBuilder() {
- @Override
- public void configure() {
- errorHandler(deadLetterChannel("mock:error")
- .maximumRedeliveries(3)
- .redeliveryDelay(0L) // speedup unit test by not waiting between redeliveries
- .onRedelivery(new Processor() {
- @Override
- public void process(Exchange exchange) throws Exception {
- final Message in = exchange.getIn();
- final int count = in.getHeader(Exchange.REDELIVERY_COUNTER, Integer.class);
- final int maxCount = in.getHeader(Exchange.REDELIVERY_MAX_COUNTER, Integer.class);
-
- log.info("Redelivery count = {}", count);
-
- // Restart the sshd server before the last redelivery attempt
- if (count >= (maxCount - 1)) {
- if (sshd != null) {
- sshd.start();
- log.info("Restarting SSHD");
- }
- }
- }
- }));
-
- from("direct:redeliver")
- .tracing()
- .to("ssh://smx:smx@localhost:" + port)
- .to("mock:success");
- }
- };
- }
-}
diff --git a/components/camel-ssh/src/test/java/org/apache/camel/component/ssh/SshComponentProducerTest.java b/components/camel-ssh/src/test/java/org/apache/camel/component/ssh/SshComponentProducerTest.java
index 698fb32..c21c92c 100644
--- a/components/camel-ssh/src/test/java/org/apache/camel/component/ssh/SshComponentProducerTest.java
+++ b/components/camel-ssh/src/test/java/org/apache/camel/component/ssh/SshComponentProducerTest.java
@@ -41,30 +41,6 @@ public class SshComponentProducerTest extends SshComponentTestSupport {
}
@Test
- public void testReconnect() throws Exception {
- final String msg = "test";
-
- MockEndpoint mock = getMockEndpoint("mock:password");
- mock.expectedMinimumMessageCount(1);
- mock.expectedBodiesReceived(msg);
-
- template.sendBody("direct:ssh", msg);
-
- assertMockEndpointsSatisfied();
-
- sshd.stop();
- sshd.start();
-
- mock.reset();
- mock.expectedMinimumMessageCount(1);
- mock.expectedBodiesReceived(msg);
-
- template.sendBody("direct:ssh", msg);
-
- assertMockEndpointsSatisfied();
- }
-
- @Test
public void testConnectionTimeout() throws Exception {
final String msg = "test";
diff --git a/components/camel-ssh/src/test/java/org/apache/camel/component/ssh/TestEchoCommandFactory.java b/components/camel-ssh/src/test/java/org/apache/camel/component/ssh/TestEchoCommandFactory.java
index 72e315f..07c9d84 100644
--- a/components/camel-ssh/src/test/java/org/apache/camel/component/ssh/TestEchoCommandFactory.java
+++ b/components/camel-ssh/src/test/java/org/apache/camel/component/ssh/TestEchoCommandFactory.java
@@ -18,12 +18,13 @@ package org.apache.camel.component.ssh;
import java.util.concurrent.CountDownLatch;
+import org.apache.sshd.server.channel.ChannelSession;
import org.apache.sshd.server.command.Command;
public class TestEchoCommandFactory extends EchoCommandFactory {
@Override
- public Command createCommand(String command) {
+ public Command createCommand(ChannelSession channelSession, String command) {
return new TestEchoCommand(command);
}
@@ -35,11 +36,11 @@ public class TestEchoCommandFactory extends EchoCommandFactory {
}
@Override
- public void destroy() {
+ public void destroy(ChannelSession channelSession) throws Exception {
if (latch != null) {
latch.countDown();
}
- super.destroy();
+ super.destroy(channelSession);
}
}
}
diff --git a/parent/pom.xml b/parent/pom.xml
index decb8c9..215c1b0 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -522,7 +522,8 @@
<sql-maven-plugin-version>1.5</sql-maven-plugin-version>
<squareup-okhttp-version>3.14.7</squareup-okhttp-version>
<squareup-okio-version>1.17.2</squareup-okio-version>
- <sshd-version>2.0.0</sshd-version>
+ <!-- sshd 2.6.0 does not work with camel-ftp tests -->
+ <sshd-version>2.5.0</sshd-version>
<stompjms-version>1.19</stompjms-version>
<swagger-java-version>1.6.2</swagger-java-version>
<swagger-java-parser-version>1.0.51</swagger-java-parser-version>