This commit is contained in:
akrike
2025-07-06 16:08:41 +08:00
parent a05d9c3f03
commit ec9f1fefdb
4 changed files with 24 additions and 25 deletions

View File

@@ -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) {

View File

@@ -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 {

View File

@@ -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

View File

@@ -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",