diff --git a/README.md b/README.md
index ca325231..eee75a30 100644
--- a/README.md
+++ b/README.md
@@ -19,12 +19,12 @@
-
+
-
+
-
+
-
+
-
+
diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/configuration/AssetWebSocketConfiguration.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/configuration/AssetWebSocketConfiguration.java
index 680908b5..95bd3729 100644
--- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/configuration/AssetWebSocketConfiguration.java
+++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/configuration/AssetWebSocketConfiguration.java
@@ -5,6 +5,7 @@ import com.orion.visor.module.asset.handler.host.terminal.TerminalMessageDispatc
import com.orion.visor.module.asset.handler.host.transfer.TransferMessageDispatcher;
import com.orion.visor.module.asset.interceptor.ExecLogTailInterceptor;
import com.orion.visor.module.asset.interceptor.TerminalAccessInterceptor;
+import com.orion.visor.module.asset.interceptor.TerminalTransferInterceptor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
@@ -28,6 +29,9 @@ public class AssetWebSocketConfiguration implements WebSocketConfigurer {
@Resource
private TerminalAccessInterceptor terminalAccessInterceptor;
+ @Resource
+ private TerminalTransferInterceptor terminalTransferInterceptor;
+
@Resource
private ExecLogTailInterceptor execLogTailInterceptor;
@@ -42,13 +46,13 @@ public class AssetWebSocketConfiguration implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
- // 终端
+ // 终端会话
registry.addHandler(terminalMessageDispatcher, prefix + "/host/terminal/{accessToken}")
.addInterceptors(terminalAccessInterceptor)
.setAllowedOrigins("*");
// 文件传输
- registry.addHandler(transferMessageDispatcher, prefix + "/host/transfer/{accessToken}")
- .addInterceptors(terminalAccessInterceptor)
+ registry.addHandler(transferMessageDispatcher, prefix + "/host/transfer/{transferToken}")
+ .addInterceptors(terminalTransferInterceptor)
.setAllowedOrigins("*");
// 执行日志
registry.addHandler(execLogTailHandler, prefix + "/exec/log/{token}")
diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/controller/HostTerminalController.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/controller/HostTerminalController.java
index e6cd66d8..3a935e3a 100644
--- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/controller/HostTerminalController.java
+++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/controller/HostTerminalController.java
@@ -49,5 +49,12 @@ public class HostTerminalController {
return hostTerminalService.getTerminalAccessToken();
}
+ @GetMapping("/transfer")
+ @Operation(summary = "获取主机终端 transferToken")
+ @PreAuthorize("@ss.hasPermission('asset:host-terminal:access')")
+ public String getTerminalTransferToken() {
+ return hostTerminalService.getTerminalTransferToken();
+ }
+
}
diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/define/cache/HostTerminalCacheKeyDefine.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/define/cache/HostTerminalCacheKeyDefine.java
index e11ad320..9ce86b12 100644
--- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/define/cache/HostTerminalCacheKeyDefine.java
+++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/define/cache/HostTerminalCacheKeyDefine.java
@@ -4,6 +4,7 @@ import com.orion.lang.define.cache.key.CacheKeyBuilder;
import com.orion.lang.define.cache.key.CacheKeyDefine;
import com.orion.lang.define.cache.key.struct.RedisCacheStruct;
import com.orion.visor.module.asset.entity.dto.HostTerminalAccessDTO;
+import com.orion.visor.module.asset.entity.dto.HostTerminalTransferDTO;
import java.util.concurrent.TimeUnit;
@@ -24,4 +25,12 @@ public interface HostTerminalCacheKeyDefine {
.timeout(3, TimeUnit.MINUTES)
.build();
+ CacheKeyDefine HOST_TERMINAL_TRANSFER = new CacheKeyBuilder()
+ .key("host:terminal:transfer:{}")
+ .desc("主机终端传输token ${token}")
+ .type(HostTerminalTransferDTO.class)
+ .struct(RedisCacheStruct.STRING)
+ .timeout(3, TimeUnit.MINUTES)
+ .build();
+
}
diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/domain/CommandSnippetDO.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/domain/CommandSnippetDO.java
index 0fd635e5..8bb7093a 100644
--- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/domain/CommandSnippetDO.java
+++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/domain/CommandSnippetDO.java
@@ -42,10 +42,6 @@ public class CommandSnippetDO extends BaseDO {
@TableField("name")
private String name;
- @Schema(description = "触发前缀")
- @TableField("prefix")
- private String prefix;
-
@Schema(description = "代码片段")
@TableField("command")
private String command;
diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/interceptor/TerminalAccessInterceptor.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/interceptor/TerminalAccessInterceptor.java
index 2e1edc82..4182cb2d 100644
--- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/interceptor/TerminalAccessInterceptor.java
+++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/interceptor/TerminalAccessInterceptor.java
@@ -17,7 +17,7 @@ import javax.annotation.Resource;
import java.util.Map;
/**
- * 终端拦截器
+ * 终端访问拦截器
*
* @author Jiahang Li
* @version 1.0.0
@@ -34,11 +34,11 @@ public class TerminalAccessInterceptor implements HandshakeInterceptor {
public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Map attributes) throws Exception {
// 获取 accessToken
String accessToken = Urls.getUrlSource(request.getURI().getPath());
- log.info("TerminalInterceptor-beforeHandshake start accessToken: {}", accessToken);
+ log.info("TerminalAccessInterceptor-beforeHandshake start accessToken: {}", accessToken);
// 获取连接数据
HostTerminalAccessDTO access = hostTerminalService.getAccessInfoByToken(accessToken);
if (access == null) {
- log.error("TerminalInterceptor-beforeHandshake absent accessToken: {}", accessToken);
+ log.error("TerminalAccessInterceptor-beforeHandshake absent accessToken: {}", accessToken);
return false;
}
// 设置参数
diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/interceptor/TerminalTransferInterceptor.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/interceptor/TerminalTransferInterceptor.java
new file mode 100644
index 00000000..50568055
--- /dev/null
+++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/interceptor/TerminalTransferInterceptor.java
@@ -0,0 +1,56 @@
+package com.orion.visor.module.asset.interceptor;
+
+import com.orion.lang.utils.Urls;
+import com.orion.visor.framework.common.constant.ExtraFieldConst;
+import com.orion.visor.framework.common.meta.TraceIdHolder;
+import com.orion.visor.framework.common.utils.Requests;
+import com.orion.visor.module.asset.entity.dto.HostTerminalTransferDTO;
+import com.orion.visor.module.asset.service.HostTerminalService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.server.ServerHttpRequest;
+import org.springframework.http.server.ServerHttpResponse;
+import org.springframework.stereotype.Component;
+import org.springframework.web.socket.WebSocketHandler;
+import org.springframework.web.socket.server.HandshakeInterceptor;
+
+import javax.annotation.Resource;
+import java.util.Map;
+
+/**
+ * 终端传输拦截器
+ *
+ * @author Jiahang Li
+ * @version 1.0.0
+ * @since 2023/12/27 23:53
+ */
+@Slf4j
+@Component
+public class TerminalTransferInterceptor implements HandshakeInterceptor {
+
+ @Resource
+ private HostTerminalService hostTerminalService;
+
+ @Override
+ public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Map attributes) throws Exception {
+ // 获取 transferToken
+ String transferToken = Urls.getUrlSource(request.getURI().getPath());
+ log.info("TerminalTransferInterceptor-beforeHandshake start transferToken: {}", transferToken);
+ // 获取连接数据
+ HostTerminalTransferDTO transfer = hostTerminalService.getTransferInfoByToken(transferToken);
+ if (transfer == null) {
+ log.error("TerminalTransferInterceptor-beforeHandshake absent transferToken: {}", transferToken);
+ return false;
+ }
+ // 设置参数
+ attributes.put(ExtraFieldConst.USER_ID, transfer.getUserId());
+ attributes.put(ExtraFieldConst.USERNAME, transfer.getUsername());
+ attributes.put(ExtraFieldConst.TRACE_ID, TraceIdHolder.get());
+ attributes.put(ExtraFieldConst.IDENTITY, Requests.getIdentity());
+ return true;
+ }
+
+ @Override
+ public void afterHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Exception exception) {
+ }
+
+}
diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/HostTerminalService.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/HostTerminalService.java
index 2caf57f1..baed998e 100644
--- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/HostTerminalService.java
+++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/HostTerminalService.java
@@ -3,6 +3,7 @@ package com.orion.visor.module.asset.service;
import com.orion.visor.module.asset.entity.domain.HostDO;
import com.orion.visor.module.asset.entity.dto.HostTerminalAccessDTO;
import com.orion.visor.module.asset.entity.dto.HostTerminalConnectDTO;
+import com.orion.visor.module.asset.entity.dto.HostTerminalTransferDTO;
import com.orion.visor.module.asset.entity.vo.HostTerminalThemeVO;
import java.util.List;
@@ -30,6 +31,13 @@ public interface HostTerminalService {
*/
String getTerminalAccessToken();
+ /**
+ * 获取主机终端传输 transferToken
+ *
+ * @return transferToken
+ */
+ String getTerminalTransferToken();
+
/**
* 通过 accessToken 获取主机终端访问信息
*
@@ -38,6 +46,14 @@ public interface HostTerminalService {
*/
HostTerminalAccessDTO getAccessInfoByToken(String token);
+ /**
+ * 通过 transferToken 获取主机终端传输信息
+ *
+ * @param token token
+ * @return config
+ */
+ HostTerminalTransferDTO getTransferInfoByToken(String token);
+
/**
* 获取连接信息
*
diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/impl/HostTerminalServiceImpl.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/impl/HostTerminalServiceImpl.java
index 74b6b051..7e4a3618 100644
--- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/impl/HostTerminalServiceImpl.java
+++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/impl/HostTerminalServiceImpl.java
@@ -17,6 +17,7 @@ import com.orion.visor.module.asset.entity.domain.HostIdentityDO;
import com.orion.visor.module.asset.entity.domain.HostKeyDO;
import com.orion.visor.module.asset.entity.dto.HostTerminalAccessDTO;
import com.orion.visor.module.asset.entity.dto.HostTerminalConnectDTO;
+import com.orion.visor.module.asset.entity.dto.HostTerminalTransferDTO;
import com.orion.visor.module.asset.entity.vo.HostTerminalThemeVO;
import com.orion.visor.module.asset.enums.*;
import com.orion.visor.module.asset.handler.host.config.model.HostSshConfigModel;
@@ -99,6 +100,21 @@ public class HostTerminalServiceImpl implements HostTerminalService {
return accessToken;
}
+ @Override
+ public String getTerminalTransferToken() {
+ LoginUser user = Valid.notNull(SecurityUtils.getLoginUser());
+ log.info("HostConnectService.getTerminalTransferToken userId: {}", user.getId());
+ String transferToken = UUIds.random19();
+ HostTerminalTransferDTO transfer = HostTerminalTransferDTO.builder()
+ .userId(user.getId())
+ .username(user.getUsername())
+ .build();
+ // 设置 transfer 缓存
+ String key = HostTerminalCacheKeyDefine.HOST_TERMINAL_TRANSFER.format(transferToken);
+ RedisStrings.setJson(key, HostTerminalCacheKeyDefine.HOST_TERMINAL_TRANSFER, transfer);
+ return transferToken;
+ }
+
@Override
public HostTerminalAccessDTO getAccessInfoByToken(String token) {
// 获取缓存
@@ -111,6 +127,18 @@ public class HostTerminalServiceImpl implements HostTerminalService {
return access;
}
+ @Override
+ public HostTerminalTransferDTO getTransferInfoByToken(String token) {
+ // 获取缓存
+ String key = HostTerminalCacheKeyDefine.HOST_TERMINAL_TRANSFER.format(token);
+ HostTerminalTransferDTO transfer = RedisStrings.getJson(key, HostTerminalCacheKeyDefine.HOST_TERMINAL_TRANSFER);
+ // 删除缓存
+ if (transfer != null) {
+ RedisStrings.delete(key);
+ }
+ return transfer;
+ }
+
@Override
public HostTerminalConnectDTO getTerminalConnectInfo(Long hostId) {
log.info("HostConnectService.getTerminalConnectInfo-withHost hostId: {}", hostId);
diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/resources/mapper/CommandSnippetMapper.xml b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/resources/mapper/CommandSnippetMapper.xml
index 31afed7c..567280f1 100644
--- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/resources/mapper/CommandSnippetMapper.xml
+++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/resources/mapper/CommandSnippetMapper.xml
@@ -8,7 +8,6 @@
-
@@ -19,7 +18,7 @@
- id, user_id, group_id, name, prefix, command, create_time, update_time, creator, updater, deleted
+ id, user_id, group_id, name, command, create_time, update_time, creator, updater, deleted
diff --git a/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/controller/SystemMessageController.java b/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/controller/SystemMessageController.java
index dcb30d2c..b51ae5c2 100644
--- a/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/controller/SystemMessageController.java
+++ b/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/controller/SystemMessageController.java
@@ -1,5 +1,6 @@
package com.orion.visor.module.infra.controller;
+import com.orion.visor.framework.common.validator.group.Page;
import com.orion.visor.framework.log.core.annotation.IgnoreLog;
import com.orion.visor.framework.log.core.enums.IgnoreLogMode;
import com.orion.visor.framework.web.core.annotation.RestWrapper;
@@ -38,7 +39,7 @@ public class SystemMessageController {
@IgnoreLog(IgnoreLogMode.ALL)
@PostMapping("/list")
@Operation(summary = "查询系统消息列表")
- public List getSystemMessageList(@RequestBody SystemMessageQueryRequest request) {
+ public List getSystemMessageList(@Validated(Page.class) @RequestBody SystemMessageQueryRequest request) {
return systemMessageService.getSystemMessageList(request);
}
diff --git a/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/entity/request/message/SystemMessageQueryRequest.java b/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/entity/request/message/SystemMessageQueryRequest.java
index a3e53a23..d62569f0 100644
--- a/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/entity/request/message/SystemMessageQueryRequest.java
+++ b/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/entity/request/message/SystemMessageQueryRequest.java
@@ -1,10 +1,8 @@
package com.orion.visor.module.infra.entity.request.message;
+import com.orion.visor.framework.common.entity.PageRequest;
import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
+import lombok.*;
/**
* 系统消息 查询请求对象
@@ -17,11 +15,9 @@ import lombok.NoArgsConstructor;
@Builder
@NoArgsConstructor
@AllArgsConstructor
+@EqualsAndHashCode(callSuper = true)
@Schema(name = "SystemMessageQueryRequest", description = "系统消息 查询请求对象")
-public class SystemMessageQueryRequest {
-
- @Schema(description = "大小")
- private Integer limit;
+public class SystemMessageQueryRequest extends PageRequest {
@Schema(description = "maxId")
private Long maxId;
diff --git a/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/service/impl/SystemMessageServiceImpl.java b/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/service/impl/SystemMessageServiceImpl.java
index c4529ba1..839a0020 100644
--- a/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/service/impl/SystemMessageServiceImpl.java
+++ b/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/service/impl/SystemMessageServiceImpl.java
@@ -74,9 +74,9 @@ public class SystemMessageServiceImpl implements SystemMessageService {
.eq(SystemMessageDO::getClassify, request.getClassify())
.lt(SystemMessageDO::getId, request.getMaxId())
.eq(SystemMessageDO::getStatus, status)
- .last(Const.LIMIT + Const.SPACE + request.getLimit())
.orderByDesc(SystemMessageDO::getId)
.then()
+ .limit(request.getLimit())
.list(SystemMessageConvert.MAPPER::to);
}
diff --git a/orion-visor-ui/src/api/asset/host-terminal.ts b/orion-visor-ui/src/api/asset/host-terminal.ts
index 3fdde0c0..8c770fc1 100644
--- a/orion-visor-ui/src/api/asset/host-terminal.ts
+++ b/orion-visor-ui/src/api/asset/host-terminal.ts
@@ -51,6 +51,13 @@ export function getTerminalAccessToken() {
return axios.get('/asset/host-terminal/access');
}
+/**
+ * 获取主机终端 transferToken
+ */
+export function getTerminalTransferToken() {
+ return axios.get('/asset/host-terminal/transfer');
+}
+
/**
* 打开主机终端 websocket
*/
diff --git a/orion-visor-ui/src/api/system/message.ts b/orion-visor-ui/src/api/system/message.ts
index c58e9ff0..ed7ecf1a 100644
--- a/orion-visor-ui/src/api/system/message.ts
+++ b/orion-visor-ui/src/api/system/message.ts
@@ -1,10 +1,10 @@
+import type { Pagination } from '@/types/global';
import axios from 'axios';
/**
* 系统消息查询请求
*/
-export interface MessageQueryRequest {
- limit?: number;
+export interface MessageQueryRequest extends Pagination {
maxId?: number;
classify?: string;
queryUnread?: boolean;
diff --git a/orion-visor-ui/src/assets/style/global.less b/orion-visor-ui/src/assets/style/global.less
index ae3f4176..72ee3c1a 100644
--- a/orion-visor-ui/src/assets/style/global.less
+++ b/orion-visor-ui/src/assets/style/global.less
@@ -230,6 +230,26 @@ body {
margin-bottom: 16px;
}
+.fs12 {
+ font-size: 12px;
+}
+
+.fs13 {
+ font-size: 13px;
+}
+
+.fs14 {
+ font-size: 14px;
+}
+
+.fs15 {
+ font-size: 15px;
+}
+
+.fs16 {
+ font-size: 16px;
+}
+
.text-ellipsis {
overflow: hidden;
text-overflow: ellipsis;
@@ -301,13 +321,13 @@ body {
::-webkit-scrollbar-track {
background-color: var(--color-fill-1);
- border-radius: 8px;
+ border-radius: 4px;
}
::-webkit-scrollbar-thumb {
border: 1px solid transparent;
background-clip: padding-box;
- border-radius: 8px;
+ border-radius: 4px;
background-color: var(--color-fill-4);
//&:hover {
diff --git a/orion-visor-ui/src/components/system/message-box/index.vue b/orion-visor-ui/src/components/system/message-box/index.vue
index 2ba225e4..eea336a5 100644
--- a/orion-visor-ui/src/components/system/message-box/index.vue
+++ b/orion-visor-ui/src/components/system/message-box/index.vue
@@ -129,6 +129,7 @@
: undefined;
// 查询数据
const { data } = await getSystemMessageList({
+ page: 1,
limit: messageLimit,
classify: currentClassify.value,
queryUnread: queryUnread.value,
diff --git a/orion-visor-ui/src/views/asset/host-list/components/host-form-modal.vue b/orion-visor-ui/src/views/asset/host-list/components/host-form-modal.vue
index d45e2286..0532614a 100644
--- a/orion-visor-ui/src/views/asset/host-list/components/host-form-modal.vue
+++ b/orion-visor-ui/src/views/asset/host-list/components/host-form-modal.vue
@@ -33,7 +33,7 @@
-
+
diff --git a/orion-visor-ui/src/views/asset/host-list/components/host-table.vue b/orion-visor-ui/src/views/asset/host-list/components/host-table.vue
index 5b4f3657..c47cb94e 100644
--- a/orion-visor-ui/src/views/asset/host-list/components/host-table.vue
+++ b/orion-visor-ui/src/views/asset/host-list/components/host-table.vue
@@ -200,7 +200,7 @@
-
+
更多
@@ -220,6 +220,22 @@
复制
+
+
+
+ SSH
+
+
+
+
+
+ SFTP
+
+
@@ -239,7 +255,7 @@
import { reactive, ref, onMounted } from 'vue';
import { deleteHost, batchDeleteHost, getHostPage, updateHostStatus } from '@/api/asset/host';
import { Message, Modal } from '@arco-design/web-vue';
- import { tagColor, hostTypeKey, hostStatusKey } from '../types/const';
+ import { tagColor, hostTypeKey, hostStatusKey, hostType } from '../types/const';
import { useTablePagination, useRowSelection } from '@/hooks/table';
import { useDictStore } from '@/store';
import { copy } from '@/hooks/copy';
@@ -247,6 +263,7 @@
import useLoading from '@/hooks/loading';
import columns from '../types/table.columns';
import { GrantKey, GrantRouteName } from '@/views/asset/grant/types/const';
+ import { openNewRoute } from '@/router';
import TagMultiSelector from '@/components/meta/tag/multi-selector/index.vue';
const emits = defineEmits(['openCopy', 'openAdd', 'openUpdate', 'openUpdateConfig', 'openHostGroup']);
diff --git a/orion-visor-ui/src/views/host/terminal/handler/sftp-session.ts b/orion-visor-ui/src/views/host/terminal/handler/sftp-session.ts
index c5c3f9fb..811b7c67 100644
--- a/orion-visor-ui/src/views/host/terminal/handler/sftp-session.ts
+++ b/orion-visor-ui/src/views/host/terminal/handler/sftp-session.ts
@@ -85,15 +85,21 @@ export default class SftpSession extends BaseSession implements ISftpSession {
display: 'flex',
flexDirection: 'column',
maxHeight: '40vh',
- overflowY: 'auto'
+ overflowY: 'auto',
}
},
paths.map(s => {
- return h('span', { style: { marginTop: '4px' } }, s);
+ return h('span', {
+ style: {
+ marginTop: '4px',
+ wordBreak: 'break-all',
+ }
+ }, s);
}));
// 提示
Modal.confirm({
- title: '确定后将立即删除这些文件且无法恢复!',
+ title: `确定后将立即删除这 ${paths.length} 个文件且无法恢复!`,
+ width: 426,
modalStyle: { padding: '24px 32px' },
bodyStyle: { marginTop: '-14px' },
okButtonProps: { status: 'danger' },
diff --git a/orion-visor-ui/src/views/host/terminal/handler/sftp-transfer-manager.ts b/orion-visor-ui/src/views/host/terminal/handler/sftp-transfer-manager.ts
index 8888f49f..8a23e3dd 100644
--- a/orion-visor-ui/src/views/host/terminal/handler/sftp-transfer-manager.ts
+++ b/orion-visor-ui/src/views/host/terminal/handler/sftp-transfer-manager.ts
@@ -1,7 +1,7 @@
import type { ISftpTransferHandler, ISftpTransferManager, SftpFile, SftpTransferItem, TransferOperatorResponse } from '../types/define';
import { sessionCloseMsg, TransferReceiver, TransferStatus, TransferType } from '../types/const';
import { Message } from '@arco-design/web-vue';
-import { getTerminalAccessToken, openHostTransferChannel } from '@/api/asset/host-terminal';
+import { getTerminalTransferToken, openHostTransferChannel } from '@/api/asset/host-terminal';
import { nextId } from '@/utils';
import SftpTransferUploader from './sftp-transfer-uploader';
import SftpTransferDownloader from './sftp-transfer-downloader';
@@ -105,11 +105,11 @@ export default class SftpTransferManager implements ISftpTransferManager {
// 打开会话
private async openClient() {
this.run = true;
- // 获取 access
- const { data: accessToken } = await getTerminalAccessToken();
+ // 获取 transferToken
+ const { data: transferToken } = await getTerminalTransferToken();
// 打开会话
try {
- this.client = await openHostTransferChannel(accessToken);
+ this.client = await openHostTransferChannel(transferToken);
} catch (e) {
// 打开失败将传输列表置为失效
Message.error('会话打开失败');
diff --git a/sql/init-2-schema-tables.sql b/sql/init-2-schema-tables.sql
index a2b1226a..043b47b0 100644
--- a/sql/init-2-schema-tables.sql
+++ b/sql/init-2-schema-tables.sql
@@ -30,7 +30,6 @@ CREATE TABLE `command_snippet`
`user_id` bigint(0) NULL DEFAULT NULL COMMENT '用户id',
`group_id` bigint(0) NULL DEFAULT NULL COMMENT '分组id',
`name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称',
- `prefix` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '触发前缀',
`command` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '代码片段',
`create_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '修改时间',