🚧 定义sftp操作处理器.

This commit is contained in:
lijiahang
2024-02-19 18:01:04 +08:00
parent 4117fb3ffa
commit a7c9d0b468
23 changed files with 421 additions and 96 deletions

View File

@@ -75,20 +75,71 @@ public enum InputTypeEnum {
new String[]{"type", "sessionId", "showHiddenFile", "path"}, new String[]{"type", "sessionId", "showHiddenFile", "path"},
SftpListRequest.class), SftpListRequest.class),
/**
* SFTP 创建文件夹
*/
SFTP_MKDIR("mk",
SftpMakeDirectoryHandler.class,
new String[]{"type", "sessionId", "path"},
SftpBaseRequest.class),
/**
* SFTP 创建文件
*/
SFTP_TOUCH("to",
SftpTouchHandler.class,
new String[]{"type", "sessionId", "path"},
SftpBaseRequest.class),
/**
* SFTP 移动文件
*/
SFTP_MOVE("mv",
SftpMoveHandler.class,
new String[]{"type", "sessionId", "path", "target"},
SftpMoveRequest.class),
/**
* SFTP 删除文件
*/
SFTP_REMOVE("rm",
SftpRemoveHandler.class,
new String[]{"type", "sessionId", "paths"},
SftpRemoveRequest.class),
/**
* SFTP 截断文件
*/
SFTP_TRUNCATE("tc",
SftpTruncateHandler.class,
new String[]{"type", "sessionId", "path"},
SftpBaseRequest.class),
/**
* SFTP 修改文件权限
*/
SFTP_CHMOD("cm",
SftpChangeModHandler.class,
new String[]{"type", "sessionId", "path", "mod"},
SftpChangeModRequest.class),
/**
* SFTP 获取内容
*/
SFTP_GET_CONTENT("gc",
SftpGetContentHandler.class,
new String[]{"type", "sessionId", "path"},
SftpBaseRequest.class),
/**
* SFTP 修改内容
*/
SFTP_SET_CONTENT("sc",
SftpSetContentHandler.class,
new String[]{"type", "sessionId", "path", "content"},
SftpSetContentRequest.class),
// TODO // TODO
// MKDIR
// TOUCH
// REMOVE
// MOVE
// TRUNCATE
// CHMOD
// GET
// SAVE
// COPY // COPY
// UPLOAD // UPLOAD
// DOWNLOAD // DOWNLOAD

View File

