From 471acfdf007c412b17d2e4c36502d16e2c0ad03f Mon Sep 17 00:00:00 2001 From: lijiahangmax Date: Sun, 4 Aug 2024 17:01:44 +0800 Subject: [PATCH] =?UTF-8?q?:zap:=20=E4=BC=98=E5=8C=96=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E8=81=9A=E7=84=A6=E9=80=BB=E8=BE=91.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../framework/common/constant/ErrorMessage.java | 2 ++ .../host/terminal/enums/InputTypeEnum.java | 4 ++-- ...ModHandler.java => SftpChangeModeHandler.java} | 12 ++++++------ ...ModRequest.java => SftpChangeModeRequest.java} | 2 +- .../host/transfer/session/DownloadSession.java | 11 ++++++++--- .../preference/model/TerminalPreferenceModel.java | 5 +++++ .../strategy/TerminalPreferenceStrategy.java | 6 +++++- .../command-snippet/command-snippet-drawer.vue | 14 ++++---------- .../path-bookmark/path-bookmark-drawer.vue | 12 ++++-------- .../components/sftp/sftp-upload-modal.vue | 3 +++ .../host/terminal/components/ssh/ssh-view.vue | 7 ++++++- .../components/transfer/transfer-drawer.vue | 15 ++++----------- .../host/terminal/handler/ssh-session-handler.ts | 6 ++++++ orion-visor-ui/src/views/host/terminal/index.vue | 11 ++++++++--- .../src/views/host/terminal/types/const.ts | 8 ++++++++ .../src/views/host/terminal/types/define.ts | 3 +++ 16 files changed, 75 insertions(+), 46 deletions(-) rename orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/terminal/handler/{SftpChangeModHandler.java => SftpChangeModeHandler.java} (79%) rename orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/terminal/model/request/{SftpChangeModRequest.java => SftpChangeModeRequest.java} (90%) diff --git a/orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/constant/ErrorMessage.java b/orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/constant/ErrorMessage.java index e49e1326..ecfc6fad 100644 --- a/orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/constant/ErrorMessage.java +++ b/orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/constant/ErrorMessage.java @@ -109,4 +109,6 @@ public interface ErrorMessage { String CLIENT_ABORT = "手动中断"; + String UNABLE_DOWNLOAD_FOLDER = "无法下载文件夹"; + } diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/terminal/enums/InputTypeEnum.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/terminal/enums/InputTypeEnum.java index 060952bf..7914f165 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/terminal/enums/InputTypeEnum.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/terminal/enums/InputTypeEnum.java @@ -131,9 +131,9 @@ public enum InputTypeEnum { * SFTP 修改文件权限 */ SFTP_CHMOD("cm", - SftpChangeModHandler.class, + SftpChangeModeHandler.class, new String[]{"type", "sessionId", "path", "mod"}, - SftpChangeModRequest.class, + SftpChangeModeRequest.class, true), /** diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/terminal/handler/SftpChangeModHandler.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/terminal/handler/SftpChangeModeHandler.java similarity index 79% rename from orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/terminal/handler/SftpChangeModHandler.java rename to orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/terminal/handler/SftpChangeModeHandler.java index 5e16b0b4..c449bb73 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/terminal/handler/SftpChangeModHandler.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/terminal/handler/SftpChangeModeHandler.java @@ -5,7 +5,7 @@ import com.orion.visor.framework.biz.operator.log.core.utils.OperatorLogs; import com.orion.visor.framework.common.enums.BooleanBit; import com.orion.visor.module.asset.define.operator.HostTerminalOperatorType; import com.orion.visor.module.asset.handler.host.terminal.enums.OutputTypeEnum; -import com.orion.visor.module.asset.handler.host.terminal.model.request.SftpChangeModRequest; +import com.orion.visor.module.asset.handler.host.terminal.model.request.SftpChangeModeRequest; import com.orion.visor.module.asset.handler.host.terminal.model.response.SftpBaseResponse; import com.orion.visor.module.asset.handler.host.terminal.session.ISftpSession; import lombok.extern.slf4j.Slf4j; @@ -23,24 +23,24 @@ import java.util.Map; */ @Slf4j @Component -public class SftpChangeModHandler extends AbstractTerminalHandler { +public class SftpChangeModeHandler extends AbstractTerminalHandler { @Override - public void handle(WebSocketSession channel, SftpChangeModRequest payload) { + public void handle(WebSocketSession channel, SftpChangeModeRequest payload) { long startTime = System.currentTimeMillis(); // 获取会话 String sessionId = payload.getSessionId(); ISftpSession session = hostTerminalManager.getSession(channel.getId(), sessionId); String path = payload.getPath(); Integer mod = payload.getMod(); - log.info("SftpChangeModHandler-handle start sessionId: {}, path: {}, mod: {}", sessionId, path, mod); + log.info("SftpChangeModeHandler-handle start sessionId: {}, path: {}, mod: {}", sessionId, path, mod); Exception ex = null; // 修改权限 try { session.chmod(path, mod); - log.info("SftpChangeModHandler-handle success sessionId: {}, path: {}, mod: {}", sessionId, path, mod); + log.info("SftpChangeModeHandler-handle success sessionId: {}, path: {}, mod: {}", sessionId, path, mod); } catch (Exception e) { - log.error("SftpChangeModHandler-handle error sessionId: {}", sessionId, e); + log.error("SftpChangeModeHandler-handle error sessionId: {}", sessionId, e); ex = e; } // 返回 diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/terminal/model/request/SftpChangeModRequest.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/terminal/model/request/SftpChangeModeRequest.java similarity index 90% rename from orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/terminal/model/request/SftpChangeModRequest.java rename to orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/terminal/model/request/SftpChangeModeRequest.java index 2c7199db..141fa8db 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/terminal/model/request/SftpChangeModRequest.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/terminal/model/request/SftpChangeModeRequest.java @@ -20,7 +20,7 @@ import lombok.experimental.SuperBuilder; @NoArgsConstructor @AllArgsConstructor @EqualsAndHashCode(callSuper = true) -public class SftpChangeModRequest extends SftpBaseRequest { +public class SftpChangeModeRequest extends SftpBaseRequest { /** * 10进制的8进制 权限 diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/transfer/session/DownloadSession.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/transfer/session/DownloadSession.java index 9572fd9a..639c5667 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/transfer/session/DownloadSession.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/transfer/session/DownloadSession.java @@ -37,8 +37,11 @@ public class DownloadSession extends TransferSession implements StreamingRespons protected InputStream inputStream; + private Long fileSize; + public DownloadSession(HostTerminalConnectDTO connectInfo, SessionStore sessionStore, WebSocketSession channel) { super(connectInfo, sessionStore, channel); + this.fileSize = 0L; } @Override @@ -53,7 +56,9 @@ public class DownloadSession extends TransferSession implements StreamingRespons // 检查文件是否存在 SftpFile file = executor.getFile(path); Valid.notNull(file, ErrorMessage.FILE_ABSENT); - if (file.getSize() == 0L) { + // 验证非文件夹 + Valid.isTrue(!file.isDirectory(), ErrorMessage.UNABLE_DOWNLOAD_FOLDER); + if ((this.fileSize = file.getSize()) == 0L) { // 文件为空 log.info("DownloadSession.startDownload file empty channelId: {}, path: {}", channelId, path); TransferUtils.sendMessage(channel, TransferReceiver.FINISH, null); @@ -101,14 +106,14 @@ public class DownloadSession extends TransferSession implements StreamingRespons // 首次触发 if (i == 0) { outputStream.flush(); - this.sendProgress(size, null); + this.sendProgress(size, fileSize); } i++; } // 最后一次也要 flush if (i != 0) { outputStream.flush(); - this.sendProgress(size, null); + this.sendProgress(size, fileSize); } log.info("DownloadSession.download finish channelId: {}, path: {}", channelId, path); } catch (Exception e) { diff --git a/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/handler/preference/model/TerminalPreferenceModel.java b/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/handler/preference/model/TerminalPreferenceModel.java index 35ef8217..9d347a4d 100644 --- a/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/handler/preference/model/TerminalPreferenceModel.java +++ b/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/handler/preference/model/TerminalPreferenceModel.java @@ -314,6 +314,11 @@ public class TerminalPreferenceModel implements GenericsDataModel { */ private Boolean openSftp; + /** + * 上传文件 + */ + private Boolean uploadFile; + /** * 清空 */ diff --git a/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/handler/preference/strategy/TerminalPreferenceStrategy.java b/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/handler/preference/strategy/TerminalPreferenceStrategy.java index 631173a5..c7772bd4 100644 --- a/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/handler/preference/strategy/TerminalPreferenceStrategy.java +++ b/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/handler/preference/strategy/TerminalPreferenceStrategy.java @@ -91,6 +91,7 @@ public class TerminalPreferenceStrategy extends AbstractGenericsDataStrategy + @close="emits('closed')">