From a2ff7b0076144f78309d580ffff786d9e4dd948c Mon Sep 17 00:00:00 2001 From: lijiahang Date: Mon, 19 Feb 2024 18:14:16 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20sftp=20=E6=96=87=E4=BB=B6=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E5=AE=9E=E7=8E=B0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handler/SftpChangeModHandler.java | 25 ++++++++++++++++++ .../handler/SftpGetContentHandler.java | 26 +++++++++++++++++++ .../handler/SftpMakeDirectoryHandler.java | 1 + .../terminal/handler/SftpMoveHandler.java | 25 ++++++++++++++++++ .../terminal/handler/SftpRemoveHandler.java | 24 +++++++++++++++++ .../handler/SftpSetContentHandler.java | 24 +++++++++++++++++ .../terminal/handler/SftpTouchHandler.java | 1 + .../terminal/handler/SftpTruncateHandler.java | 24 +++++++++++++++++ .../model/request/SftpRemoveRequest.java | 2 +- .../host/terminal/session/ISftpSession.java | 2 +- .../host/terminal/session/SftpSession.java | 5 ++-- 11 files changed, 155 insertions(+), 4 deletions(-) diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/handler/host/terminal/handler/SftpChangeModHandler.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/handler/host/terminal/handler/SftpChangeModHandler.java index f7910dd4..1903768d 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/handler/host/terminal/handler/SftpChangeModHandler.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/handler/host/terminal/handler/SftpChangeModHandler.java @@ -1,6 +1,10 @@ package com.orion.ops.module.asset.handler.host.terminal.handler; +import com.orion.ops.framework.common.enums.BooleanBit; +import com.orion.ops.module.asset.handler.host.terminal.enums.OutputTypeEnum; import com.orion.ops.module.asset.handler.host.terminal.model.request.SftpChangeModRequest; +import com.orion.ops.module.asset.handler.host.terminal.model.response.SftpBaseResponse; +import com.orion.ops.module.asset.handler.host.terminal.session.ISftpSession; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.springframework.web.socket.WebSocketSession; @@ -18,6 +22,27 @@ public class SftpChangeModHandler extends AbstractTerminalHandler { @Override public void handle(WebSocketSession channel, SftpMoveRequest payload) { + // 获取会话 + ISftpSession session = terminalManager.getSession(channel.getId(), payload.getSessionId()); + String path = payload.getPath(); + String target = payload.getTarget(); + log.info("SftpMoveHandler-handle session: {}, path: {}, target: {}", payload.getSessionId(), path, target); + Exception ex = null; + // 移动 + try { + session.move(path, target); + } catch (Exception e) { + log.error("SftpMoveHandler-handle error", e); + ex = e; + } + // 返回 + this.send(channel, + OutputTypeEnum.SFTP_MOVE, + SftpBaseResponse.builder() + .sessionId(payload.getSessionId()) + .result(BooleanBit.of(ex == null).getValue()) + .msg(ex == null ? null : ex.getMessage()) + .build()); } } diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/handler/host/terminal/handler/SftpRemoveHandler.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/handler/host/terminal/handler/SftpRemoveHandler.java index a5f240e1..0c5169fe 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/handler/host/terminal/handler/SftpRemoveHandler.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/handler/host/terminal/handler/SftpRemoveHandler.java @@ -1,6 +1,10 @@ package com.orion.ops.module.asset.handler.host.terminal.handler; +import com.orion.ops.framework.common.enums.BooleanBit; +import com.orion.ops.module.asset.handler.host.terminal.enums.OutputTypeEnum; import com.orion.ops.module.asset.handler.host.terminal.model.request.SftpRemoveRequest; +import com.orion.ops.module.asset.handler.host.terminal.model.response.SftpBaseResponse; +import com.orion.ops.module.asset.handler.host.terminal.session.ISftpSession; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.springframework.web.socket.WebSocketSession; @@ -18,6 +22,26 @@ public class SftpRemoveHandler extends AbstractTerminalHandler { String path = payload.getPath(); log.info("SftpTouchHandler-handle session: {}, path: {}", payload.getSessionId(), path); Exception ex = null; + // 创建文件 try { session.touch(path); } catch (Exception e) { diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/handler/host/terminal/handler/SftpTruncateHandler.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/handler/host/terminal/handler/SftpTruncateHandler.java index ebfb9149..11bda36f 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/handler/host/terminal/handler/SftpTruncateHandler.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/handler/host/terminal/handler/SftpTruncateHandler.java @@ -1,6 +1,10 @@ package com.orion.ops.module.asset.handler.host.terminal.handler; +import com.orion.ops.framework.common.enums.BooleanBit; +import com.orion.ops.module.asset.handler.host.terminal.enums.OutputTypeEnum; import com.orion.ops.module.asset.handler.host.terminal.model.request.SftpBaseRequest; +import com.orion.ops.module.asset.handler.host.terminal.model.response.SftpBaseResponse; +import com.orion.ops.module.asset.handler.host.terminal.session.ISftpSession; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.springframework.web.socket.WebSocketSession; @@ -18,6 +22,26 @@ public class SftpTruncateHandler extends AbstractTerminalHandler paths; + private String paths; } diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/handler/host/terminal/session/ISftpSession.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/handler/host/terminal/session/ISftpSession.java index fd4ae0df..e17392b7 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/handler/host/terminal/session/ISftpSession.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/handler/host/terminal/session/ISftpSession.java @@ -61,7 +61,7 @@ public interface ISftpSession extends ITerminalSession { * * @param paths paths */ - void remove(List paths); + void remove(String[] paths); /** * 截断文件 diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/handler/host/terminal/session/SftpSession.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/handler/host/terminal/session/SftpSession.java index e7e310ee..930f5190 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/handler/host/terminal/session/SftpSession.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/handler/host/terminal/session/SftpSession.java @@ -16,6 +16,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.web.socket.WebSocketSession; import java.io.InputStream; +import java.util.Arrays; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; @@ -89,8 +90,8 @@ public class SftpSession extends TerminalSession implements ISftpSession { } @Override - public void remove(List paths) { - paths.stream() + public void remove(String[] paths) { + Arrays.stream(paths) .map(Valid::checkNormalize) .forEach(executor::remove); }