michal 2003/06/24 15:22:55
Modified: src/plugins-build/artifact/src/main/org/apache/maven/deploy/deployers
FtpDeployer.java FileDeployer.java
HttpDeployer.java
src/plugins-build/artifact/src/main/org/apache/maven/artifact/deployer
DefaultArtifactDeployer.java
MavenDeployRequest.java
src/plugins-build/artifact/src/main/org/apache/maven/deploy
DeployRequest.java DeployTool.java
src/plugins-build/artifact project.xml
Added: src/plugins-build/artifact/src/main/org/apache/maven/deploy/deployers
SFtpDeployer.java
Removed: src/plugins-build/artifact/src/main/org/apache/maven/deploy/deployers
SshDeployer.java
Log:
Changed SCP Deployer to SFTP deployer. I am done with functionality
(except of Http Deployer)
Now I will test it deeper and assure that everything works.
Revision Changes Path
1.3 +11 -7
maven/src/plugins-build/artifact/src/main/org/apache/maven/deploy/deployers/FtpDeployer.java
Index: FtpDeployer.java
===================================================================
RCS file:
/home/cvs/maven/src/plugins-build/artifact/src/main/org/apache/maven/deploy/deployers/FtpDeployer.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- FtpDeployer.java 19 Jun 2003 22:02:36 -0000 1.2
+++ FtpDeployer.java 24 Jun 2003 22:22:54 -0000 1.3
@@ -75,15 +75,20 @@
/**
* An FTP deployer based on the FTPClient in the Commons Net package.
*
+ * Proxy server for FTPClient is not supported:
+ * [EMAIL PROTECTED] http://nagoya.apache.org/bugzilla/show_bug.cgi?id=18039}
+ *
* @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a>
- *
+ * @author <a href="[EMAIL PROTECTED]">Michal Maczka</a>
* @version $Id$
- *
- * @todo account for username and password.
+ *
+ *
*/
public class FtpDeployer extends AbstractDeployer
{
-
+
+ public final static String PROTOCOL = "ftp://";
+
/**
* Description of the Method
*/
@@ -140,8 +145,7 @@
}
__main : try
- {
- System.out.println("username: '" + username +"' password: '"+
password+"'");
+ {
if (ftp.login(username.trim(), password.trim()) == false)
{
ftp.logout();
1.4 +3 -1
maven/src/plugins-build/artifact/src/main/org/apache/maven/deploy/deployers/FileDeployer.java
Index: FileDeployer.java
===================================================================
RCS file:
/home/cvs/maven/src/plugins-build/artifact/src/main/org/apache/maven/deploy/deployers/FileDeployer.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- FileDeployer.java 20 Jun 2003 15:24:52 -0000 1.3
+++ FileDeployer.java 24 Jun 2003 22:22:54 -0000 1.4
@@ -71,6 +71,8 @@
public class FileDeployer implements Deployer
{
+ public final static String PROTOCOL = "file://";
+
/**
* @see org.apache.maven.fetch.fetchers.Fetcher#fetchUrl(java.lang.String,
java.io.OutputStream)
*/
1.2 +2 -1
maven/src/plugins-build/artifact/src/main/org/apache/maven/deploy/deployers/HttpDeployer.java
Index: HttpDeployer.java
===================================================================
RCS file:
/home/cvs/maven/src/plugins-build/artifact/src/main/org/apache/maven/deploy/deployers/HttpDeployer.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- HttpDeployer.java 17 Jun 2003 22:05:59 -0000 1.1
+++ HttpDeployer.java 24 Jun 2003 22:22:54 -0000 1.2
@@ -87,6 +87,7 @@
public class HttpDeployer extends AbstractDeployer
{
+ public final static String PROTOCOL = "http://";
/**
* Description of the Method
*/
1.1
maven/src/plugins-build/artifact/src/main/org/apache/maven/deploy/deployers/SFtpDeployer.java
Index: SFtpDeployer.java
===================================================================
package org.apache.maven.deploy.deployers;
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2001 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache MavenSession" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact [EMAIL PROTECTED]
*
* 5. Products derived from this software may not be called "Apache",
* "Apache MavenSession", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* ====================================================================
*/
import java.io.File;
import org.apache.commons.lang.StringUtils;
import org.apache.maven.deploy.DeployRequest;
import org.apache.maven.deploy.exceptions.DeployException;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Proxy;
import com.jcraft.jsch.ProxyHTTP;
import com.jcraft.jsch.ProxySOCKS5;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.SftpATTRS;
import com.jcraft.jsch.UserInfo;
/**
* An ssh2 deployer that uses the JSch library and the JCE. We will first try to
* use public keys for authentication and if that doesn't work then we fall back
* to using the login and password of the user in question. NOTE: We are
* assuming the standard port of 22.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a>
* @version $Id: SFtpDeployer.java,v 1.1 2003/06/24 22:22:54 michal Exp $
* @todo still have to account for differing setups for people deploying to
* their own sites and to the central repository.
*/
public class SFtpDeployer extends AbstractDeployer
{
public final static String PROTOCOL = "sftp://";
public final static String SFTP_CHANNEL = "sftp";
public final static int DEFAULT_SSH_PORT = 22;
public final static int SOCKS5_PROXY_PORT = 1080;
public final static int S_IFDIR = 0x4000;
/**
* @see Deployer#project
*
* @todo better way of guessing what king of proxy server is used
*/
public void deploy(DeployRequest request) throws DeployException
{
Integer groupId = null;
try
{
if (request.getGroup() != null)
{
groupId = Integer.getInteger(request.getGroup());
}
}
catch (NumberFormatException e)
{
throw new DeployException("For sftp protocol remote group should be an
integer");
}
try
{
JSch jsch = new JSch();
int port = request.getPort();
if (port == DeployRequest.UNKNOWN_PORT)
{
port = DEFAULT_SSH_PORT;
}
String host = request.getHost();
Session session = jsch.getSession(request.getUser(), host, port);
String proxyHost = request.getProxyHost();
if (proxyHost != null)
{
Proxy proxy = null;
int proxyPort = request.getProxyPort();
//if port == 1080 we will use SOCKS5 Proxy
// otherwise will use HTTP Proxy
if (proxyPort == SOCKS5_PROXY_PORT)
{
proxy = new ProxySOCKS5(proxyHost);
((ProxySOCKS5) proxy).setUserPasswd(
request.getProxyUser(),
request.getProxyPass());
}
else
{
proxy = new ProxyHTTP(proxyHost, proxyPort);
((ProxyHTTP) proxy).setUserPasswd(
request.getProxyUser(),
request.getProxyPass());
}
proxy.connect(session, host, port);
}
// Look for the private key and use it if available.
if (request.getPrivateKey() != null)
{
File privateKey = new File(request.getPrivateKey());
if (privateKey.exists())
{
System.out.println("Using private key: " + privateKey);
jsch.addIdentity(
privateKey.getAbsolutePath(),
request.getPassphrase());
}
}
// username and password will be given via UserInfo interface.
UserInfo ui = new MavenUserInfo(request);
session.setUserInfo(ui);
session.connect();
ChannelSftp channel =
(ChannelSftp) session.openChannel(SFTP_CHANNEL);
channel.connect();
// iterate over all directories in the path. try to create
// directory
String[] dirs = StringUtils.split(request.getOutputDir(), "/");
for (int i = 0; i < dirs.length; i++)
{
System.out.println("processing: " + dirs[i]);
try
{
SftpATTRS attrs = channel.stat(dirs[i]);
if ((attrs.getPermissions() & S_IFDIR) != 0)
{
// file exists and is dierctory
channel.cd(dirs[i]);
}
else
{
throw new DeployException(
"Remote path:"
+ request.getOutputDir()
+ "is not correct");
}
}
catch (Exception e)
{
// file does not exists
channel.mkdir(dirs[i]);
channel.cd(dirs[i]);
}
}
channel.put(request.getInputFile(), request.getOutputFile());
if (groupId != null)
{
channel.chgrp(groupId.intValue(), request.getOutputFile());
}
}
catch (Exception e)
{
e.printStackTrace();
throw new DeployException(
"Cannot deploy. Reason: " + e.getMessage(),
e);
}
}
/**
* MavenUserInfo class which returns the necessary name and password from
* the POM to secure an ssh connection.
*/
public class MavenUserInfo implements UserInfo
{
DeployRequest request;
MavenUserInfo(DeployRequest request)
{
this.request = request;
}
public String getPassphrase()
{
return request.getPassphrase();
}
/* (non-Javadoc)
* @see com.jcraft.jsch.UserInfo#getPassword()
*/
public String getPassword()
{
return request.getPass();
}
/* (non-Javadoc)
* @see com.jcraft.jsch.UserInfo#promptPassphrase(java.lang.String)
*/
public boolean promptPassphrase(String arg0)
{
return true;
}
/* (non-Javadoc)
* @see com.jcraft.jsch.UserInfo#promptPassword(java.lang.String)
*/
public boolean promptPassword(String arg0)
{
return true;
}
/**
* @see com.jcraft.jsch.UserInfo#promptYesNo(java.lang.String)
*/
public boolean promptYesNo(String arg0)
{
return true;
}
/* (non-Javadoc)
* @see com.jcraft.jsch.UserInfo#showMessage(java.lang.String)
*/
public void showMessage(String message)
{
System.out.println(message);
}
}
}
1.8 +2 -2
maven/src/plugins-build/artifact/src/main/org/apache/maven/artifact/deployer/DefaultArtifactDeployer.java
Index: DefaultArtifactDeployer.java
===================================================================
RCS file:
/home/cvs/maven/src/plugins-build/artifact/src/main/org/apache/maven/artifact/deployer/DefaultArtifactDeployer.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- DefaultArtifactDeployer.java 24 Jun 2003 16:20:51 -0000 1.7
+++ DefaultArtifactDeployer.java 24 Jun 2003 22:22:55 -0000 1.8
@@ -214,7 +214,7 @@
{
destFile.mkdirs();
}
- destFile = new File(file, getRepositoryFile(type, project, version));
+ destFile = new File(destFile, getRepositoryFile(type, project,
version));
System.out.println(
"Copying: from '" + file + "' to: '" + destFile + "'");
FileUtils.copyFile(file, destFile);
1.5 +3 -4
maven/src/plugins-build/artifact/src/main/org/apache/maven/artifact/deployer/MavenDeployRequest.java
Index: MavenDeployRequest.java
===================================================================
RCS file:
/home/cvs/maven/src/plugins-build/artifact/src/main/org/apache/maven/artifact/deployer/MavenDeployRequest.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- MavenDeployRequest.java 20 Jun 2003 15:24:52 -0000 1.4
+++ MavenDeployRequest.java 24 Jun 2003 22:22:55 -0000 1.5
@@ -95,8 +95,7 @@
String username =
(String) project.getContext().getVariable(
"maven.repo." + repository + ".username");
-
- System.out.println(repository + " username:" + username);
+
String password =
(String) project.getContext().getVariable(
"maven.repo." + repository + ".password");
@@ -141,7 +140,7 @@
setUser(username);
setPass(password);
setPassphrase(passphrase);
- setPrivateKey(url.trim());
+ setPrivateKey(privateKey);
setGroup(remoteGroup);
setUrl(url.trim());
1.3 +2 -2
maven/src/plugins-build/artifact/src/main/org/apache/maven/deploy/DeployRequest.java
Index: DeployRequest.java
===================================================================
RCS file:
/home/cvs/maven/src/plugins-build/artifact/src/main/org/apache/maven/deploy/DeployRequest.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- DeployRequest.java 19 Jun 2003 22:02:37 -0000 1.2
+++ DeployRequest.java 24 Jun 2003 22:22:55 -0000 1.3
@@ -63,7 +63,7 @@
*/
public class DeployRequest
{
-
+
public final static int UNKNOWN_PORT = -1;
1.3 +8 -10
maven/src/plugins-build/artifact/src/main/org/apache/maven/deploy/DeployTool.java
Index: DeployTool.java
===================================================================
RCS file:
/home/cvs/maven/src/plugins-build/artifact/src/main/org/apache/maven/deploy/DeployTool.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- DeployTool.java 19 Jun 2003 22:02:37 -0000 1.2
+++ DeployTool.java 24 Jun 2003 22:22:55 -0000 1.3
@@ -60,7 +60,7 @@
import org.apache.maven.deploy.deployers.FileDeployer;
import org.apache.maven.deploy.deployers.FtpDeployer;
import org.apache.maven.deploy.deployers.HttpDeployer;
-import org.apache.maven.deploy.deployers.SshDeployer;
+import org.apache.maven.deploy.deployers.SFtpDeployer;
import org.apache.maven.deploy.exceptions.DeployException;
import org.apache.maven.deploy.exceptions.UnsupportedProtocolDeployException;
@@ -75,7 +75,6 @@
public void performUpload(DeployRequest request) throws DeployException
{
-
String url = request.getUrl();
Deployer deployer = null;
@@ -85,22 +84,21 @@
"No URL provided for repsoitory: "
+ request.getRepositoryAlias());
}
- if (url.startsWith("http://"))
+ if (url.startsWith(HttpDeployer.PROTOCOL))
{
deployer = new HttpDeployer();
}
-
- if (url.startsWith("file://"))
+ if (url.startsWith(FileDeployer.PROTOCOL))
{
deployer = new FileDeployer();
}
- if (url.startsWith("ssh://"))
+ if (url.startsWith(FtpDeployer.PROTOCOL))
{
- deployer = new SshDeployer();
+ deployer = new FtpDeployer();
}
- if (url.startsWith("ftp://"))
+ if (url.startsWith(SFtpDeployer.PROTOCOL))
{
- deployer = new FtpDeployer();
+ deployer = new SFtpDeployer();
}
if (deployer == null)
{
1.3 +1 -1 maven/src/plugins-build/artifact/project.xml
Index: project.xml
===================================================================
RCS file: /home/cvs/maven/src/plugins-build/artifact/project.xml,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- project.xml 17 Jun 2003 22:06:01 -0000 1.2
+++ project.xml 24 Jun 2003 22:22:55 -0000 1.3
@@ -59,7 +59,7 @@
<dependency>
<groupId>jsch</groupId>
<artifactId>jsch</artifactId>
- <version>0.0.9</version>
+ <version>0.1.5</version>
<type>jar</type>
</dependency>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]