From 15b324a4362230a5b95b100e6ec3093ce4887f9b Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Fri, 18 Aug 2023 11:01:35 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A3=80=E6=9F=A5ip=E7=AB=AF=E5=8F=A3=E8=AF=B7?= =?UTF-8?q?=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- features/monitor/psnet/psnet.go | 30 ++++++++++++++++++++++++++++++ lib/routes/routes.go | 1 + 2 files changed, 31 insertions(+) diff --git a/features/monitor/psnet/psnet.go b/features/monitor/psnet/psnet.go index fb4646c5..3dfa56b0 100644 --- a/features/monitor/psnet/psnet.go +++ b/features/monitor/psnet/psnet.go @@ -1,7 +1,10 @@ package psnet import ( + "fmt" + "net" "net/http" + "time" "ems.agt/lib/log" "ems.agt/lib/services" @@ -16,6 +19,9 @@ var ( UriWs = config.DefaultUriPrefix + "/monitor/{apiVersion}/psnet/ws" // 停止进程 UriStop = config.DefaultUriPrefix + "/monitor/{apiVersion}/psnet/stop" + + // 检查ip端口请求 + UriPing = config.DefaultUriPrefix + "/monitor/{apiVersion}/psnet/ping" ) // 进程管理 @@ -60,3 +66,27 @@ func StopProcess(w http.ResponseWriter, r *http.Request) { } services.ResponseStatusOK200Null(w) } + +// 检查ip端口请求 +func Ping(w http.ResponseWriter, r *http.Request) { + // json 請求參數獲取 + var bodyArgs struct { + Host string `json:"host" validate:"required"` + Port string `json:"port" validate:"required"` + } + err := services.ShouldBindJSON(r, &bodyArgs) + if err != nil { + log.Error("io.ReadAll is failed:", err) + services.ResponseErrorWithJson(w, 400, err.Error()) + return + } + + conn, err := net.DialTimeout("tcp", fmt.Sprintf("%s:%s", bodyArgs.Host, bodyArgs.Port), 3*time.Second) + if err != nil { + services.ResponseErrorWithJson(w, 400, err.Error()) + return + } + defer conn.Close() + services.ResponseStatusOK200Null(w) + +} diff --git a/lib/routes/routes.go b/lib/routes/routes.go index 40af722b..b1a72d1c 100644 --- a/lib/routes/routes.go +++ b/lib/routes/routes.go @@ -223,6 +223,7 @@ func init() { // 进程网络 Register("GET", psnet.UriWs, psnet.ProcessWs, nil) Register("POST", psnet.UriStop, psnet.StopProcess, nil) + Register("POST", psnet.UriPing, psnet.Ping, nil) // 主机CPU内存监控 Register("POST", monitor.UriLoad, monitor.LoadMonitor, nil)