You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by "Xavier Hanin (JIRA)" <ji...@apache.org> on 2007/12/07 21:05:44 UTC
[jira] Commented: (IVY-660) SFTP authorization fail during
publishing via sftp.
[ https://issues.apache.org/jira/browse/IVY-660?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12549544 ]
Xavier Hanin commented on IVY-660:
----------------------------------
Thanks for reporting the issue and providing a patch Alexey.
Could you provide the patch as file attachment with the "grant license to ASF", so that we can apply your patch with no licensing issue?
> SFTP authorization fail during publishing via sftp.
> ---------------------------------------------------
>
> Key: IVY-660
> URL: https://issues.apache.org/jira/browse/IVY-660
> Project: Ivy
> Issue Type: Bug
> Components: Core
> Affects Versions: 2.0.0-beta-1
> Environment: Developer: Windows XP, jdk1.6.0_02, ant-1.7.0, jsch-0.1.36
> SFTP Server: FreeBSD-6.2-RELEASE.
> Reporter: Alexey Kiselev
> Priority: Minor
>
> PROBLEM:
> We defined two resolvers in a settings file:
> <resolvers>
> <sftp name="remote1">
> <ivy pattern="sftp://user:password@host:12345/repository/[module]/[module]-[revision].xml"/>
> <artifact pattern="sftp://user:password@host:12345/repository/[module]/[artifact]-[revision].[ext]"/>
> </sftp>
> <sftp name="remote2" host="host" port="12345" user="user" userPassword="password">
> <ivy pattern="repository/[module]/[module]-[revision].xml"/>
> <artifact pattern="repository/[module]/[artifact]-[revision].[ext]"/>
> </sftp>
> </resolvers>
> Then we tried to publish our artifacts
> <ivy:publish resolver="remote1" pubrevision="1.2.3.4" overwrite="true" artifactspattern="${basedir}/files/[artifact].[ext]" />
> or
> <ivy:publish resolver="remote2" pubrevision="1.2.3.4" overwrite="true" artifactspattern="${basedir}/files/[artifact].[ext]" />
> As a result we had received java.io.IOException with message "Auth fail".
> SOLUTION:
> Our solution is to implement interface com.jcraft.jsch.UIKeyboardInteractive in class CfUserInfo in file SshCache.java. Patch had been attached below.
> {code}Index: SshCache.java
> ===================================================================
> --- SshCache.java (revision 601711)
> +++ SshCache.java (working copy)
> @@ -36,6 +36,7 @@
> import com.jcraft.jsch.JSchException;
> import com.jcraft.jsch.Session;
> import com.jcraft.jsch.UserInfo;
> +import com.jcraft.jsch.UIKeyboardInteractive;
>
> /**
> * a class to cache SSH Connections and Channel for the SSH Repository each session is defined by
> @@ -341,7 +342,7 @@
> /**
> * feeds in password silently into JSch
> */
> - private static class CfUserInfo implements UserInfo {
> + private static class CfUserInfo implements UserInfo, UIKeyboardInteractive {
>
> private String userPassword;
>
> @@ -404,5 +405,28 @@
> }
> return pemPassword;
> }
> + /**
> + * Implementation of UIKeyboardInteractive#promptKeyboardInteractive.
> + * @param destination not used.
> + * @param name not used.
> + * @param instruction not used.
> + * @param prompt the method checks if this is one in length.
> + * @param echo the method checks if the first element is false.
> + * @return the password in an size one array if there is a password
> + * and if the prompt and echo checks pass.
> + */
> + public String[] promptKeyboardInteractive(String destination,
> + String name,
> + String instruction,
> + String[] prompt,
> + boolean[] echo) {
> + if (prompt.length != 1 || echo[0] || this.userPassword == null) {
> + return null;
> + }
> + String[] response = new String[1];
> + response[0] = this.userPassword;
> +
> + return response;
> + }
> }
> }{code}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.