package zabbixagent import ( "github.com/gin-gonic/gin" "net/http" "onvif-agent/response" handler "onvif-agent/router/handler/onvif" service "onvif-agent/service/onvif" ) func ONVIFDeviceDiscovery(c *gin.Context) { type ZBXDevice struct { Xaddr string `json:"{#XADDR}"` } arr := make([]ZBXDevice, 0) for xaddr := range service.Sessions { arr = append(arr, ZBXDevice{ Xaddr: xaddr, }) } c.JSON(http.StatusOK, gin.H{ "data": arr, }) } func ONVIFDeviceRegister(c *gin.Context) { var req []handler.CreateSessionRequest if err := c.ShouldBindJSON(&req); err != nil { response.NewResponse().Error(err).Send(c) return } // 用于替换已存在的 Sessions var sessions = make(map[string]*service.Session) for _, v := range req { session, err := service.NewSession(v.Xaddr, v.Username, v.Password) if err != nil { response.NewResponse().Error(err).Send(c) return } _, err = session.GetDeviceInfo() if err != nil { response.NewResponse().Error(err).Send(c) return } sessions[session.Device.GetDeviceParams().Xaddr] = session } service.Sessions = sessions response.NewResponse().Success().Send(c) }