From ec9f1fefdb9e542e9acfd11100fb86d81818db95 Mon Sep 17 00:00:00 2001 From: akrike <1625167628@qq.com> Date: Sun, 6 Jul 2025 16:08:41 +0800 Subject: [PATCH] 1 --- internal/app/api/proc.go | 4 +--- internal/app/api/ws.go | 6 ++--- internal/app/logic/process_logic.go | 35 +++++++++++++++-------------- internal/app/route/route.go | 4 ++-- 4 files changed, 24 insertions(+), 25 deletions(-) diff --git a/internal/app/api/proc.go b/internal/app/api/proc.go index b6dd83d..5c35af2 100644 --- a/internal/app/api/proc.go +++ b/internal/app/api/proc.go @@ -52,16 +52,14 @@ func (p *procApi) StartProcess(ctx *gin.Context, req model.ProcessUuidReq) (err return err1 } logic.ProcessCtlLogic.AddProcess(req.Uuid, proc) - rOk(ctx, "Operation successful!", nil) return nil - } + } if prod.State.State == 1 { return errors.New("process is currently running") } prod.ResetRestartTimes() err = prod.Start() return - } func (p *procApi) StartAllProcess(ctx *gin.Context, _ any) (err error) { diff --git a/internal/app/api/ws.go b/internal/app/api/ws.go index b69c7c5..677be9a 100644 --- a/internal/app/api/ws.go +++ b/internal/app/api/ws.go @@ -110,13 +110,13 @@ func (w *wsApi) WebsocketShareHandle(ctx *gin.Context, req model.WebsocketHandle } guestName := "guest-" + strconv.Itoa(int(data.ID)) // 构造访客用户名 if proc.HasWsConn(guestName) { - return errors.New("connection already exists; unable to establish a new one") + return errors.New("connection already exists") } if proc.State.State != 1 { - return errors.New("process is currently running") + return errors.New("process not is running") } if !proc.VerifyControl() { - return errors.New("insufficient permissions; please check your access rights") + return errors.New("insufficient permissions") } conn, err := upgrader.Upgrade(ctx.Writer, ctx.Request, nil) if err != nil { diff --git a/internal/app/logic/process_logic.go b/internal/app/logic/process_logic.go index a1a14b7..a97fdb1 100644 --- a/internal/app/logic/process_logic.go +++ b/internal/app/logic/process_logic.go @@ -114,24 +114,25 @@ func (p *processCtlLogic) getProcessInfoList(processConfiglist []model.Process) Name: v.Name, Uuid: v.Uuid, } - if value, ok := p.processMap.Load(v.Uuid); ok { - process := value.(*ProcessBase) - pi.State.Info = process.State.Info - pi.State.State = process.State.State - pi.StartTime = process.GetStartTimeFormat() - pi.User = process.GetUserString() - pi.Usage.Cpu = process.performanceStatus.cpu - pi.Usage.Mem = process.performanceStatus.mem - if config.CF.PerformanceCapacityDisplay { - pi.Usage.CpuCapacity = float64(runtime.NumCPU()) * 100.0 - pi.Usage.MemCapacity = float64(utils.UnwarpIgnore(mem.VirtualMemory()).Total >> 10) - } - pi.Usage.Time = process.performanceStatus.time - pi.TermType = process.Type() - pi.CgroupEnable = process.Config.cgroupEnable - pi.CpuLimit = process.Config.cpuLimit - pi.MemoryLimit = process.Config.memoryLimit + process, err := p.GetProcess(v.Uuid) + if err != nil { + continue } + pi.State.Info = process.State.Info + pi.State.State = process.State.State + pi.StartTime = process.GetStartTimeFormat() + pi.User = process.GetUserString() + pi.Usage.Cpu = process.performanceStatus.cpu + pi.Usage.Mem = process.performanceStatus.mem + if config.CF.PerformanceCapacityDisplay { + pi.Usage.CpuCapacity = float64(runtime.NumCPU()) * 100.0 + pi.Usage.MemCapacity = float64(utils.UnwarpIgnore(mem.VirtualMemory()).Total >> 10) + } + pi.Usage.Time = process.performanceStatus.time + pi.TermType = process.Type() + pi.CgroupEnable = process.Config.cgroupEnable + pi.CpuLimit = process.Config.cpuLimit + pi.MemoryLimit = process.Config.memoryLimit processInfoList = append(processInfoList, pi) } return processInfoList diff --git a/internal/app/route/route.go b/internal/app/route/route.go index 2e5c3db..272a037 100644 --- a/internal/app/route/route.go +++ b/internal/app/route/route.go @@ -70,7 +70,7 @@ func routePathInit(r *gin.Engine) { processGroup.PUT("", middle.OprPermission(constants.OPERATION_START), bind(api.ProcApi.StartProcess, Body)) processGroup.PUT("/all", bind(api.ProcApi.StartAllProcess, None)) processGroup.DELETE("/all", bind(api.ProcApi.KillAllProcess, None)) - processGroup.POST("/share", middle.RolePermission(constants.ROLE_ADMIN), bind(api.ProcApi.ProcessCreateShare, Body)) + processGroup.POST("/share", middle.RolePermission(constants.ROLE_ADMIN), bind(api.ProcApi.ProcessCreateShare, Query)) processGroup.GET("/control", middle.RolePermission(constants.ROLE_ROOT), middle.ProcessWaitCond.WaitTriggerMiddel, bind(api.ProcApi.ProcessControl, Query)) proConfigGroup := processGroup.Group("/config") @@ -176,7 +176,7 @@ func bind[T any](fn func(*gin.Context, T) error, bindOption int) func(*gin.Conte rErr(ctx, err) return } - if ctx.Writer.Status() == 0 { + if !ctx.Writer.Written() { ctx.JSON(200, gin.H{ "code": 0, "message": "success",