package handlers import ( "github.com/gofiber/fiber/v2" "proxy-server/gateway/app" "proxy-server/gateway/core" ) type InfoResp struct { Id int32 `json:"id"` Name string `json:"name"` FwdListeners int `json:"fwd_listeners"` UserConnections int `json:"user_connections"` CtrlConnections int `json:"ctrl_connections"` DataConnections int `json:"data_connections"` Edges []EdgeResp `json:"edges"` } type EdgeResp struct { Id int32 `json:"id"` Port uint16 `json:"port"` Permit *core.Permit `json:"permit"` } func Info(c *fiber.Ctx) error { var edges = make([]EdgeResp, 0) app.Edges.Range(func(id int32, port uint16) bool { permit, ok := app.Permits.Load(id) if !ok { return true } edges = append(edges, EdgeResp{ Id: id, Port: port, Permit: permit, }) return true }) return c.JSON(InfoResp{ Id: app.Id, Name: app.Name, FwdListeners: int(app.FwdLesWg.Count()), UserConnections: int(app.UserConnWg.Count()), CtrlConnections: int(app.CtrlConnWg.Count()), DataConnections: int(app.DataConnWg.Count()), Edges: edges, }) }