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");
}
};
}