diff --git a/o2server/x_base_core_project/src/main/java/com/x/base/core/entity/StorageObject.java b/o2server/x_base_core_project/src/main/java/com/x/base/core/entity/StorageObject.java index 38912c18f29f0f2c05576ba34bc7f2f31da23b33..15b5c6c45be0fae34b0d15a9f2508f373929703d 100644 --- a/o2server/x_base_core_project/src/main/java/com/x/base/core/entity/StorageObject.java +++ b/o2server/x_base_core_project/src/main/java/com/x/base/core/entity/StorageObject.java @@ -1,35 +1,27 @@ package com.x.base.core.entity; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.FileNotFoundException; -import java.io.InputStream; -import java.io.OutputStream; -import java.io.UnsupportedEncodingException; -import java.net.URLEncoder; -import java.util.Date; -import java.util.Objects; - -import javax.persistence.MappedSuperclass; -import javax.persistence.Transient; - +import com.x.base.core.project.config.StorageMapping; +import com.x.base.core.project.tools.DefaultCharset; import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; -import org.apache.commons.vfs2.CacheStrategy; -import org.apache.commons.vfs2.FileObject; -import org.apache.commons.vfs2.FileSystemException; -import org.apache.commons.vfs2.FileSystemManager; -import org.apache.commons.vfs2.FileSystemOptions; +import org.apache.commons.vfs2.*; import org.apache.commons.vfs2.cache.NullFilesCache; import org.apache.commons.vfs2.impl.StandardFileSystemManager; import org.apache.commons.vfs2.provider.ftp.FtpFileSystemConfigBuilder; import org.apache.commons.vfs2.provider.ftp.FtpFileType; import org.apache.commons.vfs2.provider.ftps.FtpsFileSystemConfigBuilder; +import org.apache.commons.vfs2.provider.sftp.SftpFileSystemConfigBuilder; import org.apache.commons.vfs2.provider.webdav4.Webdav4FileSystemConfigBuilder; -import com.x.base.core.project.config.StorageMapping; -import com.x.base.core.project.tools.DefaultCharset; +import javax.persistence.MappedSuperclass; +import javax.persistence.Transient; +import java.io.FileNotFoundException; +import java.io.*; +import java.net.URLEncoder; +import java.time.Duration; +import java.util.Date; +import java.util.Objects; @MappedSuperclass public abstract class StorageObject extends SliceJpaObject { @@ -165,7 +157,7 @@ public abstract class StorageObject extends SliceJpaObject { /** * 读出内容 - * + * * @param mapping * @return * @throws Exception @@ -179,7 +171,7 @@ public abstract class StorageObject extends SliceJpaObject { /** * 将内容流出到output - * + * * @param mapping * @param output * @return @@ -195,7 +187,7 @@ public abstract class StorageObject extends SliceJpaObject { /** * 检查是否存在内容 - * + * * @param mapping * @return * @throws Exception @@ -218,7 +210,7 @@ public abstract class StorageObject extends SliceJpaObject { /** * 取得完整访问路径的前半部分 - * + * * @param mapping * @return * @throws IllegalStateException @@ -290,16 +282,13 @@ public abstract class StorageObject extends SliceJpaObject { } switch (mapping.getProtocol()) { case sftp: - FtpFileSystemConfigBuilder sftpBuilder = FtpFileSystemConfigBuilder.getInstance(); - sftpBuilder.setPassiveMode(opts, true); - // 强制不校验IP - sftpBuilder.setRemoteVerification(opts, false); - sftpBuilder.setFileType(opts, FtpFileType.BINARY); - sftpBuilder.setConnectTimeout(opts, 10 * 1000); - sftpBuilder.setSoTimeout(opts, 10 * 1000); - sftpBuilder.setControlEncoding(opts, DefaultCharset.name); + SftpFileSystemConfigBuilder sftpBuilder = SftpFileSystemConfigBuilder.getInstance(); + sftpBuilder.setConnectTimeout(opts, Duration.ofMillis(10 * 1000)); + sftpBuilder.setSessionTimeout(opts, Duration.ofMillis(30 * 1000)); + sftpBuilder.setFileNameEncoding(opts, DefaultCharset.name); // By default, the path is relative to the user's home directory. This can be // changed with: + sftpBuilder.setStrictHostKeyChecking(opts, "no"); sftpBuilder.setUserDirIsRoot(opts, false); break; case ftp: @@ -320,8 +309,8 @@ public abstract class StorageObject extends SliceJpaObject { ftpBuilder.setRemoteVerification(opts, false); // FtpFileType.BINARY is the default ftpBuilder.setFileType(opts, FtpFileType.BINARY); - ftpBuilder.setConnectTimeout(opts, 10 * 1000); - ftpBuilder.setSoTimeout(opts, 10 * 1000); + ftpBuilder.setConnectTimeout(opts, Duration.ofMillis(10 * 1000)); + ftpBuilder.setSoTimeout(opts, Duration.ofMillis(10 * 1000)); ftpBuilder.setControlEncoding(opts, DefaultCharset.name); break; case ftps: @@ -331,16 +320,16 @@ public abstract class StorageObject extends SliceJpaObject { ftpsBuilder.setRemoteVerification(opts, false); // FtpFileType.BINARY is the default ftpsBuilder.setFileType(opts, FtpFileType.BINARY); - ftpsBuilder.setConnectTimeout(opts, 10 * 1000); - ftpsBuilder.setSoTimeout(opts, 10 * 1000); + ftpsBuilder.setConnectTimeout(opts, Duration.ofMillis(10 * 1000)); + ftpsBuilder.setSoTimeout(opts, Duration.ofMillis(10 * 1000)); ftpsBuilder.setControlEncoding(opts, DefaultCharset.name); break; case cifs: break; case webdav: Webdav4FileSystemConfigBuilder webdavBuilder = Webdav4FileSystemConfigBuilder.getInstance(); - webdavBuilder.setConnectionTimeout(opts, 10 * 1000); - webdavBuilder.setSoTimeout(opts, 10 * 1000); + webdavBuilder.setConnectionTimeout(opts, Duration.ofMillis(10 * 1000)); + webdavBuilder.setSoTimeout(opts, Duration.ofMillis(10 * 1000)); webdavBuilder.setUrlCharset(opts, DefaultCharset.name); webdavBuilder.setMaxConnectionsPerHost(opts, 200); webdavBuilder.setMaxTotalConnections(opts, 200); @@ -395,7 +384,7 @@ public abstract class StorageObject extends SliceJpaObject { /** * vfs读取数据 - * + * * @param mapping * @param output * @return @@ -437,7 +426,7 @@ public abstract class StorageObject extends SliceJpaObject { /** * 删除内容,同时判断上一级目录(只判断一级)是否为空,为空则删除上一级目录 - * + * * @param mapping * @throws Exception */