重构连接监听与处理代码逻辑,连接信息存储于全局通过接口展示

This commit is contained in:
2025-05-19 09:41:41 +08:00
parent aa967fbd6a
commit 24351e1c56
8 changed files with 126 additions and 67 deletions

View File

@@ -0,0 +1,53 @@
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,
})
}