aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/ssh/SSHBase.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/ssh/SSHBase.java')
-rw-r--r--framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/ssh/SSHBase.java236
1 files changed, 236 insertions, 0 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/ssh/SSHBase.java b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/ssh/SSHBase.java
new file mode 100644
index 00000000..68419a85
--- /dev/null
+++ b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/ssh/SSHBase.java
@@ -0,0 +1,236 @@
+/*
+ * 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.tools.ant.taskdefs.optional.ssh;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Task;
+
+import com.jcraft.jsch.JSch;
+import com.jcraft.jsch.JSchException;
+import com.jcraft.jsch.Session;
+
+/**
+ * Base class for Ant tasks using jsch.
+ *
+ * @since Ant 1.6
+ */
+public abstract class SSHBase extends Task implements LogListener {
+
+ /** Default listen port for SSH daemon */
+ private static final int SSH_PORT = 22;
+
+ private String host;
+ private String knownHosts;
+ private int port = SSH_PORT;
+ private boolean failOnError = true;
+ private boolean verbose;
+ private final SSHUserInfo userInfo;
+
+ /**
+ * Constructor for SSHBase.
+ */
+ public SSHBase() {
+ super();
+ userInfo = new SSHUserInfo();
+ }
+
+ /**
+ * Remote host, either DNS name or IP.
+ *
+ * @param host The new host value
+ */
+ public void setHost(final String host) {
+ this.host = host;
+ }
+
+ /**
+ * Get the host.
+ * @return the host
+ */
+ public String getHost() {
+ return host;
+ }
+
+ /**
+ * Set the failonerror flag.
+ * Default is true
+ * @param failure if true throw a build exception when a failure occuries,
+ * otherwise just log the failure and continue
+ */
+ public void setFailonerror(final boolean failure) {
+ failOnError = failure;
+ }
+
+ /**
+ * Get the failonerror flag.
+ * @return the failonerror flag
+ */
+ public boolean getFailonerror() {
+ return failOnError;
+ }
+
+ /**
+ * Set the verbose flag.
+ * @param verbose if true output more verbose logging
+ * @since Ant 1.6.2
+ */
+ public void setVerbose(final boolean verbose) {
+ this.verbose = verbose;
+ }
+
+ /**
+ * Get the verbose flag.
+ * @return the verbose flag
+ * @since Ant 1.6.2
+ */
+ public boolean getVerbose() {
+ return verbose;
+ }
+
+ /**
+ * Username known to remote host.
+ *
+ * @param username The new username value
+ */
+ public void setUsername(final String username) {
+ userInfo.setName(username);
+ }
+
+
+ /**
+ * Sets the password for the user.
+ *
+ * @param password The new password value
+ */
+ public void setPassword(final String password) {
+ userInfo.setPassword(password);
+ }
+
+ /**
+ * Sets the keyfile for the user.
+ *
+ * @param keyfile The new keyfile value
+ */
+ public void setKeyfile(final String keyfile) {
+ userInfo.setKeyfile(keyfile);
+ }
+
+ /**
+ * Sets the passphrase for the users key.
+ *
+ * @param passphrase The new passphrase value
+ */
+ public void setPassphrase(final String passphrase) {
+ userInfo.setPassphrase(passphrase);
+ }
+
+ /**
+ * Sets the path to the file that has the identities of
+ * all known hosts. This is used by SSH protocol to validate
+ * the identity of the host. The default is
+ * <i>${user.home}/.ssh/known_hosts</i>.
+ *
+ * @param knownHosts a path to the known hosts file.
+ */
+ public void setKnownhosts(final String knownHosts) {
+ this.knownHosts = knownHosts;
+ }
+
+ /**
+ * Setting this to true trusts hosts whose identity is unknown.
+ *
+ * @param yesOrNo if true trust the identity of unknown hosts.
+ */
+ public void setTrust(final boolean yesOrNo) {
+ userInfo.setTrust(yesOrNo);
+ }
+
+ /**
+ * Changes the port used to connect to the remote host.
+ *
+ * @param port port number of remote host.
+ */
+ public void setPort(final int port) {
+ this.port = port;
+ }
+
+ /**
+ * Get the port attribute.
+ * @return the port
+ */
+ public int getPort() {
+ return port;
+ }
+
+ /**
+ * Initialize the task.
+ * This initializizs the known hosts and sets the default port.
+ * @throws BuildException on error
+ */
+ public void init() throws BuildException {
+ super.init();
+ this.knownHosts = System.getProperty("user.home") + "/.ssh/known_hosts";
+ this.port = SSH_PORT;
+ }
+
+ /**
+ * Open an ssh session.
+ * @return the opened session
+ * @throws JSchException on error
+ */
+ protected Session openSession() throws JSchException {
+ final JSch jsch = new JSch();
+ final SSHBase base = this;
+ if (verbose) {
+ JSch.setLogger(new com.jcraft.jsch.Logger(){
+ public boolean isEnabled(final int level){
+ return true;
+ }
+ public void log(final int level, final String message){
+ base.log(message, Project.MSG_INFO);
+ }
+ });
+ }
+ if (null != userInfo.getKeyfile()) {
+ jsch.addIdentity(userInfo.getKeyfile());
+ }
+
+ if (!userInfo.getTrust() && knownHosts != null) {
+ log("Using known hosts: " + knownHosts, Project.MSG_DEBUG);
+ jsch.setKnownHosts(knownHosts);
+ }
+
+ final Session session = jsch.getSession(userInfo.getName(), host, port);
+ session.setConfig("PreferredAuthentications",
+ "publickey,keyboard-interactive,password");
+ session.setUserInfo(userInfo);
+ log("Connecting to " + host + ":" + port);
+ session.connect();
+ return session;
+ }
+
+ /**
+ * Get the user information.
+ * @return the user information
+ */
+ protected SSHUserInfo getUserInfo() {
+ return userInfo;
+ }
+}