diff --git a/web-ui/arthasWebConsole/.env.tunnel b/web-ui/arthasWebConsole/.env.tunnel
new file mode 100644
index 000000000..5aaf1f490
--- /dev/null
+++ b/web-ui/arthasWebConsole/.env.tunnel
@@ -0,0 +1,2 @@
+# NODE_ENV=production
+VITE_AGENT=true
\ No newline at end of file
diff --git a/web-ui/arthasWebConsole/.env.ui b/web-ui/arthasWebConsole/.env.ui
new file mode 100644
index 000000000..04da6f0fd
--- /dev/null
+++ b/web-ui/arthasWebConsole/.env.ui
@@ -0,0 +1,2 @@
+# NODE_ENV=production
+VITE_AGENT=false
\ No newline at end of file
diff --git a/web-ui/arthasWebConsole/package.json b/web-ui/arthasWebConsole/package.json
index 1b8e5e03d..f8032dde4 100644
--- a/web-ui/arthasWebConsole/package.json
+++ b/web-ui/arthasWebConsole/package.json
@@ -3,8 +3,10 @@
"private": false,
"version": "0.1.4",
"scripts": {
- "dev": "vite --port 8000",
- "build": "vue-tsc --noEmit && vite build",
+ "dev": "vite --port 8000 --mode ui",
+ "dev:tunnel": "vite --port 8000 --mode tunnel",
+ "build": "vue-tsc --noEmit && vite build --mode ui",
+ "build:tunnel": "vue-tsc --noEmit && vite build --mode tunnel",
"preview": "vite preview"
},
"dependencies": {
@@ -31,6 +33,6 @@
"tailwindcss": "^3.1.4",
"typescript": "^4.7.4",
"vite": "^2.9.9",
- "vue-tsc": "^0.34.7"
+ "vue-tsc": "1.0.8"
}
}
diff --git a/web-ui/arthasWebConsole/src/App.vue b/web-ui/arthasWebConsole/src/App.vue
index a2d4481d5..0e6ed4adf 100644
--- a/web-ui/arthasWebConsole/src/App.vue
+++ b/web-ui/arthasWebConsole/src/App.vue
@@ -2,7 +2,7 @@
import { onMounted, ref } from "vue";
import { Terminal } from "xterm"
import { FitAddon } from 'xterm-addon-fit';
-import {WebglAddon} from "xterm-addon-webgl"
+import { WebglAddon } from "xterm-addon-webgl"
let ws: WebSocket | undefined;
@@ -14,9 +14,11 @@ const ip = ref("")
const port = ref('')
const iframe = ref(true)
const fullSc = ref(true)
+const agentID = ref('')
+const isTunnel = import.meta.env.VITE_AGENT === 'true'
const fitAddon = new FitAddon();
const webglAddon = new WebglAddon();
-let xterm = new Terminal({allowProposedApi: true})
+let xterm = new Terminal({ allowProposedApi: true })
onMounted(() => {
ip.value = getUrlParam('ip') ?? window.location.hostname;
@@ -27,7 +29,7 @@ onMounted(() => {
startConnect(true);
window.addEventListener('resize', function () {
if (ws !== undefined && ws !== null) {
- const {cols, rows} = fitAddon.proposeDimensions()!
+ const { cols, rows } = fitAddon.proposeDimensions()!
ws.send(JSON.stringify({ action: 'resize', cols, rows: rows }));
fitAddon.fit();
}
@@ -56,7 +58,7 @@ function initWs(silent: boolean) {
let scrollback = getUrlParam('scrollback') ?? '0';
- const {cols, rows} = initXterm(scrollback)
+ const { cols, rows } = initXterm(scrollback)
xterm.onData(function (data) {
ws?.send(JSON.stringify({ action: 'read', data: data }))
});
@@ -85,7 +87,7 @@ function initXterm(scrollback: string) {
scrollback: isValidNumber(scrollNumber) ? scrollNumber : DEFAULT_SCROLL_BACK
});
xterm.loadAddon(fitAddon)
-
+
xterm.open(document.getElementById('terminal')!);
xterm.loadAddon(webglAddon)
@@ -136,8 +138,8 @@ function disconnect() {
function xtermFullScreen() {
var ele = document.getElementById('terminal-card')!;
requestFullScreen(ele);
- ele.onfullscreenchange = (e:Event)=>{
- fitAddon.fit()
+ ele.onfullscreenchange = (e: Event) => {
+ fitAddon.fit()
}
}
@@ -162,8 +164,8 @@ function requestFullScreen(element: HTMLElement) {