添加获取所有边缘节点接口;重构相关数据结构与服务逻辑

This commit is contained in:
2025-05-23 18:58:03 +08:00
parent c83ffda611
commit 1524eef4a9
7 changed files with 152 additions and 22 deletions

View File

@@ -159,7 +159,7 @@ func CreateChannel(c *fiber.Ctx) error {
req.Protocol,
req.AuthType,
req.Count,
s.EdgeFilterConfig{
s.EdgeFilter{
Isp: isp,
Prov: req.Prov,
City: req.City,

View File

@@ -1,11 +1,13 @@
package handlers
import (
"platform/web/auth"
edge2 "platform/web/domains/edge"
proxy2 "platform/web/domains/proxy"
g "platform/web/globals"
m "platform/web/models"
q "platform/web/queries"
s "platform/web/services"
"github.com/gofiber/fiber/v2"
"gorm.io/gen/field"
@@ -96,3 +98,52 @@ func OfflineEdge(c *fiber.Ctx) (err error) {
return c.SendStatus(fiber.StatusOK)
}
type AllEdgesAvailableReq struct {
s.EdgeFilter
Count int `json:"count"`
}
type AllEdgesAvailableRespItem struct {
Ip string `json:"ip"` // 节点地址
Port int32 `json:"port"` // 代理服务端口
Isp string `json:"isp"` // 运营商
Prov string `json:"prov"` // 省份
City string `json:"city"` // 城市
Status int32 `json:"status"` // 节点状态0-离线1-正常
}
func AllEdgesAvailable(c *fiber.Ctx) (err error) {
// 检查权限
_, err = auth.NewProtect(c).Payload(auth.PayloadInternalServer).Do()
if err != nil {
return err
}
// 验证请求参数
var req = new(AllEdgesAvailableReq)
err = g.Validator.Validate(c, req)
if err != nil {
return err
}
// 获取可用的转发服务
infos, err := s.Edge.AllEdges(req.Count, req.EdgeFilter)
if err != nil {
return err
}
// 返回结果
var edges = make([]AllEdgesAvailableRespItem, len(infos))
for i, info := range infos {
edges[i] = AllEdgesAvailableRespItem{
Ip: info.Host,
Port: info.ProxyPort,
Isp: edge2.ISPToStr(edge2.ISP(info.Isp)),
Prov: info.Prov,
City: info.City,
Status: info.Status,
}
}
return c.JSON(edges)
}