diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/HostTerminalController.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/HostTerminalController.java index 25e2cc74..80e1dd4f 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/HostTerminalController.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/HostTerminalController.java @@ -1,7 +1,6 @@ package com.orion.ops.module.asset.controller; import com.orion.ops.framework.web.core.annotation.RestWrapper; -import com.orion.ops.module.asset.entity.vo.HostTerminalAccessVO; import com.orion.ops.module.asset.service.HostTerminalService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -36,7 +35,7 @@ public class HostTerminalController { @GetMapping("/access") @Operation(summary = "获取主机终端 accessToken") @PreAuthorize("@ss.hasPermission('asset:host-terminal:access')") - public HostTerminalAccessVO getHostTerminalAccessToken() { + public String getHostTerminalAccessToken() { return hostTerminalService.getHostTerminalAccessToken(); } diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/vo/HostTerminalAccessVO.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/vo/HostTerminalAccessVO.java deleted file mode 100644 index c27696a0..00000000 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/vo/HostTerminalAccessVO.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.orion.ops.module.asset.entity.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serializable; - -/** - * 主机终端访问 响应对象 - * - * @author Jiahang Li - * @version 1.0.0 - * @since 2024/1/4 15:42 - */ -@Data -@Builder -@NoArgsConstructor -@AllArgsConstructor -@Schema(name = "HostTerminalAccessVO", description = "主机终端访问 响应对象") -public class HostTerminalAccessVO implements Serializable { - - private static final long serialVersionUID = 1L; - - @Schema(description = "accessToken") - private String accessToken; - - @Schema(description = "session 起始量") - private String sessionInitial; - -} diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/HostTerminalService.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/HostTerminalService.java index caa6bc83..2e952a94 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/HostTerminalService.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/HostTerminalService.java @@ -4,7 +4,6 @@ import com.orion.net.host.SessionStore; import com.orion.ops.module.asset.entity.domain.HostDO; import com.orion.ops.module.asset.entity.dto.HostTerminalAccessDTO; import com.orion.ops.module.asset.entity.dto.HostTerminalConnectDTO; -import com.orion.ops.module.asset.entity.vo.HostTerminalAccessVO; /** * 主机终端服务 @@ -18,9 +17,9 @@ public interface HostTerminalService { /** * 获取主机终端访问 accessToken * - * @return session + * @return accessToken */ - HostTerminalAccessVO getHostTerminalAccessToken(); + String getHostTerminalAccessToken(); /** * 通过 accessToken 获取主机终端访问信息 diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/HostTerminalServiceImpl.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/HostTerminalServiceImpl.java index 2bdc9210..37c8f6c1 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/HostTerminalServiceImpl.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/HostTerminalServiceImpl.java @@ -22,7 +22,6 @@ import com.orion.ops.module.asset.entity.domain.HostIdentityDO; import com.orion.ops.module.asset.entity.domain.HostKeyDO; import com.orion.ops.module.asset.entity.dto.HostTerminalAccessDTO; import com.orion.ops.module.asset.entity.dto.HostTerminalConnectDTO; -import com.orion.ops.module.asset.entity.vo.HostTerminalAccessVO; import com.orion.ops.module.asset.enums.HostConfigTypeEnum; import com.orion.ops.module.asset.enums.HostExtraItemEnum; import com.orion.ops.module.asset.enums.HostExtraSshAuthTypeEnum; @@ -83,7 +82,7 @@ public class HostTerminalServiceImpl implements HostTerminalService { private SystemUserApi systemUserApi; @Override - public HostTerminalAccessVO getHostTerminalAccessToken() { + public String getHostTerminalAccessToken() { LoginUser user = SecurityUtils.getLoginUser(); log.info("HostConnectService.getHostAccessToken userId: {}", user.getId()); String accessToken = UUIds.random19(); @@ -94,11 +93,7 @@ public class HostTerminalServiceImpl implements HostTerminalService { // 设置 access 缓存 String key = HostTerminalCacheKeyDefine.HOST_TERMINAL_ACCESS.format(accessToken); RedisStrings.setJson(key, HostTerminalCacheKeyDefine.HOST_TERMINAL_ACCESS, access); - return HostTerminalAccessVO.builder() - .accessToken(accessToken) - // 32 进制的 uuid 作为起始量 - .sessionInitial(Long.toString(UUIds.random15Long(), 32)) - .build(); + return accessToken; } @Override diff --git a/orion-ops-ui/src/api/asset/host-terminal.ts b/orion-ops-ui/src/api/asset/host-terminal.ts index f5898ca1..e3b93c56 100644 --- a/orion-ops-ui/src/api/asset/host-terminal.ts +++ b/orion-ops-ui/src/api/asset/host-terminal.ts @@ -1,16 +1,8 @@ import axios from 'axios'; -/** - * 主机终端访问响应 - */ -export interface HostTerminalAccessResponse { - accessToken: string; - sessionInitial: string; -} - /** * 获取主机终端 accessToken */ export function getHostTerminalAccessToken() { - return axios.get('/asset/host-terminal/access'); + return axios.get('/asset/host-terminal/access'); } diff --git a/orion-ops-ui/src/store/modules/terminal/index.ts b/orion-ops-ui/src/store/modules/terminal/index.ts index 9acada97..78f3f32b 100644 --- a/orion-ops-ui/src/store/modules/terminal/index.ts +++ b/orion-ops-ui/src/store/modules/terminal/index.ts @@ -4,8 +4,8 @@ import { getPreference, updatePreference } from '@/api/user/preference'; import { Message } from '@arco-design/web-vue'; import { useDark } from '@vueuse/core'; import { DEFAULT_SCHEMA } from '@/views/host/terminal/types/terminal.theme'; -import TerminalDispatcher from '@/views/host/terminal/handler/terminal-dispatcher'; import TerminalTabManager from '@/views/host/terminal/handler/terminal-tab-manager'; +import TerminalSessionManager from '@/views/host/terminal/handler/terminal-session-manager'; // 暗色主题 export const DarkTheme = { @@ -30,8 +30,8 @@ export default defineStore('terminal', { displaySetting: {} as TerminalDisplaySetting, themeSchema: {} as TerminalThemeSchema }, - tabs: new TerminalTabManager(), - dispatcher: new TerminalDispatcher() + tabManager: new TerminalTabManager(), + sessionManager: new TerminalSessionManager() }), actions: { diff --git a/orion-ops-ui/src/store/modules/terminal/types.ts b/orion-ops-ui/src/store/modules/terminal/types.ts index 83016e58..5ce222b4 100644 --- a/orion-ops-ui/src/store/modules/terminal/types.ts +++ b/orion-ops-ui/src/store/modules/terminal/types.ts @@ -1,11 +1,11 @@ import type { Ref } from 'vue'; -import { Terminal } from 'xterm'; +import type { ITerminalTabManager, ITerminalSessionManager } from '@/views/host/terminal/types/terminal.type'; export interface TerminalState { isDarkTheme: Ref; preference: TerminalPreference; - tabs: ITerminalTabManager; - dispatcher: ITerminalDispatcher; + tabManager: ITerminalTabManager; + sessionManager: ITerminalSessionManager; } // 终端配置 @@ -58,59 +58,3 @@ export interface TerminalThemeSchema { [key: string]: unknown; } -// 终端 tab 元素 -export interface TerminalTabItem { - key: string; - title: string; - type: string; - - [key: string]: unknown; -} - -// 终端 tab 管理器定义 -export interface ITerminalTabManager { - // 当前 tab - active: string; - // 全部 tab - items: Array; - - // 点击 tab - clickTab: (key: string) => void; - // 删除 tab - deleteTab: (key: string) => void; - // 打开 tab - openTab: (tab: TerminalTabItem) => void; - // 清空 - clear: () => void; -} - -// 终端调度器 -export interface ITerminalDispatcher { - // 打开终端 - openTerminal: (record: any) => void; - // 注册终端处理器 - registerTerminalHandler: (tab: TerminalTabItem, handler: ITerminalHandler) => void; - // 发送消息 - onMessage: (session: string, value: string) => void; - - // 重置 - reset: () => void; -} - -// 终端处理器 -export interface ITerminalHandler { - inst: Terminal; - connected: boolean; - - // 连接 - connect: () => void; - // 设置是否可写 - setCanWrite: (canWrite: boolean) => void; - // 写入数据 - write: (value: string) => void; - // 自适应 - fit: () => void; - - // 关闭 - close: () => void; -} diff --git a/orion-ops-ui/src/views/host/terminal/components/layout/terminal-content.vue b/orion-ops-ui/src/views/host/terminal/components/layout/terminal-content.vue index ae6f4dfe..042fafc3 100644 --- a/orion-ops-ui/src/views/host/terminal/components/layout/terminal-content.vue +++ b/orion-ops-ui/src/views/host/terminal/components/layout/terminal-content.vue @@ -1,8 +1,8 @@