实现边缘节点下线和由转发服务维护的端口分配机制
This commit is contained in:
@@ -19,6 +19,10 @@ type OnlineProxyReq struct {
|
||||
Version int `json:"version" validate:"required"`
|
||||
}
|
||||
|
||||
type OnlineProxyResp struct {
|
||||
Id int32 `json:"id"`
|
||||
}
|
||||
|
||||
func OnlineProxy(c *fiber.Ctx) (err error) {
|
||||
|
||||
// 检查接口权限
|
||||
@@ -38,7 +42,13 @@ func OnlineProxy(c *fiber.Ctx) (err error) {
|
||||
|
||||
// 创建代理
|
||||
ip := c.Context().RemoteIP()
|
||||
slog.Debug("注册转发服务", "ip", ip)
|
||||
var proxy = &m.Proxy{
|
||||
Name: req.Name,
|
||||
Version: int32(req.Version),
|
||||
Host: ip.String(),
|
||||
Type: int32(proxy2.TypeSelfHosted),
|
||||
Status: 1,
|
||||
}
|
||||
err = q.Proxy.
|
||||
Clauses(clause.OnConflict{
|
||||
UpdateAll: true,
|
||||
@@ -46,18 +56,15 @@ func OnlineProxy(c *fiber.Ctx) (err error) {
|
||||
{Name: q.Proxy.Name.ColumnName().String()},
|
||||
},
|
||||
}).
|
||||
Create(&m.Proxy{
|
||||
Name: req.Name,
|
||||
Version: int32(req.Version),
|
||||
Host: ip.String(),
|
||||
Type: int32(proxy2.TypeSelfHosted),
|
||||
Status: 1,
|
||||
})
|
||||
Create(proxy)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
slog.Debug("注册转发服务", "ip", ip, "id", proxy.ID)
|
||||
return c.JSON(&OnlineProxyResp{
|
||||
Id: proxy.ID,
|
||||
})
|
||||
}
|
||||
|
||||
// endregion
|
||||
@@ -96,3 +103,43 @@ func OfflineProxy(c *fiber.Ctx) (err error) {
|
||||
}
|
||||
|
||||
// endregion
|
||||
|
||||
// region AssignProxyFwdPort
|
||||
|
||||
type AssignProxyFwdPortReq struct {
|
||||
Proxy int32 `json:"proxy" validate:"required"`
|
||||
Edge int32 `json:"edge" validate:"required"`
|
||||
Port uint16 `json:"port" validate:"required"`
|
||||
}
|
||||
|
||||
func AssignProxyFwdPort(c *fiber.Ctx) (err error) {
|
||||
// 检查接口权限
|
||||
_, err = auth2.NewProtect(c).Payload(
|
||||
auth2.PayloadInternalServer,
|
||||
).Do()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 验证请求参数
|
||||
var req = new(AssignProxyFwdPortReq)
|
||||
err = g.Validator.Validate(c, req)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 更新边缘节点端口分配状态
|
||||
_, err = q.Edge.
|
||||
Where(q.Edge.ID.Eq(req.Edge)).
|
||||
UpdateSimple(
|
||||
q.Edge.ProxyID.Value(req.Proxy),
|
||||
q.Edge.ProxyPort.Value(int32(req.Port)),
|
||||
)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// endregion
|
||||
|
||||
Reference in New Issue
Block a user