添加获取所有边缘节点接口;重构相关数据结构与服务逻辑
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user