🔨 上传文件.

This commit is contained in:
lijiahang
2024-02-21 19:14:19 +08:00
parent f4d63d4b99
commit 8377294662
12 changed files with 236 additions and 61 deletions

View File

@@ -1,5 +1,6 @@
package com.orion.ops.module.asset.config;
import com.orion.ops.module.asset.handler.host.sftp.TransferMessageHandler;
import com.orion.ops.module.asset.handler.host.terminal.TerminalMessageDispatcher;
import com.orion.ops.module.asset.interceptor.TerminalAccessInterceptor;
import org.springframework.beans.factory.annotation.Value;
@@ -28,12 +29,19 @@ public class AssetWebSocketConfiguration implements WebSocketConfigurer {
@Resource
private TerminalMessageDispatcher terminalMessageDispatcher;
@Resource
private TransferMessageHandler transferMessageHandler;
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
// 终端
registry.addHandler(terminalMessageDispatcher, prefix + "/host/terminal/{accessToken}")
.addInterceptors(terminalAccessInterceptor)
.setAllowedOrigins("*");
// 文件传输
registry.addHandler(transferMessageHandler, prefix + "/host/transfer/{accessToken}")
.addInterceptors(terminalAccessInterceptor)
.setAllowedOrigins("*");
}
}

View File

@@ -0,0 +1,23 @@
package com.orion.ops.module.asset.handler.host.sftp;
import com.orion.lang.define.collect.MultiConcurrentHashMap;
import com.orion.ops.module.asset.handler.host.terminal.session.ITerminalSession;
import org.springframework.stereotype.Component;
/**
* 传输管理器
*
* @author Jiahang Li
* @version 1.0.0
* @since 2024/2/21 19:05
*/
@Component
public class TransferManager {
/**
* 会话存储器
*/
private final MultiConcurrentHashMap<String, Long, ITerminalSession> channelSessions = MultiConcurrentHashMap.create();
}

View File

@@ -0,0 +1,48 @@
package com.orion.ops.module.asset.handler.host.sftp;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.web.socket.BinaryMessage;
import org.springframework.web.socket.CloseStatus;
import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.handler.AbstractWebSocketHandler;
/**
* sftp 传输消息处理器
*
* @author Jiahang Li
* @version 1.0.0
* @since 2024/2/21 18:22
*/
@Slf4j
@Component
public class TransferMessageHandler extends AbstractWebSocketHandler {
@Override
protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
System.out.println("text");
}
@Override
protected void handleBinaryMessage(WebSocketSession session, BinaryMessage message) throws Exception {
System.out.println("binary");
}
@Override
public void afterConnectionEstablished(WebSocketSession session) {
log.info("TransferMessageHandler-afterConnectionEstablished id: {}", session.getId());
}
@Override
public void handleTransportError(WebSocketSession session, Throwable exception) {
log.error("TransferMessageHandler-handleTransportError id: {}", session.getId(), exception);
}
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus status) {
String id = session.getId();
log.info("TransferMessageHandler-afterConnectionClosed id: {}, code: {}, reason: {}", id, status.getCode(), status.getReason());
}
}

View File

@@ -0,0 +1,9 @@
package com.orion.ops.module.asset.handler.host.sftp.upload;
/**
* @author Jiahang Li
* @version 1.0.0
* @since 2024/2/21 19:04
*/
public class FileUploader {
}

View File

@@ -1,12 +1,13 @@
package com.orion.ops.module.asset.handler.host.terminal;
import com.orion.ops.framework.websocket.core.handler.TextWebSocketHandler;
import com.orion.ops.module.asset.handler.host.terminal.enums.InputTypeEnum;
import com.orion.ops.module.asset.handler.host.terminal.manager.TerminalManager;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.web.socket.CloseStatus;
import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.handler.AbstractWebSocketHandler;
import javax.annotation.Resource;
@@ -19,13 +20,14 @@ import javax.annotation.Resource;
*/
@Slf4j
@Component
public class TerminalMessageDispatcher extends TextWebSocketHandler {
public class TerminalMessageDispatcher extends AbstractWebSocketHandler {
@Resource
private TerminalManager terminalManager;
@Override
public void onMessage(WebSocketSession session, String payload) {
protected void handleTextMessage(WebSocketSession session, TextMessage message) {
String payload = message.getPayload();
try {
// 解析类型
InputTypeEnum type = InputTypeEnum.of(payload);
@@ -38,6 +40,11 @@ public class TerminalMessageDispatcher extends TextWebSocketHandler {
}
}
@Override
public void afterConnectionEstablished(WebSocketSession session) {
log.info("TerminalMessageDispatcher-afterConnectionEstablished id: {}", session.getId());
}
@Override
public void handleTransportError(WebSocketSession session, Throwable exception) {
log.error("TerminalMessageDispatcher-handleTransportError id: {}", session.getId(), exception);