Java Mailing List Archive

http://www.ant-tasks.com/

Home » Ant Developers List »

Re: svn commit: r644541 - in /ant/ivy/core/trunk: CHANGES.txt doc/resolver/ssh.html src/java/org/apache/ivy/plugins/repository/ssh/Scp.java src/java/org/apache/ivy/plugins/repository/ssh/SshRepository.java

Maarten Coene

2008-04-04

Replies: Find Java Web Hosting

Author LoginPost Reply
It was hardcoded to 0600 in Scp.java before I made this change. To keep it BC, I defaulted it to the same value. As far as I could see, the umask wasn't used. Since this attribute is only used for publishing modules, not for module retrieval, I think we should at least keep "publish" in the attribute name, but renaming 'mode' to 'permissions' (or something else) is fine for me.

Maarten

----- Original Message ----
From: Xavier Hanin <xavier.hanin@(protected)>
To: dev@(protected)
Sent: Friday, April 4, 2008 8:51:18 AM
Subject: Re: svn commit: r644541 - in /ant/ivy/core/trunk: CHANGES.txt doc/resolver/ssh.html src/java/org/apache/ivy/plugins/repository/ssh/Scp.java src/java/org/apache/ivy/plugins/repository/ssh/SshRepository.java

On Fri, Apr 4, 2008 at 12:49 AM, <maartenc@(protected):

