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>