diff --git a/features/monitor/process.go b/features/monitor/process.go deleted file mode 100644 index 863ec866..00000000 --- a/features/monitor/process.go +++ /dev/null @@ -1,51 +0,0 @@ -package monitor - -import ( - "net/http" - - websocket2 "ems.agt/lib/websocket" - "ems.agt/restagent/config" - "github.com/gorilla/websocket" -) - -var ( - // 進程 - UriWs = config.UriPrefix + "/monitor/{apiVersion}/process/ws" -) - -var wsUpgrade = websocket.Upgrader{ - CheckOrigin: func(r *http.Request) bool { - return true - }, -} - -func ProcessWs(w http.ResponseWriter, r *http.Request) { - ws, err := wsUpgrade.Upgrade(w, r, nil) - if err != nil { - return - } - wsClient := websocket2.NewWsClient("processClient", ws) - go wsClient.Read() - go wsClient.Write() -} - -// @Tags Process -// @Summary Stop Process -// @Description 停止进程 -// @Param request body request.ProcessReq true "request" -// @Success 200 -// @Security ApiKeyAuth -// @Router /process/stop [post] -// @x-panel-log {"bodyKeys":["PID"],"paramKeys":[],"BeforeFuntions":[],"formatZH":"结束进程 [PID]","formatEN":"结束进程 [PID]"} -func StopProcess(w http.ResponseWriter, r *http.Request) { - // var req request.ProcessReq - // if err := c.ShouldBindJSON(&req); err != nil { - // helper.ErrorWithDetail(c, constant.CodeErrBadRequest, constant.ErrTypeInvalidParams, err) - // return - // } - // if err := processService.StopProcess(req); err != nil { - // helper.ErrorWithDetail(c, constant.CodeErrBadRequest, constant.ErrTypeInvalidParams, err) - // return - // } - // helper.SuccessWithOutData(c) -} diff --git a/features/monitor/psnet/psnet.go b/features/monitor/psnet/psnet.go new file mode 100644 index 00000000..8f38fcd8 --- /dev/null +++ b/features/monitor/psnet/psnet.go @@ -0,0 +1,62 @@ +package psnet + +import ( + "net/http" + + "ems.agt/lib/log" + "ems.agt/lib/services" + "ems.agt/lib/wsinfo" + "ems.agt/restagent/config" + "github.com/gorilla/websocket" + "github.com/shirou/gopsutil/process" +) + +var ( + // websockte通信 + UriWs = config.UriPrefix + "/monitor/{apiVersion}/psnet/ws" + // 停止进程 + UriStop = config.UriPrefix + "/monitor/{apiVersion}/psnet/stop" +) + +// 进程管理 +var wsUpgrade = websocket.Upgrader{ + CheckOrigin: func(r *http.Request) bool { + return true + }, +} + +// ProcessWs +func ProcessWs(w http.ResponseWriter, r *http.Request) { + ws, err := wsUpgrade.Upgrade(w, r, nil) + if err != nil { + return + } + wsClient := wsinfo.NewWsClient("processClient", ws) + go wsClient.Read() + go wsClient.Write() +} + +// 停止进程 {"PID":30040} +func StopProcess(w http.ResponseWriter, r *http.Request) { + // json 請求參數獲取 + var bodyArgs struct { + PID int32 `json:"PID" validate:"required"` + } + err := services.ShouldBindJSON(r, &bodyArgs) + if err != nil { + log.Error("io.ReadAll is failed:", err) + services.ResponseErrorWithJson(w, 400, err.Error()) + return + } + + proc, err := process.NewProcess(bodyArgs.PID) + if err != nil { + services.ResponseErrorWithJson(w, 400, err.Error()) + return + } + if err := proc.Kill(); err != nil { + services.ResponseErrorWithJson(w, 400, err.Error()) + return + } + services.ResponseStatusOK200Null(w) +} diff --git a/lib/websocket/client.go b/lib/wsinfo/client.go similarity index 97% rename from lib/websocket/client.go rename to lib/wsinfo/client.go index 368eeeee..36201cdd 100644 --- a/lib/websocket/client.go +++ b/lib/wsinfo/client.go @@ -1,4 +1,4 @@ -package websocket +package wsinfo import ( "github.com/gorilla/websocket" diff --git a/lib/websocket/process_data.go b/lib/wsinfo/process_data.go similarity index 99% rename from lib/websocket/process_data.go rename to lib/wsinfo/process_data.go index 95d17d23..5891540a 100644 --- a/lib/websocket/process_data.go +++ b/lib/wsinfo/process_data.go @@ -1,4 +1,4 @@ -package websocket +package wsinfo import ( "encoding/json"