From 00d2b3065895bdbf3846b55122366aaf86a57de0 Mon Sep 17 00:00:00 2001 From: imbytecat Date: Mon, 26 Aug 2024 12:27:47 +0800 Subject: [PATCH] =?UTF-8?q?feat(zabbix):=20=E6=B7=BB=E5=8A=A0=20zabbix=20?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=8F=91=E7=8E=B0=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- router/handler/onvif/connection.go | 19 ++++++++++++++++++- router/router.go | 8 +++++--- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/router/handler/onvif/connection.go b/router/handler/onvif/connection.go index 74089fc..0976aad 100644 --- a/router/handler/onvif/connection.go +++ b/router/handler/onvif/connection.go @@ -41,7 +41,7 @@ func CreateConnection(c *gin.Context) { } func GetConnections(c *gin.Context) { - devices := make(map[string]interface{}) + devices := make(map[string]any) for xaddr, conn := range conns { info, err := conn.GetDeviceInfo() @@ -56,6 +56,23 @@ func GetConnections(c *gin.Context) { response.NewResponse().WithData(devices).Send(c) } +func ZBXConnectionDiscovery(c *gin.Context) { + type ZBXDiscovery struct { + Xaddr string `json:"{#XADDR}"` + } + + arr := make([]ZBXDiscovery, 0) + for xaddr := range conns { + arr = append(arr, ZBXDiscovery{ + Xaddr: xaddr, + }) + } + + c.JSON(http.StatusOK, gin.H{ + "data": arr, + }) +} + func GetConnectionByXaddr(c *gin.Context) { xaddr := c.Param("xaddr") diff --git a/router/router.go b/router/router.go index 9638a9f..54329fd 100644 --- a/router/router.go +++ b/router/router.go @@ -9,17 +9,19 @@ import ( func SetupRoutes(r *gin.Engine) { r.GET("/", handler.Hello) - userGroup := r.Group("/onvif") + onvifGroup := r.Group("/onvif") { - connectionGroup := userGroup.Group("/connections") + connectionGroup := onvifGroup.Group("/connections") { connectionGroup.POST("/", onvif.CreateConnection) connectionGroup.GET("/", onvif.GetConnections) connectionGroup.GET("/:xaddr", onvif.GetConnectionByXaddr) connectionGroup.DELETE("/:xaddr", onvif.DeleteConnection) + + connectionGroup.POST("/zbxDiscovery", onvif.ZBXConnectionDiscovery) } - subscriptionGroup := userGroup.Group("/subscriptions") + subscriptionGroup := onvifGroup.Group("/subscriptions") { subscriptionGroup.POST("/:xaddr", onvif.CreateEventSubscription) subscriptionGroup.POST("/:xaddr/callback", onvif.EventNotifyCallback)