From c20c83245f09d775c087d6730eac6ef28695d927 Mon Sep 17 00:00:00 2001 From: lijiahangmax Date: Sun, 14 Jul 2024 21:24:53 +0800 Subject: [PATCH] =?UTF-8?q?:bug:=20=E4=BF=AE=E5=A4=8D=20windows=20?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=A4=87=E4=BB=BD=E5=A4=B1=E8=B4=A5.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../terminal/handler/SftpRemoveHandler.java | 7 +++-- .../host/transfer/utils/TransferUtils.java | 7 ++++- .../service/impl/HostSftpServiceImpl.java | 5 ++- .../visor/module/asset/utils/SftpUtils.java | 9 +++++- orion-visor-ui/src/api/asset/host-sftp.ts | 1 + .../sftp-log/components/sftp-log-table.vue | 31 +++++++++++++------ .../views/asset-audit/sftp-log/types/const.ts | 3 ++ .../sftp-log/types/table.columns.ts | 6 ++++ .../components/sftp/sftp-create-modal.vue | 6 +++- .../components/sftp/sftp-table-header.vue | 4 +-- .../components/sftp/sftp-upload-modal.vue | 7 ++++- .../handler/sftp-transfer-downloader.ts | 2 +- 12 files changed, 68 insertions(+), 20 deletions(-) diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/terminal/handler/SftpRemoveHandler.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/terminal/handler/SftpRemoveHandler.java index 40fea27f..2b4759b6 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/terminal/handler/SftpRemoveHandler.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/terminal/handler/SftpRemoveHandler.java @@ -29,10 +29,11 @@ public class SftpRemoveHandler extends AbstractTerminalHandler @Override public void handle(WebSocketSession channel, SftpBaseRequest payload) { long startTime = System.currentTimeMillis(); - // 获取会话 + String path = payload.getPath(); String sessionId = payload.getSessionId(); + // 获取会话 ISftpSession session = hostTerminalManager.getSession(channel.getId(), sessionId); - String[] paths = payload.getPath().split("\\|"); + String[] paths = path.split("\\|"); log.info("SftpRemoveHandler-handle start sessionId: {}, path: {}", sessionId, Arrays.toString(paths)); Exception ex = null; // 删除 @@ -53,7 +54,7 @@ public class SftpRemoveHandler extends AbstractTerminalHandler .build()); // 保存操作日志 Map extra = Maps.newMap(); - extra.put(OperatorLogs.PATH, payload.getPath()); + extra.put(OperatorLogs.PATH, path); this.saveOperatorLog(payload, channel, extra, HostTerminalOperatorType.SFTP_REMOVE, startTime, ex); diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/transfer/utils/TransferUtils.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/transfer/utils/TransferUtils.java index 2b2bd829..03e2bdfd 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/transfer/utils/TransferUtils.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/transfer/utils/TransferUtils.java @@ -2,6 +2,7 @@ package com.orion.visor.module.asset.handler.host.transfer.utils; import com.alibaba.fastjson.JSON; import com.orion.lang.exception.argument.InvalidArgumentException; +import com.orion.lang.utils.Strings; import com.orion.visor.framework.common.constant.ErrorMessage; import com.orion.visor.framework.websocket.core.utils.WebSockets; import com.orion.visor.module.asset.handler.host.transfer.enums.TransferReceiverType; @@ -64,7 +65,11 @@ public class TransferUtils { if (ex == null) { return null; } else if (ex instanceof InvalidArgumentException) { - return ex.getMessage(); + String message = ex.getMessage(); + if (Strings.isBlank(message)) { + return ErrorMessage.OPERATE_ERROR; + } + return message; } else if (ex instanceof ClientAbortException) { return ErrorMessage.CLIENT_ABORT; } diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/impl/HostSftpServiceImpl.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/impl/HostSftpServiceImpl.java index a7fe2ce2..bf7363cb 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/impl/HostSftpServiceImpl.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/impl/HostSftpServiceImpl.java @@ -60,7 +60,10 @@ public class HostSftpServiceImpl implements HostSftpService { vo.setHostId(extra.getLong(ExtraFieldConst.HOST_ID)); vo.setHostName(extra.getString(ExtraFieldConst.HOST_NAME)); vo.setHostAddress(extra.getString(ExtraFieldConst.ADDRESS)); - vo.setPaths(extra.getString(ExtraFieldConst.PATH).split("\\|")); + String[] paths = Optional.ofNullable(extra.getString(ExtraFieldConst.PATH)) + .map(p -> p.split("\\|")) + .orElse(new String[0]); + vo.setPaths(paths); vo.setExtra(extra); return vo; }); diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/utils/SftpUtils.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/utils/SftpUtils.java index 3aa3af2b..b1c324ca 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/utils/SftpUtils.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/utils/SftpUtils.java @@ -1,8 +1,10 @@ package com.orion.visor.module.asset.utils; import com.alibaba.fastjson.JSON; +import com.jcraft.jsch.SftpException; import com.orion.lang.utils.Booleans; import com.orion.lang.utils.Strings; +import com.orion.lang.utils.io.Files1; import com.orion.net.host.sftp.SftpExecutor; import com.orion.net.host.sftp.SftpFile; import com.orion.visor.module.asset.define.config.AppSftpConfig; @@ -39,7 +41,12 @@ public class SftpUtils { SftpFileBackupParams backupParams = new SftpFileBackupParams(file.getName(), System.currentTimeMillis()); String target = Strings.format(config.getBackupFileName(), JSON.parseObject(JSON.toJSONString(backupParams))); // 移动 - executor.move(path, target); + try { + executor.getChannel().rename(path, Files1.getPath(Files1.normalize(Files1.getPath(path + "/../" + target)))); + } catch (SftpException ignored) { + } + // FIXME kit + // executor.move(path, target); } } diff --git a/orion-visor-ui/src/api/asset/host-sftp.ts b/orion-visor-ui/src/api/asset/host-sftp.ts index d874bbd8..26e13c2a 100644 --- a/orion-visor-ui/src/api/asset/host-sftp.ts +++ b/orion-visor-ui/src/api/asset/host-sftp.ts @@ -41,6 +41,7 @@ export interface HostSftpLogQueryResponse extends TableData { export interface HostSftpLogExtra { mod: number; target: string; + maxCount: number; } /** diff --git a/orion-visor-ui/src/views/asset-audit/sftp-log/components/sftp-log-table.vue b/orion-visor-ui/src/views/asset-audit/sftp-log/components/sftp-log-table.vue index d34ab08b..7f7c8a93 100644 --- a/orion-visor-ui/src/views/asset-audit/sftp-log/components/sftp-log-table.vue +++ b/orion-visor-ui/src/views/asset-audit/sftp-log/components/sftp-log-table.vue @@ -107,10 +107,14 @@ {{ getDictValue(sftpOperatorTypeKey, record.type) }} + +