From 9b4335a6282abac128eb084e75de313977ba61b5 Mon Sep 17 00:00:00 2001 From: Annie Huang Date: Tue, 1 Aug 2023 23:23:05 +0800 Subject: [PATCH 01/17] changed WidgetTerminal to TerminalPart, add xterm attach but seemed not fit to use on http://localhost:3000 --- app/package.json | 5 +- app/src/App.vue | 1 + app/src/components/TerminalPart.vue | 109 +++++++++++++++++++++++++++- yarn.lock | 15 ++++ 4 files changed, 126 insertions(+), 4 deletions(-) diff --git a/app/package.json b/app/package.json index 8cc8dbe..1ffe2ca 100644 --- a/app/package.json +++ b/app/package.json @@ -15,7 +15,10 @@ "@fortawesome/free-solid-svg-icons": "^6.4.0", "@fortawesome/vue-fontawesome": "^3.0.3", "axios": "^1.4.0", - "vue": "^3.3.4" + "vue": "^3.3.4", + "xterm": "^5.2.1", + "xterm-addon-attach": "^0.8.0", + "xterm-addon-fit": "^0.7.0" }, "devDependencies": { "@vitejs/plugin-vue": "^4.2.3", diff --git a/app/src/App.vue b/app/src/App.vue index c0fcaaf..12a0ac6 100644 --- a/app/src/App.vue +++ b/app/src/App.vue @@ -73,3 +73,4 @@ import VisualizationPart from './components/VisualizationPart.vue' + diff --git a/app/src/components/TerminalPart.vue b/app/src/components/TerminalPart.vue index 9ee24ee..9a1f340 100644 --- a/app/src/components/TerminalPart.vue +++ b/app/src/components/TerminalPart.vue @@ -3,9 +3,112 @@ + diff --git a/yarn.lock b/yarn.lock index 2a3ac1c..47e89d5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4887,6 +4887,21 @@ xmlhttprequest-ssl@~2.0.0: resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz#91360c86b914e67f44dce769180027c0da618c67" integrity sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A== +xterm-addon-attach@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/xterm-addon-attach/-/xterm-addon-attach-0.8.0.tgz#86e0ed08460efffb7d4bad74a57b600226594def" + integrity sha512-k8N5boSYn6rMJTTNCgFpiSTZ26qnYJf3v/nJJYexNO2sdAHDN3m1ivVQWVZ8CHJKKnZQw1rc44YP2NtgalWHfQ== + +xterm-addon-fit@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/xterm-addon-fit/-/xterm-addon-fit-0.7.0.tgz#b8ade6d96e63b47443862088f6670b49fb752c6a" + integrity sha512-tQgHGoHqRTgeROPnvmtEJywLKoC/V9eNs4bLLz7iyJr1aW/QFzRwfd3MGiJ6odJd9xEfxcW36/xRU47JkD5NKQ== + +xterm@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/xterm/-/xterm-5.2.1.tgz#b3fea7bdb55b9be1d4b31f4cd1091f26ac42afb8" + integrity sha512-cs5Y1fFevgcdoh2hJROMVIWwoBHD80P1fIP79gopLHJIE4kTzzblanoivxTiQ4+92YM9IxS36H1q0MxIJXQBcA== + y18n@^5.0.5: version "5.0.8" resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" From 0195305d0e97dd6758179cd5dc640b5fe7411f7e Mon Sep 17 00:00:00 2001 From: Annie Huang Date: Thu, 3 Aug 2023 00:04:36 +0800 Subject: [PATCH 02/17] tried several container id --- app/package.json | 1 + app/src/components/TerminalPart.vue | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/app/package.json b/app/package.json index 1ffe2ca..de08c19 100644 --- a/app/package.json +++ b/app/package.json @@ -15,6 +15,7 @@ "@fortawesome/free-solid-svg-icons": "^6.4.0", "@fortawesome/vue-fontawesome": "^3.0.3", "axios": "^1.4.0", + "socket.io-client": "^4.7.1", "vue": "^3.3.4", "xterm": "^5.2.1", "xterm-addon-attach": "^0.8.0", diff --git a/app/src/components/TerminalPart.vue b/app/src/components/TerminalPart.vue index 9a1f340..4bd0997 100644 --- a/app/src/components/TerminalPart.vue +++ b/app/src/components/TerminalPart.vue @@ -51,7 +51,15 @@ export default { lineHeight: 20, }, }) - const socket = new WebSocket('http://localhost:3000') + const wsHost = 'odyssey.wancat.cc' + // const wsHost = 'localhost:3000' + // const container = 'quest-helloworld-defaultUser-1690375754669' + // const container = '1690375754669' + const container = '64c1164a5b34af580963da6b' + // const container = '423ba17d5863' + // const container = 'dcb865c0e5a5 ' + const ws = `wss://${wsHost}/containers/${container}/attach/ws?stream=true` + const socket = new WebSocket(ws) const attachAddon = new AttachAddon(socket) // 创建terminal实例 term.loadAddon(attachAddon) From 577352e51d6d179fba8eac65c94e946265da3606 Mon Sep 17 00:00:00 2001 From: Annie Huang Date: Thu, 3 Aug 2023 20:46:09 +0800 Subject: [PATCH 03/17] connect to docker, trying to emit message --- app/src/components/TerminalPart.vue | 42 ++++++++++++++++++++--------- cleanup.sh | 0 2 files changed, 30 insertions(+), 12 deletions(-) mode change 100644 => 100755 cleanup.sh diff --git a/app/src/components/TerminalPart.vue b/app/src/components/TerminalPart.vue index 4bd0997..34709af 100644 --- a/app/src/components/TerminalPart.vue +++ b/app/src/components/TerminalPart.vue @@ -16,8 +16,10 @@ - - diff --git a/app/vite.config.js b/app/vite.config.js index 05c1740..1f7dfa2 100644 --- a/app/vite.config.js +++ b/app/vite.config.js @@ -4,4 +4,12 @@ import vue from '@vitejs/plugin-vue' // https://vitejs.dev/config/ export default defineConfig({ plugins: [vue()], + server: { + proxy: { + '/api': { + target: 'http://localhost:3000', // the server url + ws: true, + }, + }, + }, }) diff --git a/server/package.json b/server/package.json index 6a40895..5d5bab5 100644 --- a/server/package.json +++ b/server/package.json @@ -11,6 +11,7 @@ }, "dependencies": { "commander": "^11.0.0", + "cors": "^2.8.5", "dockerode": "^3.3.5", "express": "^4.18.2", "jsonwebtoken": "^9.0.1", diff --git a/server/src/api/socket.js b/server/src/api/socket.js index d1f33e5..a7df255 100644 --- a/server/src/api/socket.js +++ b/server/src/api/socket.js @@ -4,7 +4,11 @@ import Session from '../models/session.js' import { defaultUser, genSessionJWT } from '../utils/auth.js' export default (server) => { - const io = new Server(server) + const io = new Server(server, { + cors: { + origin: '*', + }, + }) io.use(async (socket, next) => { console.log('Authenticating...') diff --git a/server/src/index.js b/server/src/index.js index 4b5ad47..b63400d 100644 --- a/server/src/index.js +++ b/server/src/index.js @@ -3,6 +3,7 @@ import express from 'express' import http from 'http' import YAML from 'yaml' import swaggerUI from 'swagger-ui-express' +import cors from 'cors' import socketServer from './api/socket.js' import connectDB from './db.js' @@ -22,6 +23,11 @@ async function main() { const swaggerDocument = YAML.parse(file) app.use('/api-docs', swaggerUI.serve, swaggerUI.setup(swaggerDocument)) app.use(express.json()) + app.use( + cors({ + origin: '*', + }) + ) app.get('/', (req, res) => { res.send('Hello World!') diff --git a/yarn.lock b/yarn.lock index 47e89d5..e7d8450 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1602,7 +1602,7 @@ cookie@~0.4.1: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== -cors@~2.8.5: +cors@^2.8.5, cors@~2.8.5: version "2.8.5" resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== From 19303aad9054fde5e441a72e680951cbc438278e Mon Sep 17 00:00:00 2001 From: Annie Huang Date: Tue, 8 Aug 2023 21:14:16 +0800 Subject: [PATCH 05/17] fix --- app/src/components/TerminalPart.vue | 136 ++++++++++++++++++---------- server/src/api/socket.js | 19 ++-- 2 files changed, 99 insertions(+), 56 deletions(-) diff --git a/app/src/components/TerminalPart.vue b/app/src/components/TerminalPart.vue index 98baa6f..8064827 100644 --- a/app/src/components/TerminalPart.vue +++ b/app/src/components/TerminalPart.vue @@ -13,65 +13,101 @@