source: other-projects/trunk/gs3-release-maker/tasks/sshtaskdef/src/org/apache/tools/ant/taskdefs/optional/SCP.java@ 14627

Last change on this file since 14627 was 14627, checked in by oranfry, 17 years ago

initial import of the gs3-release-maker

File size: 5.1 KB
Line 
1/*
2 * The Apache Software License, Version 1.1
3 *
4 * Copyright (c) 1999 The Apache Software Foundation. All rights
5 * reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 *
11 * 1. Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 *
14 * 2. Redistributions in binary form must reproduce the above copyright
15 * notice, this list of conditions and the following disclaimer in
16 * the documentation and/or other materials provided with the
17 * distribution.
18 *
19 * 3. The end-user documentation included with the redistribution, if
20 * any, must include the following acknowlegement:
21 * "This product includes software developed by the
22 * Apache Software Foundation (http://www.apache.org/)."
23 * Alternately, this acknowlegement may appear in the software itself,
24 * if and wherever such third-party acknowlegements normally appear.
25 *
26 * 4. The names "The Jakarta Project", "Ant", and "Apache Software
27 * Foundation" must not be used to endorse or promote products derived
28 * from this software without prior written permission. For written
29 * permission, please contact [email protected].
30 *
31 * 5. Products derived from this software may not be called "Apache"
32 * nor may "Apache" appear in their names without prior written
33 * permission of the Apache Group.
34 *
35 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
36 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
37 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
38 * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
39 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
40 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
41 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
42 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
43 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
44 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
45 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
46 * SUCH DAMAGE.
47 * ====================================================================
48 *
49 * This software consists of voluntary contributions made by many
50 * individuals on behalf of the Apache Software Foundation. For more
51 * information on the Apache Software Foundation, please see
52 * <http://www.apache.org/>.
53 *
54 * Task to scp files over a network. This task has the following
55 * properties which can be set:
56 * <ul>
57 * <li>host: </li>
58 * <li>username: </li>
59 * <li>password: </li>
60 * <li>destdir: </li>
61 * <li>src: </li>
62 * <li>includes: </li>
63 * <li>excludes: </li>
64 * <li>recursive: </li>
65 * </ul>
66 */
67
68package org.apache.tools.ant.taskdefs.optional;
69
70import java.io.File;
71import java.io.IOException;
72
73import java.util.*;
74
75import org.apache.tools.ant.*;
76import org.apache.tools.ant.taskdefs.*;
77import org.apache.tools.ant.types.Mapper;
78
79import mindbright.ssh.SSH;
80import mindbright.ssh.SSHSCP;
81import mindbright.ssh.SSHPasswordAuthenticator;
82
83
84/**
85 *
86 * @author Byrne Reese <a href="mailto:[email protected]">[email protected]</a>
87 * @version 1.0
88 */
89public class SCP extends MatchingTask {
90
91 private String m_host = null;
92 private String m_username = null;
93 private String m_password = null;
94 private String m_destdir = null;
95 private File m_src = null;
96 private boolean m_recursive = false;
97
98 public SCP() {
99 super();
100 }
101
102 public void setHost(String v) { m_host = v; }
103 public void setUsername(String v) { m_username = v; }
104 public void setPassword(String v) { m_password = v; }
105 public void setSrc(File v) { m_src = v; }
106 public void setRecursive(boolean v) { m_recursive = v; }
107 public void setDestdir(String v) { m_destdir = v; }
108
109 public void execute() throws BuildException {
110
111 if (m_username == null || m_password == null || m_host == null) {
112 throw new BuildException("username, password, and host attributes must be set!" );
113 }
114 if (!m_src.exists()) {
115 throw new BuildException("src " + m_src + " does not exist!" );
116 }
117 if (!m_src.isDirectory()) {
118 throw new BuildException("src " + m_src + " is not a directory!");
119 }
120
121 DirectoryScanner ds = super.getDirectoryScanner(m_src);
122 String[] files = ds.getIncludedFiles();
123
124 SSHSCP scp = null;
125 SSHPasswordAuthenticator auth = new SSHPasswordAuthenticator(m_username,m_password);
126 try {
127 scp = new SSHSCP(m_host, mindbright.ssh.SSH.DEFAULTPORT, auth,
128 new File("."),
129 m_recursive,
130 false);
131
132 log("Copying " + files.length + " file" +(files.length > 0 ? "s" : "")+" to remote host",Project.MSG_INFO);
133
134 for (int i = 0; i < files.length; i++) {
135 File srcFile = new File(m_src, files[i]);
136 scp.copyToRemote(srcFile.getAbsolutePath(),(m_destdir == null ? "." : m_destdir));
137 }
138
139 } catch (Exception e) {
140 log(""+e,Project.MSG_ERR);
141 }
142
143 }
144
145}
Note: See TracBrowser for help on using the repository browser.