@@ -43,7 +43,47 @@ public enum OutputTypeEnum {
/** /**
* SFTP 文件列表 * SFTP 文件列表
*/ */
SFTP_LIST("ls", "${type}|${sessionId}|${result}|${path}|${body}"), SFTP_LIST("ls", "${type}|${sessionId}|${path}|${result}|${body}"),
/**
* SFTP 创建文件夹
*/
SFTP_MKDIR("md", "${type}|${sessionId}|${result}|${msg}"),
/**
* SFTP 创建文件
*/
SFTP_TOUCH("to", "${type}|${sessionId}${result}|${msg}"),
/**
* SFTP 移动文件
*/
SFTP_MOVE("mv", "${type}|${sessionId}|${result}|${msg}"),
/**
* SFTP 删除文件
*/
SFTP_REMOVE("rm", "${type}|${sessionId}|${result}|${msg}"),
/**
* SFTP 截断文件
*/
SFTP_TRUNCATE("tc", "${type}|${sessionId}|${result}|${msg}"),
/**
* SFTP 修改文件权限
*/
SFTP_CHMOD("cm", "${type}|${sessionId}|${result}|${msg}"),
/**
* SFTP 获取文件内容
*/
SFTP_GET_CONTENT("gc", "${type}|${sessionId}|${path}|${result}|${content}"),
/**
* SFTP 修改文件内容
*/
SFTP_SET_CONTENT("sc", "${type}|${sessionId}|${result}|${msg}"),
; ;

View File

@@ -0,0 +1,23 @@
package com.orion.ops.module.asset.handler.host.terminal.handler;
import com.orion.ops.module.asset.handler.host.terminal.model.request.SftpChangeModRequest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.web.socket.WebSocketSession;
/**
* sftp 修改文件权限
*
* @author Jiahang Li
* @version 1.0.0
* @since 2024/2/19 11:13
*/
@Slf4j
@Component
public class SftpChangeModHandler extends AbstractTerminalHandler<SftpChangeModRequest> {
@Override
public void handle(WebSocketSession channel, SftpChangeModRequest payload) {
}
}

View File

@@ -0,0 +1,23 @@
package com.orion.ops.module.asset.handler.host.terminal.handler;
import com.orion.ops.module.asset.handler.host.terminal.model.request.SftpBaseRequest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.web.socket.WebSocketSession;
/**
* sftp 获取文件内容
*
* @author Jiahang Li
* @version 1.0.0
* @since 2024/2/19 11:13
*/
@Slf4j
@Component
public class SftpGetContentHandler extends AbstractTerminalHandler<SftpBaseRequest> {
@Override
public void handle(WebSocketSession channel, SftpBaseRequest payload) {
}
}

View File

@@ -4,17 +4,14 @@ import com.alibaba.fastjson.JSON;
import com.orion.lang.utils.Strings; import com.orion.lang.utils.Strings;
import com.orion.ops.framework.common.enums.BooleanBit; 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.enums.OutputTypeEnum;
import com.orion.ops.module.asset.handler.host.terminal.manager.TerminalManager;
import com.orion.ops.module.asset.handler.host.terminal.model.request.SftpListRequest; import com.orion.ops.module.asset.handler.host.terminal.model.request.SftpListRequest;
import com.orion.ops.module.asset.handler.host.terminal.model.response.SftpFileResponse; import com.orion.ops.module.asset.handler.host.terminal.model.response.SftpFileVO;
import com.orion.ops.module.asset.handler.host.terminal.model.response.SftpListResponse; import com.orion.ops.module.asset.handler.host.terminal.model.response.SftpListResponse;
import com.orion.ops.module.asset.handler.host.terminal.session.ISftpSession; import com.orion.ops.module.asset.handler.host.terminal.session.ISftpSession;
import com.orion.ops.module.asset.handler.host.terminal.session.ITerminalSession;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.socket.WebSocketSession; import org.springframework.web.socket.WebSocketSession;
import javax.annotation.Resource;
import java.util.List; import java.util.List;
/** /**
@@ -28,39 +25,34 @@ import java.util.List;
@Component @Component
public class SftpListHandler extends AbstractTerminalHandler<SftpListRequest> { public class SftpListHandler extends AbstractTerminalHandler<SftpListRequest> {
@Resource
private TerminalManager terminalManager;
@Override @Override
public void handle(WebSocketSession channel, SftpListRequest payload) { public void handle(WebSocketSession channel, SftpListRequest payload) {
// 获取会话 // 获取会话
ITerminalSession session = terminalManager.getSession(channel.getId(), payload.getSessionId()); ISftpSession session = terminalManager.getSession(channel.getId(), payload.getSessionId());
String path = payload.getPath(); String path = payload.getPath();
log.info("SftpListHandler-handle session: {}, path: {}", payload.getSessionId(), path); log.info("SftpListHandler-handle session: {}, path: {}", payload.getSessionId(), path);
if (session instanceof ISftpSession) { Exception ex = null;
Exception ex = null; List<SftpFileVO> list = null;
List<SftpFileResponse> list = null; try {
try { // 空目录则直接获取 home 目录
// 空目录则直接获取 home 目录 if (Strings.isBlank(path)) {
if (Strings.isBlank(path)) { path = session.getHome();
path = ((ISftpSession) session).getHome();
}
// 文件列表
list = ((ISftpSession) session).list(path, BooleanBit.toBoolean(payload.getShowHiddenFile()));
} catch (Exception e) {
log.error("SftpListHandler-handle error", e);
ex = e;
} }
// 返回 // 文件列表
this.send(channel, list = session.list(path, BooleanBit.toBoolean(payload.getShowHiddenFile()));
OutputTypeEnum.SFTP_LIST, } catch (Exception e) {
SftpListResponse.builder() log.error("SftpListHandler-handle error", e);
.sessionId(payload.getSessionId()) ex = e;
.result(BooleanBit.of(ex == null).getValue())
.path(path)
.body(list == null ? null : JSON.toJSONString(list))
.build());
} }
// 返回
this.send(channel,
OutputTypeEnum.SFTP_LIST,
SftpListResponse.builder()
.sessionId(payload.getSessionId())
.result(BooleanBit.of(ex == null).getValue())
.path(path)
.body(list == null ? null : JSON.toJSONString(list))
.build());
} }
} }

View File

@@ -0,0 +1,46 @@
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;
/**
* sftp 创建文件夹
*
* @author Jiahang Li
* @version 1.0.0
* @since 2024/2/19 11:13
*/
@Slf4j
@Component
public class SftpMakeDirectoryHandler extends AbstractTerminalHandler<SftpBaseRequest> {
@Override
public void handle(WebSocketSession channel, SftpBaseRequest payload) {
// 获取会话
ISftpSession session = terminalManager.getSession(channel.getId(), payload.getSessionId());
String path = payload.getPath();
log.info("SftpMakeDirectoryHandler-handle session: {}, path: {}", payload.getSessionId(), path);
Exception ex = null;
try {
session.mkdir(path);
} catch (Exception e) {
log.error("SftpMakeDirectoryHandler-handle error", e);
ex = e;
}
// 返回
this.send(channel,
OutputTypeEnum.SFTP_MKDIR,
SftpBaseResponse.builder()
.sessionId(payload.getSessionId())
.result(BooleanBit.of(ex == null).getValue())
.msg(ex == null ? null : ex.getMessage())
.build());
}
}

View File

@@ -0,0 +1,23 @@
package com.orion.ops.module.asset.handler.host.terminal.handler;
import com.orion.ops.module.asset.handler.host.terminal.model.request.SftpMoveRequest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.web.socket.WebSocketSession;
/**
* sftp 移动文件
*
* @author Jiahang Li
* @version 1.0.0
* @since 2024/2/19 11:13
*/
@Slf4j
@Component
public class SftpMoveHandler extends AbstractTerminalHandler<SftpMoveRequest> {
@Override
public void handle(WebSocketSession channel, SftpMoveRequest payload) {
}
}

View File

@@ -0,0 +1,23 @@
package com.orion.ops.module.asset.handler.host.terminal.handler;
import com.orion.ops.module.asset.handler.host.terminal.model.request.SftpRemoveRequest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.web.socket.WebSocketSession;
/**
* sftp 删除文件
*
* @author Jiahang Li
* @version 1.0.0
* @since 2024/2/19 11:13
*/
@Slf4j
@Component
public class SftpRemoveHandler extends AbstractTerminalHandler<SftpRemoveRequest> {
@Override
public void handle(WebSocketSession channel, SftpRemoveRequest payload) {
}
}

View File

@@ -0,0 +1,23 @@
package com.orion.ops.module.asset.handler.host.terminal.handler;
import com.orion.ops.module.asset.handler.host.terminal.model.request.SftpSetContentRequest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.web.socket.WebSocketSession;
/**
* sftp 设置文件内容
*
* @author Jiahang Li
* @version 1.0.0
* @since 2024/2/19 11:13
*/
@Slf4j
@Component
public class SftpSetContentHandler extends AbstractTerminalHandler<SftpSetContentRequest> {
@Override
public void handle(WebSocketSession channel, SftpSetContentRequest payload) {
}
}

View File

@@ -0,0 +1,46 @@
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;
/**
* sftp 创建文件
*
* @author Jiahang Li
* @version 1.0.0
* @since 2024/2/19 11:13
*/
@Slf4j
@Component
public class SftpTouchHandler extends AbstractTerminalHandler<SftpBaseRequest> {
@Override
public void handle(WebSocketSession channel, SftpBaseRequest payload) {
// 获取会话
ISftpSession session = terminalManager.getSession(channel.getId(), payload.getSessionId());
String path = payload.getPath();
log.info("SftpTouchHandler-handle session: {}, path: {}", payload.getSessionId(), path);
Exception ex = null;
try {
session.touch(path);
} catch (Exception e) {
log.error("SftpTouchHandler-handle error", e);
ex = e;
}
// 返回
this.send(channel,
OutputTypeEnum.SFTP_TOUCH,
SftpBaseResponse.builder()
.sessionId(payload.getSessionId())
.result(BooleanBit.of(ex == null).getValue())
.msg(ex == null ? null : ex.getMessage())
.build());
}
}

View File

@@ -0,0 +1,23 @@
package com.orion.ops.module.asset.handler.host.terminal.handler;
import com.orion.ops.module.asset.handler.host.terminal.model.request.SftpBaseRequest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.web.socket.WebSocketSession;
/**
* sftp 截断文件
*
* @author Jiahang Li
* @version 1.0.0
* @since 2024/2/19 11:13
*/
@Slf4j
@Component
public class SftpTruncateHandler extends AbstractTerminalHandler<SftpBaseRequest> {
@Override
public void handle(WebSocketSession channel, SftpBaseRequest payload) {
}
}

View File

@@ -9,21 +9,19 @@ import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder; import lombok.experimental.SuperBuilder;
/** /**
* sftp 创建文件 实体对象 * sftp 基础请求 实体对象
* <p>
* i|eff00a1|path
* *
* @author Jiahang Li * @author Jiahang Li
* @version 1.0.0 * @version 1.0.0
* @since 2024/2/6 13:31 * @since 2024/2/19 17:46
*/ */
@Data @Data
@SuperBuilder @SuperBuilder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Schema(name = "SftpTouchRequest", description = "sftp 创建文件 实体对象") @Schema(name = "SftpBaseRequest", description = "sftp 基础请求 实体对象")
public class SftpTouchRequest extends TerminalBasePayload { public class SftpBaseRequest extends TerminalBasePayload {
@Schema(description = "path") @Schema(description = "path")
private String path; private String path;

View File

@@ -1,6 +1,5 @@
package com.orion.ops.module.asset.handler.host.terminal.model.request; package com.orion.ops.module.asset.handler.host.terminal.model.request;
import com.orion.ops.module.asset.handler.host.terminal.model.TerminalBasePayload;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
@@ -23,10 +22,7 @@ import lombok.experimental.SuperBuilder;
@AllArgsConstructor @AllArgsConstructor
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Schema(name = "SftpChangeModRequest", description = "sftp 修改文件权限 实体对象") @Schema(name = "SftpChangeModRequest", description = "sftp 修改文件权限 实体对象")
public class SftpChangeModRequest extends TerminalBasePayload { public class SftpChangeModRequest extends SftpBaseRequest {
@Schema(description = "path")
private String path;
@Schema(description = "10进制的8进制 权限") @Schema(description = "10进制的8进制 权限")
private Integer mod; private Integer mod;

View File

@@ -1,6 +1,5 @@
package com.orion.ops.module.asset.handler.host.terminal.model.request; package com.orion.ops.module.asset.handler.host.terminal.model.request;
import com.orion.ops.module.asset.handler.host.terminal.model.TerminalBasePayload;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
@@ -23,10 +22,7 @@ import lombok.experimental.SuperBuilder;
@AllArgsConstructor @AllArgsConstructor
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Schema(name = "SftpListRequest", description = "sftp 列表请求 实体对象") @Schema(name = "SftpListRequest", description = "sftp 列表请求 实体对象")
public class SftpListRequest extends TerminalBasePayload { public class SftpListRequest extends SftpBaseRequest {
@Schema(description = "path")
private String path;
@Schema(description = "是否显示隐藏文件") @Schema(description = "是否显示隐藏文件")
private Integer showHiddenFile; private Integer showHiddenFile;

View File

@@ -1,6 +1,5 @@
package com.orion.ops.module.asset.handler.host.terminal.model.request; package com.orion.ops.module.asset.handler.host.terminal.model.request;
import com.orion.ops.module.asset.handler.host.terminal.model.TerminalBasePayload;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
@@ -11,7 +10,7 @@ import lombok.experimental.SuperBuilder;
/** /**
* sftp 移动文件 实体对象 * sftp 移动文件 实体对象
* <p> * <p>
* i|eff00a1|source|target * i|eff00a1|path|target
* *
* @author Jiahang Li * @author Jiahang Li
* @version 1.0.0 * @version 1.0.0
@@ -23,10 +22,7 @@ import lombok.experimental.SuperBuilder;
@AllArgsConstructor @AllArgsConstructor
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Schema(name = "SftpMoveRequest", description = "sftp 移动文件 实体对象") @Schema(name = "SftpMoveRequest", description = "sftp 移动文件 实体对象")
public class SftpMoveRequest extends TerminalBasePayload { public class SftpMoveRequest extends SftpBaseRequest {
@Schema(description = "source")
private String source;
@Schema(description = "target") @Schema(description = "target")
private String target; private String target;

View File

@@ -1,6 +1,5 @@
package com.orion.ops.module.asset.handler.host.terminal.model.request; package com.orion.ops.module.asset.handler.host.terminal.model.request;
import com.orion.ops.module.asset.handler.host.terminal.model.TerminalBasePayload;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
@@ -25,7 +24,7 @@ import java.util.List;
@AllArgsConstructor @AllArgsConstructor
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Schema(name = "SftpRemoveRequest", description = "sftp 删除文件 实体对象") @Schema(name = "SftpRemoveRequest", description = "sftp 删除文件 实体对象")
public class SftpRemoveRequest extends TerminalBasePayload { public class SftpRemoveRequest extends SftpBaseRequest {
@Schema(description = "paths 多个用|分割") @Schema(description = "paths 多个用|分割")
private List<String> paths; private List<String> paths;

View File

@@ -0,0 +1,30 @@
package com.orion.ops.module.asset.handler.host.terminal.model.request;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* sftp 设置文件内容 实体对象
* <p>
* i|eff00a1|path|content
*
* @author Jiahang Li
* @version 1.0.0
* @since 2024/2/6 13:31
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@Schema(name = "SftpSetContentRequest", description = "sftp 设置文件内容 实体对象")
public class SftpSetContentRequest extends SftpBaseRequest {
@Schema(description = "content")
private String content;
}

View File

@@ -1,4 +1,4 @@
package com.orion.ops.module.asset.handler.host.terminal.model.request; package com.orion.ops.module.asset.handler.host.terminal.model.response;
import com.orion.ops.module.asset.handler.host.terminal.model.TerminalBasePayload; import com.orion.ops.module.asset.handler.host.terminal.model.TerminalBasePayload;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
@@ -9,23 +9,24 @@ import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder; import lombok.experimental.SuperBuilder;
/** /**
* sftp 创建文件夹 实体对象 * sftp 基础响应 实体对象
* <p>
* i|eff00a1|path
* *
* @author Jiahang Li * @author Jiahang Li
* @version 1.0.0 * @version 1.0.0
* @since 2024/2/6 13:31 * @since 2024/2/19 17:46
*/ */
@Data @Data
@SuperBuilder @SuperBuilder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Schema(name = "SftpMakeDirectoryRequest", description = "sftp 创建文件夹 实体对象") @Schema(name = "SftpBaseResponse", description = "sftp 基础响应 实体对象")
public class SftpMakeDirectoryRequest extends TerminalBasePayload { public class SftpBaseResponse extends TerminalBasePayload {
@Schema(description = "path") @Schema(description = "结果")
private String path; private Integer result;
@Schema(description = "消息")
private String msg;
} }

View File

@@ -20,7 +20,7 @@ import java.util.Date;
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@Schema(name = "SftpFileResponse", description = "sftp 文件响应 实体对象") @Schema(name = "SftpFileResponse", description = "sftp 文件响应 实体对象")
public class SftpFileResponse { public class SftpFileVO {
@Schema(description = "名称") @Schema(description = "名称")
private String name; private String name;

View File

@@ -1,6 +1,5 @@
package com.orion.ops.module.asset.handler.host.terminal.model.request; package com.orion.ops.module.asset.handler.host.terminal.model.response;
import com.orion.ops.module.asset.handler.host.terminal.model.TerminalBasePayload;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
@@ -9,23 +8,24 @@ import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder; import lombok.experimental.SuperBuilder;
/** /**
* sftp 截断文件 实体对象 * sftp 获取内容响应 实体对象
* <p>
* i|eff00a1|path
* *
* @author Jiahang Li * @author Jiahang Li
* @version 1.0.0 * @version 1.0.0
* @since 2024/2/6 13:31 * @since 2024/2/6 16:20
*/ */
@Data @Data
@SuperBuilder @SuperBuilder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Schema(name = "SftpTruncateRequest", description = "sftp 截断文件 实体对象") @Schema(name = "SftpGetContentResponse", description = "sftp 获取内容响应 实体对象")
public class SftpTruncateRequest extends TerminalBasePayload { public class SftpGetContentResponse extends SftpBaseResponse {
@Schema(description = "path") @Schema(description = "path")
private String path; private String path;
@Schema(description = "content")
private String content;
} }

View File

@@ -1,6 +1,5 @@
package com.orion.ops.module.asset.handler.host.terminal.model.response; package com.orion.ops.module.asset.handler.host.terminal.model.response;
import com.orion.ops.module.asset.handler.host.terminal.model.TerminalBasePayload;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
@@ -21,14 +20,11 @@ import lombok.experimental.SuperBuilder;
@AllArgsConstructor @AllArgsConstructor
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Schema(name = "SftpListResponse", description = "sftp 列表响应 实体对象") @Schema(name = "SftpListResponse", description = "sftp 列表响应 实体对象")
public class SftpListResponse extends TerminalBasePayload { public class SftpListResponse extends SftpBaseResponse {
@Schema(description = "path") @Schema(description = "path")
private String path; private String path;
@Schema(description = "结果")
private Integer result;
@Schema(description = "body") @Schema(description = "body")
private String body; private String body;

View File

@@ -1,6 +1,6 @@
package com.orion.ops.module.asset.handler.host.terminal.session; package com.orion.ops.module.asset.handler.host.terminal.session;
import com.orion.ops.module.asset.handler.host.terminal.model.response.SftpFileResponse; import com.orion.ops.module.asset.handler.host.terminal.model.response.SftpFileVO;
import java.util.List; import java.util.List;
@@ -32,7 +32,7 @@ public interface ISftpSession extends ITerminalSession {
* @param showHiddenFile 是否显示隐藏文件 * @param showHiddenFile 是否显示隐藏文件
* @return list * @return list
*/ */
List<SftpFileResponse> list(String path, boolean showHiddenFile); List<SftpFileVO> list(String path, boolean showHiddenFile);
/** /**
* 创建文件夹 * 创建文件夹

View File

@@ -11,7 +11,7 @@ import com.orion.net.host.sftp.SftpFile;
import com.orion.ops.framework.common.constant.Const; import com.orion.ops.framework.common.constant.Const;
import com.orion.ops.framework.common.utils.Valid; import com.orion.ops.framework.common.utils.Valid;
import com.orion.ops.module.asset.handler.host.terminal.model.TerminalConfig; import com.orion.ops.module.asset.handler.host.terminal.model.TerminalConfig;
import com.orion.ops.module.asset.handler.host.terminal.model.response.SftpFileResponse; import com.orion.ops.module.asset.handler.host.terminal.model.response.SftpFileVO;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.web.socket.WebSocketSession; import org.springframework.web.socket.WebSocketSession;
@@ -58,7 +58,7 @@ public class SftpSession extends TerminalSession implements ISftpSession {
} }
@Override @Override
public List<SftpFileResponse> list(String path, boolean showHiddenFile) { public List<SftpFileVO> list(String path, boolean showHiddenFile) {
path = Files1.getPath(path); path = Files1.getPath(path);
// 查询文件 // 查询文件
List<SftpFile> files = executor.listFilesFilter(path, List<SftpFile> files = executor.listFilesFilter(path,
@@ -149,8 +149,8 @@ public class SftpSession extends TerminalSession implements ISftpSession {
* @param sftpFile sftpFile * @param sftpFile sftpFile
* @return file * @return file
*/ */
private static SftpFileResponse fileMapping(SftpFile sftpFile) { private static SftpFileVO fileMapping(SftpFile sftpFile) {
SftpFileResponse file = new SftpFileResponse(); SftpFileVO file = new SftpFileVO();
file.setName(sftpFile.getName()); file.setName(sftpFile.getName());
file.setPath(sftpFile.getPath()); file.setPath(sftpFile.getPath());
file.setSuffix(Files1.getSuffix(sftpFile.getName())); file.setSuffix(Files1.getSuffix(sftpFile.getName()));