2
0
mirror of https://github.com/acepanel/panel.git synced 2026-02-04 11:27:17 +08:00

Merge remote-tracking branch 'origin/main'

This commit is contained in:
2026-02-04 02:27:26 +08:00
9 changed files with 155 additions and 53 deletions

View File

@@ -200,6 +200,7 @@ func (route *Http) Register(r *chi.Mux) {
r.Get("/update_info", route.home.UpdateInfo)
r.Post("/update", route.home.Update)
r.Post("/restart", route.home.Restart)
r.Post("/restart_server", route.home.RestartServer)
})
r.Route("/task", func(r chi.Router) {

View File

@@ -400,3 +400,13 @@ func (s *HomeService) Restart(w http.ResponseWriter, r *http.Request) {
tools.RestartPanel()
Success(w, nil)
}
func (s *HomeService) RestartServer(w http.ResponseWriter, r *http.Request) {
if s.taskRepo.HasRunningTask() {
Error(w, http.StatusInternalServerError, s.t.Get("background task is running, restart is prohibited, please try again later"))
return
}
tools.RestartServer()
Success(w, nil)
}

View File

@@ -88,6 +88,11 @@ func RestartPanel() {
_ = shell.ExecfAsync("sleep 1 && systemctl restart acepanel")
}
// RestartServer 重启服务器
func RestartServer() {
_ = shell.ExecfAsync("sleep 1 && reboot")
}
// IsChina 是否中国大陆
func IsChina() bool {
client := resty.New()

90
web/pnpm-lock.yaml generated
View File

@@ -128,7 +128,7 @@ importers:
version: 3.7.1
'@types/node':
specifier: ^24.0.0
version: 24.10.9
version: 24.10.10
'@types/node-forge':
specifier: ^1.3.14
version: 1.3.14
@@ -137,7 +137,7 @@ importers:
version: 66.6.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
'@vitejs/plugin-vue':
specifier: ^6.0.1
version: 6.0.4(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.27(typescript@5.9.3))
version: 6.0.4(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.27(typescript@5.9.3))
'@vue/eslint-config-prettier':
specifier: ^10.2.0
version: 10.2.0(eslint@9.39.2(jiti@2.6.1))(prettier@3.8.1)
@@ -185,7 +185,7 @@ importers:
version: 5.9.3
unocss:
specifier: ^66.5.4
version: 66.6.0(postcss@8.5.6)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
version: 66.6.0(postcss@8.5.6)(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
unplugin-auto-import:
specifier: ^21.0.0
version: 21.0.0(@vueuse/core@14.2.0(vue@3.5.27(typescript@5.9.3)))
@@ -197,16 +197,16 @@ importers:
version: 31.0.0(vue@3.5.27(typescript@5.9.3))
vite:
specifier: ^7.1.11
version: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
version: 7.3.1(@types/node@24.10.10)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
vite-plugin-html:
specifier: ^3.2.2
version: 3.2.2(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
version: 3.2.2(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
vite-plugin-mock:
specifier: ^3.0.2
version: 3.0.2(esbuild@0.27.2)(mockjs@1.1.0)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
version: 3.0.2(esbuild@0.27.2)(mockjs@1.1.0)(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
vite-plugin-vue-devtools:
specifier: ^8.0.3
version: 8.0.5(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.27(typescript@5.9.3))
version: 8.0.5(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.27(typescript@5.9.3))
vue-tsc:
specifier: ^3.1.1
version: 3.2.4(typescript@5.9.3)
@@ -1089,8 +1089,8 @@ packages:
'@types/node-forge@1.3.14':
resolution: {integrity: sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==}
'@types/node@24.10.9':
resolution: {integrity: sha512-ne4A0IpG3+2ETuREInjPNhUGis1SFjv1d5asp8MzEAGtOZeTeHVDOYqOgqfhvseqg/iXty2hjBf1zAOb7RNiNw==}
'@types/node@24.10.10':
resolution: {integrity: sha512-+0/4J266CBGPUq/ELg7QUHhN25WYjE0wYTPSQJn1xeu8DOlIOPxXxrNGiLmfAWl7HMMgWFWXpt9IDjMWrF5Iow==}
'@types/trusted-types@2.0.7':
resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==}
@@ -4493,9 +4493,9 @@ snapshots:
'@types/node-forge@1.3.14':
dependencies:
'@types/node': 24.10.9
'@types/node': 24.10.10
'@types/node@24.10.9':
'@types/node@24.10.10':
dependencies:
undici-types: 7.16.0
@@ -4595,13 +4595,13 @@ snapshots:
'@typescript-eslint/types': 8.54.0
eslint-visitor-keys: 4.2.1
'@unocss/astro@66.6.0(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))':
'@unocss/astro@66.6.0(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))':
dependencies:
'@unocss/core': 66.6.0
'@unocss/reset': 66.6.0
'@unocss/vite': 66.6.0(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
'@unocss/vite': 66.6.0(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
optionalDependencies:
vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
vite: 7.3.1(@types/node@24.10.10)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
'@unocss/cli@66.6.0':
dependencies:
@@ -4752,7 +4752,7 @@ snapshots:
dependencies:
'@unocss/core': 66.6.0
'@unocss/vite@66.6.0(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))':
'@unocss/vite@66.6.0(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))':
dependencies:
'@jridgewell/remapping': 2.3.5
'@unocss/config': 66.6.0
@@ -4763,16 +4763,16 @@ snapshots:
pathe: 2.0.3
tinyglobby: 0.2.15
unplugin-utils: 0.3.1
vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
vite: 7.3.1(@types/node@24.10.10)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
'@vavt/copy2clipboard@1.0.3': {}
'@vavt/util@2.1.1': {}
'@vitejs/plugin-vue@6.0.4(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.27(typescript@5.9.3))':
'@vitejs/plugin-vue@6.0.4(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.27(typescript@5.9.3))':
dependencies:
'@rolldown/pluginutils': 1.0.0-rc.2
vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
vite: 7.3.1(@types/node@24.10.10)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
vue: 3.5.27(typescript@5.9.3)
'@volar/language-core@2.4.27':
@@ -4864,14 +4864,14 @@ snapshots:
dependencies:
'@vue/devtools-kit': 8.0.5
'@vue/devtools-core@8.0.5(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.27(typescript@5.9.3))':
'@vue/devtools-core@8.0.5(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.27(typescript@5.9.3))':
dependencies:
'@vue/devtools-kit': 8.0.5
'@vue/devtools-shared': 8.0.5
mitt: 3.0.1
nanoid: 5.1.6
pathe: 2.0.3
vite-hot-client: 2.1.0(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
vite-hot-client: 2.1.0(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
vue: 3.5.27(typescript@5.9.3)
transitivePeerDependencies:
- vite
@@ -6925,9 +6925,9 @@ snapshots:
universalify@2.0.1: {}
unocss@66.6.0(postcss@8.5.6)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)):
unocss@66.6.0(postcss@8.5.6)(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)):
dependencies:
'@unocss/astro': 66.6.0(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
'@unocss/astro': 66.6.0(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
'@unocss/cli': 66.6.0
'@unocss/core': 66.6.0
'@unocss/postcss': 66.6.0(postcss@8.5.6)
@@ -6945,9 +6945,9 @@ snapshots:
'@unocss/transformer-compile-class': 66.6.0
'@unocss/transformer-directives': 66.6.0
'@unocss/transformer-variant-group': 66.6.0
'@unocss/vite': 66.6.0(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
'@unocss/vite': 66.6.0(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
optionalDependencies:
vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
vite: 7.3.1(@types/node@24.10.10)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
transitivePeerDependencies:
- postcss
- supports-color
@@ -7025,17 +7025,17 @@ snapshots:
evtd: 0.2.4
vue: 3.5.27(typescript@5.9.3)
vite-dev-rpc@1.1.0(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)):
vite-dev-rpc@1.1.0(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)):
dependencies:
birpc: 2.9.0
vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
vite-hot-client: 2.1.0(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
vite: 7.3.1(@types/node@24.10.10)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
vite-hot-client: 2.1.0(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
vite-hot-client@2.1.0(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)):
vite-hot-client@2.1.0(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)):
dependencies:
vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
vite: 7.3.1(@types/node@24.10.10)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
vite-plugin-html@3.2.2(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)):
vite-plugin-html@3.2.2(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)):
dependencies:
'@rollup/pluginutils': 4.2.1
colorette: 2.0.20
@@ -7049,9 +7049,9 @@ snapshots:
html-minifier-terser: 6.1.0
node-html-parser: 5.4.2
pathe: 0.2.0
vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
vite: 7.3.1(@types/node@24.10.10)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
vite-plugin-inspect@11.3.3(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)):
vite-plugin-inspect@11.3.3(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)):
dependencies:
ansis: 4.2.0
debug: 4.4.3
@@ -7061,12 +7061,12 @@ snapshots:
perfect-debounce: 2.1.0
sirv: 3.0.2
unplugin-utils: 0.3.1
vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
vite-dev-rpc: 1.1.0(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
vite: 7.3.1(@types/node@24.10.10)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
vite-dev-rpc: 1.1.0(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
transitivePeerDependencies:
- supports-color
vite-plugin-mock@3.0.2(esbuild@0.27.2)(mockjs@1.1.0)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)):
vite-plugin-mock@3.0.2(esbuild@0.27.2)(mockjs@1.1.0)(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)):
dependencies:
bundle-require: 4.2.1(esbuild@0.27.2)
chokidar: 3.6.0
@@ -7077,25 +7077,25 @@ snapshots:
mockjs: 1.1.0
path-to-regexp: 6.3.0
picocolors: 1.1.1
vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
vite: 7.3.1(@types/node@24.10.10)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
transitivePeerDependencies:
- supports-color
vite-plugin-vue-devtools@8.0.5(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.27(typescript@5.9.3)):
vite-plugin-vue-devtools@8.0.5(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.27(typescript@5.9.3)):
dependencies:
'@vue/devtools-core': 8.0.5(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.27(typescript@5.9.3))
'@vue/devtools-core': 8.0.5(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.27(typescript@5.9.3))
'@vue/devtools-kit': 8.0.5
'@vue/devtools-shared': 8.0.5
sirv: 3.0.2
vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
vite-plugin-inspect: 11.3.3(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
vite-plugin-vue-inspector: 5.3.2(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
vite: 7.3.1(@types/node@24.10.10)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
vite-plugin-inspect: 11.3.3(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
vite-plugin-vue-inspector: 5.3.2(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
transitivePeerDependencies:
- '@nuxt/kit'
- supports-color
- vue
vite-plugin-vue-inspector@5.3.2(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)):
vite-plugin-vue-inspector@5.3.2(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)):
dependencies:
'@babel/core': 7.29.0
'@babel/plugin-proposal-decorators': 7.29.0(@babel/core@7.29.0)
@@ -7106,11 +7106,11 @@ snapshots:
'@vue/compiler-dom': 3.5.27
kolorist: 1.8.0
magic-string: 0.30.21
vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
vite: 7.3.1(@types/node@24.10.10)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
transitivePeerDependencies:
- supports-color
vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2):
vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2):
dependencies:
esbuild: 0.27.2
fdir: 6.5.0(picomatch@4.0.3)
@@ -7119,7 +7119,7 @@ snapshots:
rollup: 4.57.1
tinyglobby: 0.2.15
optionalDependencies:
'@types/node': 24.10.9
'@types/node': 24.10.10
fsevents: 2.3.3
jiti: 2.6.1
sass: 1.97.3

View File

@@ -21,5 +21,7 @@ export default {
// 更新面板
update: (): any => http.Post('/home/update'),
// 重启面板
restart: (): any => http.Post('/home/restart')
restart: (): any => http.Post('/home/restart'),
// 重启服务器
restartServer: (): any => http.Post('/home/restart_server')
}

View File

@@ -5082,6 +5082,22 @@ msgstr "Panel restarting..."
msgid "Panel restarted successfully"
msgstr "Panel restarted successfully"
#: src/views/home/IndexView.vue:338
msgid "Server restarting..."
msgstr "Server restarting..."
#: src/views/home/IndexView.vue:344
msgid "Restart Panel"
msgstr "Restart Panel"
#: src/views/home/IndexView.vue:348
msgid "Restart Server"
msgstr "Restart Server"
#: src/views/home/IndexView.vue:362
msgid "Are you sure you want to restart the server? This will disconnect all connections."
msgstr "Are you sure you want to restart the server? This will disconnect all connections."
#: src/views/home/IndexView.vue:344
msgid "Current version is the latest"
msgstr "Current version is the latest"

View File

@@ -4845,6 +4845,22 @@ msgstr "面板重启中……"
msgid "Panel restarted successfully"
msgstr "面板重启成功"
#: src/views/home/IndexView.vue:338
msgid "Server restarting..."
msgstr "服务器重启中……"
#: src/views/home/IndexView.vue:344
msgid "Restart Panel"
msgstr "重启面板"
#: src/views/home/IndexView.vue:348
msgid "Restart Server"
msgstr "重启服务器"
#: src/views/home/IndexView.vue:362
msgid "Are you sure you want to restart the server? This will disconnect all connections."
msgstr "您确定要重启服务器吗?这将断开所有连接。"
#: src/views/home/IndexView.vue:344
msgid "Current version is the latest"
msgstr "当前版本是最新版本"

View File

@@ -4846,6 +4846,22 @@ msgstr "面板重啟中……"
msgid "Panel restarted successfully"
msgstr "面板重啟成功"
#: src/views/home/IndexView.vue:338
msgid "Server restarting..."
msgstr "伺服器重啟中……"
#: src/views/home/IndexView.vue:344
msgid "Restart Panel"
msgstr "重啟面板"
#: src/views/home/IndexView.vue:348
msgid "Restart Server"
msgstr "重啟伺服器"
#: src/views/home/IndexView.vue:362
msgid "Are you sure you want to restart the server? This will disconnect all connections."
msgstr "您確定要重啟伺服器嗎?這將斷開所有連線。"
#: src/views/home/IndexView.vue:344
msgid "Current version is the latest"
msgstr "當前版本是最新版本"

View File

@@ -13,7 +13,7 @@ import {
} from 'echarts/components'
import { use } from 'echarts/core'
import { CanvasRenderer } from 'echarts/renderers'
import { NButton, NPopconfirm, useThemeVars } from 'naive-ui'
import { NButton, NDropdown, useThemeVars } from 'naive-ui'
import { useGettext } from 'vue3-gettext'
import draggable from 'vuedraggable'
@@ -336,6 +336,33 @@ const handleRestartPanel = () => {
})
}
const showRestartServerConfirm = ref(false)
const handleRestartServer = () => {
clearInterval(homeInterval)
window.$message.loading($gettext('Server restarting...'))
useRequest(home.restartServer())
}
const restartOptions = computed(() => [
{
label: $gettext('Restart Panel'),
key: 'panel'
},
{
label: $gettext('Restart Server'),
key: 'server'
}
])
const handleRestartSelect = (key: string) => {
if (key === 'panel') {
handleRestartPanel()
} else if (key === 'server') {
showRestartServerConfirm.value = true
}
}
const handleUpdate = () => {
useRequest(home.checkUpdate()).onSuccess(({ data }) => {
if (data.update) {
@@ -470,12 +497,9 @@ if (import.meta.hot) {
<n-button type="primary" @click="toSponsor">
{{ $gettext('Sponsor Support') }}
</n-button>
<n-popconfirm @positive-click="handleRestartPanel">
<template #trigger>
<n-button type="warning"> {{ $gettext('Restart') }} </n-button>
</template>
{{ $gettext('Are you sure you want to restart the panel?') }}
</n-popconfirm>
<n-dropdown :options="restartOptions" @select="handleRestartSelect">
<n-button type="warning"> {{ $gettext('Restart') }} </n-button>
</n-dropdown>
<n-button type="info" @click="handleUpdate"> {{ $gettext('Update') }} </n-button>
</n-flex>
</template>
@@ -895,6 +919,18 @@ if (import.meta.hot) {
</n-space>
</div>
</app-page>
<!-- 服务器重启确认弹窗 -->
<n-modal
v-model:show="showRestartServerConfirm"
preset="dialog"
type="warning"
:title="$gettext('Restart Server')"
:content="$gettext('Are you sure you want to restart the server? This will disconnect all connections.')"
:positive-text="$gettext('Confirm')"
:negative-text="$gettext('Cancel')"
@positive-click="handleRestartServer"
/>
</template>
<style scoped>