From 208aaba6722ca7d27785c8dff1cc6e20140c86d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E6=9C=B1?= <10714957+xiao-zhu245@user.noreply.gitee.com> Date: Tue, 8 Jul 2025 11:51:05 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 125 + README.md | 12 + client/index.html | 102 + client/package-lock.json | 5121 +++++++++++++ client/package.json | 43 + client/postcss.config.js | 6 + client/src/App.tsx | 103 + client/src/components/Layout.tsx | 173 + client/src/components/LoadingSpinner.tsx | 33 + .../src/components/NotificationContainer.tsx | 75 + client/src/index.css | 171 + client/src/main.tsx | 18 + client/src/pages/HomePage.tsx | 287 + client/src/pages/LoginPage.tsx | 165 + client/src/pages/SettingsPage.tsx | 486 ++ client/src/pages/TerminalPage.tsx | 389 + client/src/stores/authStore.ts | 185 + client/src/stores/notificationStore.ts | 37 + client/src/stores/themeStore.ts | 72 + client/src/types/index.ts | 200 + client/src/utils/api.ts | 276 + client/src/utils/socket.ts | 233 + client/tailwind.config.js | 128 + client/tsconfig.json | 31 + client/tsconfig.node.json | 10 + client/vite.config.ts | 31 + package-lock.json | 373 + package.json | 21 + server/.env.example | 62 + server/PTY/pty_linux_x64 | Bin 0 -> 2654360 bytes server/PTY/pty_win32_x64.exe | Bin 0 -> 3628544 bytes server/PTY/介绍.md | 67 + server/package-lock.json | 6493 +++++++++++++++++ server/package.json | 42 + server/src/index.ts | 261 + server/src/middleware/auth.ts | 78 + server/src/modules/auth/AuthManager.ts | 323 + server/src/modules/config/ConfigManager.ts | 152 + server/src/modules/game/GameManager.ts | 765 ++ server/src/modules/system/SystemManager.ts | 684 ++ .../src/modules/terminal/TerminalManager.ts | 382 + server/src/routes/auth.ts | 203 + server/src/routes/files.ts | 606 ++ server/src/routes/games.ts | 472 ++ server/src/routes/index.ts | 35 + server/src/routes/system.ts | 515 ++ server/src/routes/terminal.ts | 307 + server/src/utils/logger.ts | 177 + server/tsconfig.json | 34 + 报错 | 24 + 50 files changed, 20588 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 client/index.html create mode 100644 client/package-lock.json create mode 100644 client/package.json create mode 100644 client/postcss.config.js create mode 100644 client/src/App.tsx create mode 100644 client/src/components/Layout.tsx create mode 100644 client/src/components/LoadingSpinner.tsx create mode 100644 client/src/components/NotificationContainer.tsx create mode 100644 client/src/index.css create mode 100644 client/src/main.tsx create mode 100644 client/src/pages/HomePage.tsx create mode 100644 client/src/pages/LoginPage.tsx create mode 100644 client/src/pages/SettingsPage.tsx create mode 100644 client/src/pages/TerminalPage.tsx create mode 100644 client/src/stores/authStore.ts create mode 100644 client/src/stores/notificationStore.ts create mode 100644 client/src/stores/themeStore.ts create mode 100644 client/src/types/index.ts create mode 100644 client/src/utils/api.ts create mode 100644 client/src/utils/socket.ts create mode 100644 client/tailwind.config.js create mode 100644 client/tsconfig.json create mode 100644 client/tsconfig.node.json create mode 100644 client/vite.config.ts create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 server/.env.example create mode 100644 server/PTY/pty_linux_x64 create mode 100644 server/PTY/pty_win32_x64.exe create mode 100644 server/PTY/介绍.md create mode 100644 server/package-lock.json create mode 100644 server/package.json create mode 100644 server/src/index.ts create mode 100644 server/src/middleware/auth.ts create mode 100644 server/src/modules/auth/AuthManager.ts create mode 100644 server/src/modules/config/ConfigManager.ts create mode 100644 server/src/modules/game/GameManager.ts create mode 100644 server/src/modules/system/SystemManager.ts create mode 100644 server/src/modules/terminal/TerminalManager.ts create mode 100644 server/src/routes/auth.ts create mode 100644 server/src/routes/files.ts create mode 100644 server/src/routes/games.ts create mode 100644 server/src/routes/index.ts create mode 100644 server/src/routes/system.ts create mode 100644 server/src/routes/terminal.ts create mode 100644 server/src/utils/logger.ts create mode 100644 server/tsconfig.json create mode 100644 报错 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..eb35989 --- /dev/null +++ b/.gitignore @@ -0,0 +1,125 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +panel/public/ +*.code-workspace +data/ +dist/ +out/ +lib/ +production/ +.DS_Store +production-code/ +test.js +.idea/ + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov +error + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# TypeScript v1 declaration files +typings/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env +.env.test + +# parcel-bundler cache (https://parceljs.org/) +.cache + +# Next.js build output +.next + +# Nuxt.js build / generate output +.nuxt +dist + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and *not* Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port +workspace.code-workspace +src/public/1.png + +# IntelliJ Idea project files +/.idea/* +*/.idea/* + +.turbo +参考文件/ \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..91cab2d --- /dev/null +++ b/README.md @@ -0,0 +1,12 @@ +使用React框架写一个游戏面板,后端为node.js 目前只需要三个页面即可 首页 终端(需要实现功能) 设置 要同时兼容Windows和Linux +目前后端已经存在了,你需要写一个美观漂亮并且符合游戏风格的面板 +要支持全局深色和浅色模式更改 +# 配置文件 +统一保存在 server/data 目录下 + +# 终端 +需要做成拓展性很强,因为在后续功能需要调用此终端 需要做到灵活调用,并且终端需要在刷新网页时仍然为刷新网页前的状态和所有命令记录,由于后端pty已经是一个编译好的模块可以直接通过进程获取具体信息 具体你可以查看后端代码 +要支持终端的所有交互 + +# 登录 +需要实现用户登录,jwt密钥不要采用硬编 而是通过每次启动后随机生成到配置文件 \ No newline at end of file diff --git a/client/index.html b/client/index.html new file mode 100644 index 0000000..5503390 --- /dev/null +++ b/client/index.html @@ -0,0 +1,102 @@ + + +
+ + + ++ {user?.username} +
++ {user?.role === 'admin' ? '管理员' : '用户'} +
++ {text} +
+ )} ++ {notification.message} +
++ GSM3 游戏服务器管理面板 - 让游戏服务器管理变得简单 +
+操作系统
+{systemInfo.platform}
+架构
+{systemInfo.arch}
+主机名
+{systemInfo.hostname}
+Node.js
+{systemInfo.nodeVersion}
++ {formatUptime(systemStats.uptime)} +
++ 最后更新: {new Date(systemStats.timestamp).toLocaleString()} +
++ 游戏服务器管理面板 +
++ GSM3 游戏服务器管理面板 v1.0.0 +
++ 自定义您的GSM3游戏面板体验 +
+选择浅色或深色主题
++ 当前主题: {theme === 'dark' ? '深色模式' : '浅色模式'} +
+{user?.username}
++ {user?.role === 'admin' ? '管理员' : '普通用户'} +
+保存或重置您的设置
+暂无终端会话
+ +• 支持多终端会话,可以同时运行多个终端
+• 终端会话在页面刷新后会自动恢复
+• 支持全屏模式,提供更好的操作体验
+• 支持所有标准终端操作和快捷键
+R@5zS|U7H|}&%^RIiKumg
z=sU+coc>MwvJV!?O&MJbDl|R~t>xT}sJ+p{fep%}Klyx5R0}INed6`Q5E4!#W|@f(
zszl*J>cu)W8>vDyAdVecMqkxEAt=8A-d<(E_b^zwJyV4ofc{c?mrp)
z=tM0h-?UoJgd&{g#^#jiq+i6o=xnMp_FVlIx=_6h=UY%6zxl>50?=t|Y}DFP05=iB{V^6s
z&S3seOpI2l;-G#TMudzG?O7Ho&J5;{QW<+G`%C48tyzqHYdnz*omO`d4DO(*#!bid
z&+rR>I4cA96F^r+tNhP`&DDhkd9W@J@tdy@aRG^xm27Uv#pfr@e1j8pJhN9ViY&!d
zA?n
H2i^y!kd(XW(A)>^d@!Vh|-Va_iw>|
zabS83)|b@Ev8*Vl_6Hm}2ioqtZIgOJNXvH~05xX<=&P_|skOnLS%TFB4{<5QWuGqj
zGi1Z~@5S-&ATt)%#vljqq;Ex*V<}d#nuqI|kf-QMRkV|yig6Y#bgXp;3uJOwU!nl1
zNw+wbDW|BFTo@jNp~tnJ5o^eYTM9vrK(ds_hRJz2<=aj>Vt&O|AmChq%l1`%5DJAi=HMz4
z`<*Gna7#TZvC(Vm;N{Nap|U++7*3yor12P_ORG{vaDB-@
EOnx9vi5NK?I&Nv!^YFp>OR^
zT4qQ8HHfg88^d8S`x32(=Z5<4eaHY`mIE>f>u~^v9$BYE96#j(D?*JX
P
z
3d<;Vmuu>s~1WDp$J5g(2uL8E1MNO
zET4E36#fXO&&lU#;`Lbd{B|S8SO{L52KhNYn~kTo&kz>ib}XC@@Bx8!3K_E-xS8%r
z)F=bL1i
bK5o2e@{fi8^W
z*0*5%9WC$;F^#h(#|wj($F6BN9OJEU>{5R?c5MM%qaChM-OklD?L`T5@~?Qud3^0&
z{#pKn^rxCX2LHx#(FIQo>kt-Wzk0DN#u)x#_+@fk7barlo2$CZU$KF2PDh)A>leTY
zls)BC44QWqXuMf|tolC-YRs3N1&*-YR$K
KkL)Ft)Haj;IJ!!RUYhEczEQS?aHqjtoL>sZKRNQI
zPl4>PHYf1-!C>INHBv)QHruQCVP-8AxBqnpRYi)kmNkr}L^BObb`Qtw^sAx=s-iD+
z!oos&LVR+cOP38e1*z{3Au2Cn5A1_gs`WKoy6DH3#}*B!4WV4y617^UQzpg21DsB*
zy5BSUl(Pzj4uOb;wRDa3WR4%vwQyQ`j$ltMI_zHbGV=g=czbVCNoR+5n-a25mni{3
z#*v