diff --git a/orion-visor-ui/src/views/asset/host-list/components/host-form-rdp.vue b/orion-visor-ui/src/views/asset/host-list/components/host-form-rdp.vue
index f4f58da0..614661df 100644
--- a/orion-visor-ui/src/views/asset/host-list/components/host-form-rdp.vue
+++ b/orion-visor-ui/src/views/asset/host-list/components/host-form-rdp.vue
@@ -152,17 +152,6 @@
@click="saveConfig">
保存
-
-
-
-
@@ -198,7 +187,6 @@
formRef,
formRules,
fetchHostConfig,
- testConnect,
saveConfig,
} = useHostConfigForm({
type: HostType.RDP.value,
diff --git a/orion-visor-ui/src/views/asset/host-list/components/host-form-ssh.vue b/orion-visor-ui/src/views/asset/host-list/components/host-form-ssh.vue
index 33367941..a864bc85 100644
--- a/orion-visor-ui/src/views/asset/host-list/components/host-form-ssh.vue
+++ b/orion-visor-ui/src/views/asset/host-list/components/host-form-ssh.vue
@@ -127,6 +127,8 @@
import { useDictStore } from '@/store';
import { sshAuthTypeKey, HostAuthType, HostType } from '../types/const';
import { sshFormRules } from '../types/form.rules';
+ import { Message } from '@arco-design/web-vue';
+ import { testHostConnect } from '@/api/asset/host';
import useHostConfigForm from '../types/use-host-config';
import HostIdentitySelector from '@/components/asset/host-identity/selector/index.vue';
import HostKeySelector from '@/components/asset/host-key/selector/index.vue';
@@ -144,7 +146,6 @@
formRef,
formRules,
fetchHostConfig,
- testConnect,
saveConfig,
} = useHostConfigForm({
type: HostType.SSH.value,
@@ -154,6 +155,23 @@
setLoading,
});
+ // 测试连接
+ const testConnect = async () => {
+ const error = await formRef.value.validate();
+ if (error) {
+ return;
+ }
+ try {
+ setLoading(true);
+ // 测试连接
+ await testHostConnect({ id: props.hostId, type: HostType.SSH.value });
+ Message.success('连接成功');
+ } catch (e) {
+ } finally {
+ setLoading(false);
+ }
+ };
+
onMounted(fetchHostConfig);
diff --git a/orion-visor-ui/src/views/asset/host-list/components/host-form-vnc.vue b/orion-visor-ui/src/views/asset/host-list/components/host-form-vnc.vue
index 330bb6df..ea6fa7e4 100644
--- a/orion-visor-ui/src/views/asset/host-list/components/host-form-vnc.vue
+++ b/orion-visor-ui/src/views/asset/host-list/components/host-form-vnc.vue
@@ -104,17 +104,6 @@
@click="saveConfig">
保存
-
-
-
-
@@ -150,7 +139,6 @@
formRef,
formRules,
fetchHostConfig,
- testConnect,
saveConfig,
} = useHostConfigForm({
type: HostType.VNC.value,
diff --git a/orion-visor-ui/src/views/asset/host-list/types/use-host-config.ts b/orion-visor-ui/src/views/asset/host-list/types/use-host-config.ts
index 34ff1af4..44f3c469 100644
--- a/orion-visor-ui/src/views/asset/host-list/types/use-host-config.ts
+++ b/orion-visor-ui/src/views/asset/host-list/types/use-host-config.ts
@@ -6,7 +6,6 @@ import type { FieldRule } from '@arco-design/web-vue';
import { Message } from '@arco-design/web-vue';
import { baseFormRules } from './form.rules';
import { encrypt } from '@/utils/rsa';
-import { testHostConnect } from '@/api/asset/host';
// 主机配置表单信息
export interface UseHostConfigFormOptions {
@@ -38,26 +37,6 @@ export default function useHostConfigForm(options: Use
}
};
- // 测试连接
- const testConnect = async () => {
- if (!formRef?.value) {
- return;
- }
- const error = await formRef.value.validate();
- if (error) {
- return;
- }
- try {
- setLoading(true);
- // 测试连接
- await testHostConnect({ id: hostId, type });
- Message.success('连接成功');
- } catch (e) {
- } finally {
- setLoading(false);
- }
- };
-
// 保存配置
const saveConfig = async () => {
if (!formRef?.value) {
@@ -93,7 +72,6 @@ export default function useHostConfigForm(options: Use
formRef,
formRules,
fetchHostConfig,
- testConnect,
saveConfig,
};
}
diff --git a/orion-visor-ui/src/views/terminal/types/const.ts b/orion-visor-ui/src/views/terminal/types/const.ts
index 9826c18d..a0f564d9 100644
--- a/orion-visor-ui/src/views/terminal/types/const.ts
+++ b/orion-visor-ui/src/views/terminal/types/const.ts
@@ -230,17 +230,27 @@ export const SshActionBarItems = [
// guacd 终端操作栏键
export const GuacdActionItemKeys = {
+ INFO: 'info',
DISPLAY: 'display',
COMBINATION_KEY: 'combinationKey',
+ TRIGGER_KEY: 'triggerKey',
CLIPBOARD: 'clipboard',
- UPLOAD: 'upload',
+ RDP_UPLOAD: 'rdpUpload',
+ SFTP_UPLOAD: 'sftpUpload',
+ OPEN_SFTP: 'openSftp',
SAVE_RDP: 'saveRdp',
DISCONNECT: 'disconnect',
+ RECONNECT: 'reconnect',
CLOSE: 'close',
};
// guacd 终端操作栏
export const GuacdActionBarItemMap = {
+ [GuacdActionItemKeys.INFO]: {
+ item: GuacdActionItemKeys.INFO,
+ icon: 'icon-info',
+ content: '会话信息',
+ },
[GuacdActionItemKeys.DISPLAY]: {
item: GuacdActionItemKeys.DISPLAY,
icon: 'icon-desktop',
@@ -251,15 +261,30 @@ export const GuacdActionBarItemMap = {
icon: 'icon-command',
content: '组合键',
},
+ [GuacdActionItemKeys.TRIGGER_KEY]: {
+ item: GuacdActionItemKeys.TRIGGER_KEY,
+ icon: 'icon-dice',
+ content: '长按键',
+ },
[GuacdActionItemKeys.CLIPBOARD]: {
item: GuacdActionItemKeys.CLIPBOARD,
icon: 'icon-paste',
content: '剪切板',
},
- [GuacdActionItemKeys.UPLOAD]: {
- item: GuacdActionItemKeys.UPLOAD,
+ [GuacdActionItemKeys.RDP_UPLOAD]: {
+ item: GuacdActionItemKeys.RDP_UPLOAD,
icon: 'icon-upload',
- content: '文件上传',
+ content: 'RDP 文件上传',
+ },
+ [GuacdActionItemKeys.SFTP_UPLOAD]: {
+ item: GuacdActionItemKeys.SFTP_UPLOAD,
+ icon: 'icon-folder-add',
+ content: 'SFTP 文件上传',
+ },
+ [GuacdActionItemKeys.OPEN_SFTP]: {
+ item: GuacdActionItemKeys.OPEN_SFTP,
+ icon: 'icon-folder',
+ content: '打开 SFTP',
},
[GuacdActionItemKeys.SAVE_RDP]: {
item: GuacdActionItemKeys.SAVE_RDP,
@@ -271,6 +296,11 @@ export const GuacdActionBarItemMap = {
icon: 'icon-stop',
content: '断开连接',
},
+ [GuacdActionItemKeys.RECONNECT]: {
+ item: GuacdActionItemKeys.RECONNECT,
+ icon: 'icon-refresh',
+ content: '重新连接',
+ },
[GuacdActionItemKeys.CLOSE]: {
item: GuacdActionItemKeys.CLOSE,
icon: 'icon-close',
@@ -280,21 +310,31 @@ export const GuacdActionBarItemMap = {
// 终端操作栏 - RDP
export const RdpActionBarItems = [
+ GuacdActionBarItemMap[GuacdActionItemKeys.INFO],
GuacdActionBarItemMap[GuacdActionItemKeys.DISPLAY],
GuacdActionBarItemMap[GuacdActionItemKeys.COMBINATION_KEY],
+ GuacdActionBarItemMap[GuacdActionItemKeys.TRIGGER_KEY],
GuacdActionBarItemMap[GuacdActionItemKeys.CLIPBOARD],
- GuacdActionBarItemMap[GuacdActionItemKeys.UPLOAD],
+ GuacdActionBarItemMap[GuacdActionItemKeys.RDP_UPLOAD],
+ GuacdActionBarItemMap[GuacdActionItemKeys.SFTP_UPLOAD],
+ GuacdActionBarItemMap[GuacdActionItemKeys.OPEN_SFTP],
GuacdActionBarItemMap[GuacdActionItemKeys.SAVE_RDP],
GuacdActionBarItemMap[GuacdActionItemKeys.DISCONNECT],
+ GuacdActionBarItemMap[GuacdActionItemKeys.RECONNECT],
GuacdActionBarItemMap[GuacdActionItemKeys.CLOSE],
];
// 终端操作栏 - VNC
export const VncActionBarItems = [
+ GuacdActionBarItemMap[GuacdActionItemKeys.INFO],
GuacdActionBarItemMap[GuacdActionItemKeys.DISPLAY],
GuacdActionBarItemMap[GuacdActionItemKeys.COMBINATION_KEY],
+ GuacdActionBarItemMap[GuacdActionItemKeys.TRIGGER_KEY],
GuacdActionBarItemMap[GuacdActionItemKeys.CLIPBOARD],
+ GuacdActionBarItemMap[GuacdActionItemKeys.SFTP_UPLOAD],
+ GuacdActionBarItemMap[GuacdActionItemKeys.OPEN_SFTP],
GuacdActionBarItemMap[GuacdActionItemKeys.DISCONNECT],
+ GuacdActionBarItemMap[GuacdActionItemKeys.RECONNECT],
GuacdActionBarItemMap[GuacdActionItemKeys.CLOSE],
];
@@ -562,6 +602,26 @@ export const GuacdCombinationKeyItems: Array = [
}
];
+// Guacd 键盘码
+export const GuacdKeyboardItems = [
+ {
+ key: 65507,
+ name: 'Ctrl',
+ },
+ {
+ key: 65505,
+ name: 'Shift',
+ },
+ {
+ key: 65513,
+ name: 'Alt',
+ },
+ {
+ key: 65515,
+ name: 'Windows',
+ },
+];
+
// backspace 字符
export const BACKSPACE_CHAR = String.fromCharCode(127);