Repository: camel
Updated Branches:
  refs/heads/master 5d69fbe89 -> 7d2580b57


camel-sftp: Permanently added 'X' (RSA) to the list of known hosts.

This fixes the "Permanently added 'X' (RSA) to the list of known hosts."
warning message by using the users home.

This was fixed for ssh but not for sftp in CAMEL-8202

 * Updated sftp to use user's home .ssh/known_hosts file by default
 * 'Implemented' updateFileHeaders as log messages


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/924d3501
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/924d3501
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/924d3501

Branch: refs/heads/master
Commit: 924d3501485e9d906ae615ecf1daa884261f8b89
Parents: 5d69fbe
Author: Justin Wrobel <justin.wro...@laureate.net>
Authored: Sun May 22 21:35:02 2016 -0400
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Wed May 25 09:59:52 2016 +0200

----------------------------------------------------------------------
 .../file/remote/SftpConfiguration.java          | 11 ++++++++++
 .../component/file/remote/SftpOperations.java   |  7 +++++++
 .../file/remote/sftp/SftpServerTestSupport.java | 22 ++++++++++++++++++++
 3 files changed, 40 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/924d3501/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpConfiguration.java
----------------------------------------------------------------------
diff --git 
a/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpConfiguration.java
 
b/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpConfiguration.java
index 9da9e81..e6f785b 100644
--- 
a/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpConfiguration.java
+++ 
b/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpConfiguration.java
@@ -33,6 +33,8 @@ public class SftpConfiguration extends 
RemoteFileConfiguration {
 
     @UriParam(label = "security")
     private String knownHostsFile;
+    @UriParam(defaultValue = "true")
+    private boolean useUserKnownHostsFile = true;
     @UriParam(label = "security")
     private String knownHostsUri;
     @UriParam(label = "security")
@@ -96,6 +98,15 @@ public class SftpConfiguration extends 
RemoteFileConfiguration {
         return knownHostsUri;
     }
 
+    public boolean isUseUserKnownHostsFile() {
+        return useUserKnownHostsFile;
+    }
+
+    public void setUseUserKnownHostsFile(boolean useUserKnownHostsFile) {
+        this.useUserKnownHostsFile = useUserKnownHostsFile;
+    }
+
+
     /**
      * Sets the known_hosts file (loaded from classpath by default), so that 
the SFTP endpoint can do host key verification.
      */

http://git-wip-us.apache.org/repos/asf/camel/blob/924d3501/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpOperations.java
----------------------------------------------------------------------
diff --git 
a/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpOperations.java
 
b/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpOperations.java
index e9982a4..0673f2c 100644
--- 
a/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpOperations.java
+++ 
b/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpOperations.java
@@ -276,6 +276,13 @@ public class SftpOperations implements 
RemoteFileOperations<ChannelSftp.LsEntry>
             jsch.setKnownHosts(new 
ByteArrayInputStream(sftpConfig.getKnownHosts()));
         }
 
+        String knownHostsFile = sftpConfig.getKnownHostsFile();
+        if (knownHostsFile == null && sftpConfig.isUseUserKnownHostsFile()) {
+            knownHostsFile = System.getProperty("user.home") + 
"/.ssh/known_hosts";
+            LOG.info("Known host file not configured, using user known host 
file: " + knownHostsFile);
+        }
+        jsch.setKnownHosts(ObjectHelper.isEmpty(knownHostsFile) ? null : 
knownHostsFile);
+
         final Session session = jsch.getSession(configuration.getUsername(), 
configuration.getHost(), configuration.getPort());
 
         if (isNotEmpty(sftpConfig.getStrictHostKeyChecking())) {

http://git-wip-us.apache.org/repos/asf/camel/blob/924d3501/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/sftp/SftpServerTestSupport.java
----------------------------------------------------------------------
diff --git 
a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/sftp/SftpServerTestSupport.java
 
b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/sftp/SftpServerTestSupport.java
index 76641d5..b6c5973 100644
--- 
a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/sftp/SftpServerTestSupport.java
+++ 
b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/sftp/SftpServerTestSupport.java
@@ -16,12 +16,14 @@
  */
 package org.apache.camel.component.file.remote.sftp;
 
+import java.io.File;
 import java.security.NoSuchAlgorithmException;
 import java.security.PublicKey;
 import java.util.Arrays;
 
 import org.apache.camel.component.file.remote.BaseServerTestSupport;
 import org.apache.camel.util.ObjectHelper;
+import org.apache.commons.io.FileUtils;
 import org.apache.sshd.SshServer;
 import org.apache.sshd.common.NamedFactory;
 import org.apache.sshd.common.keyprovider.FileKeyPairProvider;
@@ -41,11 +43,25 @@ public class SftpServerTestSupport extends 
BaseServerTestSupport {
     protected static final String FTP_ROOT_DIR = "target/res/home";
     protected SshServer sshd;
     protected boolean canTest;
+    protected String oldUserHome;
 
     @Override
     @Before
     public void setUp() throws Exception {
         deleteDirectory(FTP_ROOT_DIR);
+
+        oldUserHome = System.getProperty("user.home");
+        
+        System.setProperty("user.home", "target/user-home");
+        
+        String simulatedUserHome = "target/user-home";
+        String simulatedUserSsh  = "target/user-home/.ssh";
+        deleteDirectory(simulatedUserHome);
+               createDirectory(simulatedUserHome);
+               createDirectory(simulatedUserSsh);
+               
+               
FileUtils.copyInputStreamToFile(getClass().getClassLoader().getResourceAsStream("known_hosts"),
 new File(simulatedUserSsh+"/known_hosts"));
+        
         super.setUp();
 
         setUpServer();
@@ -88,6 +104,12 @@ public class SftpServerTestSupport extends 
BaseServerTestSupport {
     @Override
     @After
     public void tearDown() throws Exception {
+        if (oldUserHome != null) {
+            System.setProperty("user.home", oldUserHome);
+        } else {
+            System.clearProperty("user.home");
+        }
+
         super.tearDown();
 
         tearDownServer();

Reply via email to