> Author: maartenc
> Date: Thu Apr 3 15:49:49 2008
> New Revision: 644541
>
> URL: http://svn.apache.org/viewvc?rev=644541&view=rev
> Log:
> IMPROVEMENT: make it possible to specify permissions of published files
> for the SSH resolver (IVY-764) + removal of some unused code
>
> Modified:
>   ant/ivy/core/trunk/CHANGES.txt
>   ant/ivy/core/trunk/doc/resolver/ssh.html
>
> ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/repository/ssh/Scp.java
>
> ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/repository/ssh/SshRepository.java
>
> Modified: ant/ivy/core/trunk/CHANGES.txt
> URL:
> http://svn.apache.org/viewvc/ant/ivy/core/trunk/CHANGES.txt?rev=644541&r1=644540&r2=644541&view=diff
>
> ==============================================================================
> --- ant/ivy/core/trunk/CHANGES.txt (original)
> +++ ant/ivy/core/trunk/CHANGES.txt Thu Apr 3 15:49:49 2008
> @@(protected) @@
> - NEW: Add a new resolve mode (optionally per module) to utilize dynamic
> constraint rule metadata (IVY-740)
> - NEW: Add transitive dependency version and branch override mechanism
> (IVY-784)
>
> +- IMPROVEMENT: make it possible to specify permissions of published files
> for the SSH resolver (IVY-764)
> - IMPROVEMENT: Load Ivy version number into some Ant property (IVY-790)
> - IMPROVEMENT: Make Ivy standalone runnable with no required dependencies
> (IVY-757)
> - IMPROVEMENT: add branch attribute in ivy:install task (IVY-727)
>
> Modified: ant/ivy/core/trunk/doc/resolver/ssh.html
> URL:
> http://svn.apache.org/viewvc/ant/ivy/core/trunk/doc/resolver/ssh.html?rev=644541&r1=644540&r2=644541&view=diff
>
> ==============================================================================
> --- ant/ivy/core/trunk/doc/resolver/ssh.html (original)
> +++ ant/ivy/core/trunk/doc/resolver/ssh.html Thu Apr 3 15:49:49 2008
> @@(protected) @@
>      <td>No, defaults to host given on the patterns, fail if none is
> set</td></tr>
>   <tr><td>port</td><td>The port to connect to</td>
>      <td>No, defaults to 22</td></tr>
> +   <tr><td>publishMode</td><td>A four digit string (e.g., 0644, see "man
> chmod", "man open") specifying the permissions of the published files. <span
> class="since">(since 2.0)</span>
> +</td><td>No, defaults to 0600</td></tr>

Is it a good idea to give a default value to this attribute? This will break
BC, it used to be using the umask, right? I wonder if the default shouldn't
be "use the umask" to preserve BC. WDYT?

BTW, I don't like the name "publishMode". What do you think of "permissions"
or "umask"?

Xavier



>
> </tbody>
> </table>
> <h1>Child elements</h1>
>
> Modified:
> ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/repository/ssh/Scp.java
> URL:
> http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/repository/ssh/Scp.java?rev=644541&r1=644540&r2=644541&view=diff
>
> ==============================================================================
> ---
> ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/repository/ssh/Scp.java
> (original)
> +++
> ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/repository/ssh/Scp.java
> Thu Apr 3 15:49:49 2008
> @@(protected) @@
>      fileInfo.setLastModified(modtime);
>   }
>
> -   private void sendBytes(Channel channel, byte[] data, String fileName,
> String mode)
> -        throws IOException, RemoteScpException {
> -     OutputStream os = channel.getOutputStream();
> -     InputStream is = new BufferedInputStream(
> -        channel.getInputStream(), SEND_BYTES_BUFFER_LENGTH);
> -
> -     try {
> -        if (channel.isConnected()) {
> -           channel.start();
> -        } else {
> -           channel.connect();
> -        }
> -     } catch (JSchException e1) {
> -        throw (IOException) new IOException("Channel connection
> problems").initCause(e1);
> -     }
> -
> -     readResponse(is);
> -
> -     String cline = "C" + mode + " " + data.length + " " + fileName +
> "\n";
> -
> -     os.write(cline.getBytes());
> -     os.flush();
> -
> -     readResponse(is);
> -
> -     os.write(data, 0, data.length);
> -     os.write(0);
> -     os.flush();
> -
> -     readResponse(is);
> -
> -     os.write("E\n".getBytes());
> -     os.flush();
> -   }
> -
>   private void sendFile(Channel channel, String localFile, String
> remoteName, String mode)
>         throws IOException, RemoteScpException {
>      byte[] buffer = new byte[BUFFER_SIZE];
> @@(protected) @@
>         os.flush();
>      }
>      return fileInfo;
> -   }
> -
> -   /**
> -   * Copy a local file to a remote directory, uses mode 0600 when
> creating the file on the remote
> -   * side.
> -   *
> -   * @param localFile
> -   *        Path and name of local file.
> -   * @param remoteTargetDirectory
> -   *        Remote target directory where the file has to end up
> (optional)
> -   * @param remoteName
> -   *        target filename to use
> -   * @throws IOException
> -   *         in case of network problems
> -   * @throws RemoteScpException
> -   *         in case of problems on the target system (connection
> ok)
> -   */
> -   public void put(String localFile, String remoteTargetDirectory,
> String remoteName)
> -        throws IOException, RemoteScpException {
> -     put(localFile, remoteTargetDirectory, remoteName, "0600");
> -   }
> -
> -   /**
> -   * Create a remote file and copy the contents of the passed byte
> array into it. Uses mode 0600
> -   * for creating the remote file.
> -   *
> -   * @param data
> -   *        the data to be copied into the remote file.
> -   * @param remoteFileName
> -   *        The name of the file which will be created in the
> remote target directory.
> -   * @param remoteTargetDirectory
> -   *        Remote target directory where the file has to end up
> (optional)
> -   * @throws IOException
> -   *         in case of network problems
> -   * @throws RemoteScpException
> -   *         in case of problems on the target system (connection
> ok)
> -   */
> -
> -   public void put(byte[] data, String remoteFileName, String
> remoteTargetDirectory)
> -        throws IOException, RemoteScpException {
> -     put(data, remoteFileName, remoteTargetDirectory, "0600");
> -   }
> -
> -   /**
> -   * Create a remote file and copy the contents of the passed byte
> array into it. The method use
> -   * the specified mode when creating the file on the remote side.
> -   *
> -   * @param data
> -   *        the data to be copied into the remote file.
> -   * @param remoteFileName
> -   *        The name of the file which will be created in the
> remote target directory.
> -   * @param remoteTargetDirectory
> -   *        Remote target directory where the file has to end up
> (optional)
> -   * @param mode
> -   *        a four digit string (e.g., 0644, see "man chmod", "man
> open")
> -   * @throws IOException
> -   *         in case of network problems
> -   * @throws RemoteScpException
> -   *         in case of problems on the target system (connection
> ok)
> -   */
> -   public void put(byte[] data, String remoteFileName, String
> remoteTargetDirectory, String mode)
> -        throws IOException, RemoteScpException {
> -     ChannelExec channel = null;
> -
> -     if ((remoteFileName == null) || (mode == null)) {
> -        throw new IllegalArgumentException("Null argument.");
> -     }
> -
> -     if (mode.length() != MODE_LENGTH) {
> -        throw new IllegalArgumentException("Invalid mode.");
> -     }
> -
> -     for (int i = 0; i < mode.length(); i++) {
> -        if (!Character.isDigit(mode.charAt(i))) {
> -           throw new IllegalArgumentException("Invalid mode.");
> -        }
> -     }
> -
> -     String cmd = "scp -t ";
> -     if (remoteTargetDirectory != null &&
> remoteTargetDirectory.length() > 0) {
> -        cmd = cmd + "-d " + remoteTargetDirectory;
> -     }
> -
> -     try {
> -        channel = getExecChannel();
> -        channel.setCommand(cmd);
> -        sendBytes(channel, data, remoteFileName, mode);
> -        // channel.disconnect();
> -     } catch (JSchException e) {
> -        if (channel != null) {
> -           channel.disconnect();
> -        }
> -        throw (IOException) new IOException("Error during SCP
> transfer." + e.getMessage())
> -             .initCause(e);
> -     }
>   }
>
>   /**
>
> Modified:
> ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/repository/ssh/SshRepository.java
> URL:
> http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/repository/ssh/SshRepository.java?rev=644541&r1=644540&r2=644541&view=diff
>
> ==============================================================================
> ---
> ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/repository/ssh/SshRepository.java
> (original)
> +++
> ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/repository/ssh/SshRepository.java
> Thu Apr 3 15:49:49 2008
> @@(protected) @@
>   private String existCommand = "ls";
>
>   private String createDirCommand = "mkdir";
> +
> +   private String publishMode = "0600";
>
>   /**
>    * create a new resource with lazy initializing
> @@(protected) @@
>           makePath(path, session);
>         }
>         Scp myCopy = new Scp(session);
> -        myCopy.put(source.getCanonicalPath(), path, name);
> +        myCopy.put(source.getCanonicalPath(), path, name,
> publishMode);
>      } catch (IOException e) {
>         if (session != null) {
>           releaseSession(session, destination);
> @@(protected) @@
>    */
>   public void setFileSeparator(char fileSeparator) {
>      this.fileSeparator = fileSeparator;
> +   }
> +
> +   /**
> +   * A four digit string (e.g., 0644, see "man chmod", "man open")
> specifying the permissions
> +   * of the published files.
> +   */
> +   public void setPublishMode(String mode) {
> +     this.publishMode = mode;
>   }
>
>   /**
>
>
>


--
Xavier Hanin - Independent Java Consultant
http://xhab.blogspot.com/
http://ant.apache.org/ivy/
http://www.xoocode.org/





   ____________________________________________________________________________________
You rock. That's why Blockbuster's offering you one month of Blockbuster Total Access, No Cost.
http://tc.deals.yahoo.com/tc/blockbuster/text5.com

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@(protected)
For additional commands, e-mail: dev-help@(protected)

©2008 ant-tasks.com - Jax Systems, LLC, U.S.A.