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 <claus.ib...@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>