From 3ab1c45228c93f34fa0e890123a6361fbd2d855f Mon Sep 17 00:00:00 2001 From: bwcx_jzy Date: Sun, 12 Jun 2022 21:20:47 +0800 Subject: [PATCH 1/2] sftp add refactoring method --- .../java/cn/hutool/extra/ssh/JschUtil.java | 17 +++++++- .../main/java/cn/hutool/extra/ssh/Sftp.java | 41 ++++++++++++++++++- 2 files changed, 56 insertions(+), 2 deletions(-) diff --git a/hutool-extra/src/main/java/cn/hutool/extra/ssh/JschUtil.java b/hutool-extra/src/main/java/cn/hutool/extra/ssh/JschUtil.java index dfd14b087..dc71bafa0 100644 --- a/hutool-extra/src/main/java/cn/hutool/extra/ssh/JschUtil.java +++ b/hutool-extra/src/main/java/cn/hutool/extra/ssh/JschUtil.java @@ -114,9 +114,24 @@ public class JschUtil { * @return SSH会话 */ public static Session openSession(String sshHost, int sshPort, String sshUser, String privateKeyPath, byte[] passphrase) { + return openSession(sshHost, sshPort, sshUser, privateKeyPath, passphrase, 0); + } + + /** + * 打开一个新的SSH会话 + * + * @param sshHost 主机 + * @param sshPort 端口 + * @param sshUser 用户名 + * @param privateKeyPath 私钥的路径 + * @param passphrase 私钥文件的密码,可以为null + * @param timeOut 超时时间,单位毫秒 + * @return SSH会话 + */ + public static Session openSession(String sshHost, int sshPort, String sshUser, String privateKeyPath, byte[] passphrase, int timeOut) { final Session session = createSession(sshHost, sshPort, sshUser, privateKeyPath, passphrase); try { - session.connect(); + session.connect(timeOut); } catch (JSchException e) { throw new JschRuntimeException(e); } diff --git a/hutool-extra/src/main/java/cn/hutool/extra/ssh/Sftp.java b/hutool-extra/src/main/java/cn/hutool/extra/ssh/Sftp.java index e993b0824..5abd5d003 100755 --- a/hutool-extra/src/main/java/cn/hutool/extra/ssh/Sftp.java +++ b/hutool-extra/src/main/java/cn/hutool/extra/ssh/Sftp.java @@ -77,8 +77,21 @@ public class Sftp extends AbstractFtp { * @since 5.3.3 */ public Sftp(FtpConfig config) { + this(config, false); + } + + /** + * 构造 + * + * @param config FTP配置 + * @param init 是否立即初始化 + * @since 5.8.4 + */ + public Sftp(FtpConfig config, boolean init) { super(config); - init(config); + if (init) { + init(config); + } } /** @@ -102,6 +115,32 @@ public class Sftp extends AbstractFtp { init(session, charset); } + /** + * 构造 + * + * @param session {@link Session} + * @param charset 编码 + * @param timeOut 超时时间,单位毫秒 + * @since 5.8.4 + */ + public Sftp(Session session, Charset charset, long timeOut) { + super(FtpConfig.create().setCharset(charset).setConnectionTimeout(timeOut)); + init(session, charset); + } + + /** + * 构造 + * + * @param channel {@link ChannelSftp} + * @param charset 编码 + * @param timeOut 超时时间,单位毫秒 + * @since 5.8.4 + */ + public Sftp(ChannelSftp channel, Charset charset, long timeOut) { + super(FtpConfig.create().setCharset(charset).setConnectionTimeout(timeOut)); + init(channel, charset); + } + /** * 构造 * From 9031c8958e1e9556e58419808ac61470b08e35ff Mon Sep 17 00:00:00 2001 From: bwcx_jzy Date: Sun, 12 Jun 2022 21:24:31 +0800 Subject: [PATCH 2/2] sftp add refactoring method --- hutool-extra/src/main/java/cn/hutool/extra/ssh/Sftp.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hutool-extra/src/main/java/cn/hutool/extra/ssh/Sftp.java b/hutool-extra/src/main/java/cn/hutool/extra/ssh/Sftp.java index 5abd5d003..f755d17e0 100755 --- a/hutool-extra/src/main/java/cn/hutool/extra/ssh/Sftp.java +++ b/hutool-extra/src/main/java/cn/hutool/extra/ssh/Sftp.java @@ -77,7 +77,7 @@ public class Sftp extends AbstractFtp { * @since 5.3.3 */ public Sftp(FtpConfig config) { - this(config, false); + this(config, true); } /**