Author: davsclaus
Date: Sat Feb 11 08:34:41 2012
New Revision: 1243017

URL: http://svn.apache.org/viewvc?rev=1243017&view=rev
Log:
CAMEL-4713: Added certFilename option. Thanks to Scott Cranton for the patch.

Modified:
    
camel/trunk/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/SshComponent.java
    
camel/trunk/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/SshConfiguration.java
    
camel/trunk/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/SshEndpoint.java
    
camel/trunk/components/camel-ssh/src/test/java/org/apache/camel/component/ssh/SshComponentProducerTest.java

Modified: 
camel/trunk/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/SshComponent.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/SshComponent.java?rev=1243017&r1=1243016&r2=1243017&view=diff
==============================================================================
--- 
camel/trunk/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/SshComponent.java
 (original)
+++ 
camel/trunk/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/SshComponent.java
 Sat Feb 11 08:34:41 2012
@@ -118,4 +118,12 @@ public class SshComponent extends Defaul
     public void setTimeout(long timeout) {
         getConfiguration().setTimeout(timeout);
     }
+
+    public String getCertFilename() {
+        return getConfiguration().getCertFilename();
+    }
+
+    public void setCertFilename(String certFilename) {
+        getConfiguration().setCertFilename(certFilename);
+    }
 }

Modified: 
camel/trunk/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/SshConfiguration.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/SshConfiguration.java?rev=1243017&r1=1243016&r2=1243017&view=diff
==============================================================================
--- 
camel/trunk/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/SshConfiguration.java
 (original)
+++ 
camel/trunk/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/SshConfiguration.java
 Sat Feb 11 08:34:41 2012
@@ -31,7 +31,8 @@ public class SshConfiguration implements
     private String password;
     private String pollCommand;
     private KeyPairProvider keyPairProvider;
-    private String keyType;
+    private String keyType = KeyPairProvider.SSH_RSA;
+    private String certFilename;
     private long timeout = 30000;
 
     public SshConfiguration() {
@@ -163,7 +164,7 @@ public class SshConfiguration implements
 
     /**
      * Sets the key type to pass to the KeyPairProvider as part of 
authentication.
-     * KeyPairProvider.loadKey(...) will be passed this value.
+     * KeyPairProvider.loadKey(...) will be passed this value. Defaults to 
"ssh-rsa".
      *
      * @param keyType String defining the type of KeyPair to use for 
authentication.
      *
@@ -181,9 +182,23 @@ public class SshConfiguration implements
      * Sets the timeout in milliseconds to wait in establishing the remote SSH 
server connection.
      * Defaults to 30000 milliseconds.
      *
-     * @param timeout long millisconeds to wait.
+     * @param timeout long milliseconds to wait.
      */
     public void setTimeout(long timeout) {
         this.timeout = timeout;
     }
+    
+    public String getCertFilename() {
+        return this.certFilename;
+    }
+
+    /**
+     * Sets the filename of the certificate to use for Authentication.
+     * Will use FileKeyPairProvider to resolve file based certificate, and 
depends on keyType setting.
+     *
+     * @param certFilename
+     */
+    public void setCertFilename(String certFilename) {
+        this.certFilename = certFilename;
+    }
 }

Modified: 
camel/trunk/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/SshEndpoint.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/SshEndpoint.java?rev=1243017&r1=1243016&r2=1243017&view=diff
==============================================================================
--- 
camel/trunk/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/SshEndpoint.java
 (original)
+++ 
camel/trunk/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/SshEndpoint.java
 Sat Feb 11 08:34:41 2012
@@ -32,6 +32,7 @@ import org.apache.sshd.client.future.Aut
 import org.apache.sshd.client.future.ConnectFuture;
 import org.apache.sshd.client.future.OpenFuture;
 import org.apache.sshd.common.KeyPairProvider;
+import org.apache.sshd.common.keyprovider.FileKeyPairProvider;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -97,7 +98,15 @@ public class SshEndpoint extends Schedul
         AuthFuture authResult;
         ClientSession session = connectFuture.getSession();
 
-        final KeyPairProvider keyPairProvider = getKeyPairProvider();
+        KeyPairProvider keyPairProvider;
+        final String certFilename = getCertFilename();
+        if (certFilename != null) {
+            log.debug("Attempting to authenticate using FileKey '{}'...", 
certFilename);
+            keyPairProvider = new FileKeyPairProvider(new 
String[]{certFilename});
+        } else {
+            keyPairProvider = getKeyPairProvider();
+        }
+
         if (keyPairProvider != null) {
             log.debug("Attempting to authenticate username '{}' using Key...", 
getUsername());
             KeyPair pair = keyPairProvider.loadKey(getKeyType());
@@ -224,4 +233,12 @@ public class SshEndpoint extends Schedul
     public void setTimeout(long timeout) {
         getConfiguration().setTimeout(timeout);
     }
+    
+    public String getCertFilename() {
+        return getConfiguration().getCertFilename();
+    }
+    
+    public void setCertFilename(String certFilename) {
+        getConfiguration().setCertFilename(certFilename);
+    }
 }

Modified: 
camel/trunk/components/camel-ssh/src/test/java/org/apache/camel/component/ssh/SshComponentProducerTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-ssh/src/test/java/org/apache/camel/component/ssh/SshComponentProducerTest.java?rev=1243017&r1=1243016&r2=1243017&view=diff
==============================================================================
--- 
camel/trunk/components/camel-ssh/src/test/java/org/apache/camel/component/ssh/SshComponentProducerTest.java
 (original)
+++ 
camel/trunk/components/camel-ssh/src/test/java/org/apache/camel/component/ssh/SshComponentProducerTest.java
 Sat Feb 11 08:34:41 2012
@@ -62,19 +62,6 @@ public class SshComponentProducerTest ex
     }
 
     @Test
-    public void testRsa() throws Exception {
-        final String msg = "test\n";
-
-        MockEndpoint mock = getMockEndpoint("mock:rsa");
-        mock.expectedMinimumMessageCount(1);
-        mock.expectedBodiesReceived(msg);
-
-        template.sendBody("direct:ssh-rsa", msg);
-
-        assertMockEndpointsSatisfied();
-    }
-
-    @Test
     public void testConnectionTimeout() throws Exception {
         final String msg = "test\n";
 
@@ -104,19 +91,6 @@ public class SshComponentProducerTest ex
                 from("direct:ssh")
                         .to("ssh://smx:smx@localhost:" + port + 
"?timeout=3000")
                         .to("mock:password");
-
-                SshComponent sshComponent = new SshComponent();
-                sshComponent.setHost("localhost");
-                sshComponent.setPort(port);
-                sshComponent.setUsername("smx");
-                sshComponent.setKeyPairProvider(new FileKeyPairProvider(new 
String[]{"src/test/resources/hostkey.pem"}));
-                sshComponent.setKeyType(KeyPairProvider.SSH_RSA);
-
-                getContext().addComponent("ssh-rsa", sshComponent);
-
-                from("direct:ssh-rsa")
-                        .to("ssh-rsa:test")
-                        .to("mock:rsa");
             }
         };
     }


Reply via email to