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 2011/10/05 08:29:55 UTC

svn commit: r1179060 - /camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpOperations.java

Author: davsclaus
Date: Wed Oct  5 06:29:55 2011
New Revision: 1179060

URL: http://svn.apache.org/viewvc?rev=1179060&view=rev
Log:
CAMEL-4506: sftp component supports interactive keyboard mode by returning the password. Thanks to Eugene for the patch.

Modified:
    camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpOperations.java

Modified: camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpOperations.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpOperations.java?rev=1179060&r1=1179059&r2=1179060&view=diff
==============================================================================
--- camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpOperations.java (original)
+++ camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpOperations.java Wed Oct  5 06:29:55 2011
@@ -32,6 +32,7 @@ import com.jcraft.jsch.JSch;
 import com.jcraft.jsch.JSchException;
 import com.jcraft.jsch.Session;
 import com.jcraft.jsch.SftpException;
+import com.jcraft.jsch.UIKeyboardInteractive;
 import com.jcraft.jsch.UserInfo;
 import org.apache.camel.Exchange;
 import org.apache.camel.InvalidPayloadException;
@@ -58,6 +59,12 @@ public class SftpOperations implements R
     private ChannelSftp channel;
     private Session session;
 
+    /**
+     * Extended user info which supports interactive keyboard mode, by entering the password.
+     */
+    public static interface ExtendedUserInfo extends UserInfo, UIKeyboardInteractive {
+    }
+
     public void setEndpoint(GenericFileEndpoint endpoint) {
         this.endpoint = (SftpEndpoint) endpoint;
     }
@@ -173,7 +180,7 @@ public class SftpOperations implements R
         session.setServerAliveCountMax(sftpConfig.getServerAliveCountMax());
 
         // set user information
-        session.setUserInfo(new UserInfo() {
+        session.setUserInfo(new ExtendedUserInfo() {
             public String getPassphrase() {
                 return null;
             }
@@ -199,6 +206,12 @@ public class SftpOperations implements R
             public void showMessage(String s) {
                 LOG.trace("Message received from Server: " + s);
             }
+
+            public String[] promptKeyboardInteractive(String destination, String name,
+                                                      String instruction, String[] prompt, boolean[] echo) {
+                return new String[]{configuration.getPassword()};
+            }
+
         });
         return session;
     }