网关实现自定义接口安全检查与边缘节点连接权限验证
This commit is contained in:
@@ -9,10 +9,11 @@ import (
|
||||
"log/slog"
|
||||
"net"
|
||||
"proxy-server/pkg/utils"
|
||||
"proxy-server/server/app"
|
||||
"proxy-server/server/env"
|
||||
"proxy-server/server/fwd/core"
|
||||
"proxy-server/server/fwd/dispatcher"
|
||||
"proxy-server/server/fwd/metrics"
|
||||
"proxy-server/server/pkg/env"
|
||||
"proxy-server/server/report"
|
||||
"strconv"
|
||||
"strings"
|
||||
@@ -74,29 +75,26 @@ func (s *Service) processCtrlConn(conn net.Conn) error {
|
||||
if err != nil {
|
||||
return fmt.Errorf("读取客户端 ID 失败: %w", err)
|
||||
}
|
||||
var clientId = int32(binary.BigEndian.Uint32(recv))
|
||||
var client = int32(binary.BigEndian.Uint32(recv))
|
||||
|
||||
// 分配端口
|
||||
var minim uint16 = 20000
|
||||
var maxim uint16 = 60000
|
||||
var fwdPort uint16
|
||||
var port uint16
|
||||
for i := minim; i < maxim; i++ {
|
||||
var _, ok = s.fwdPortMap[i]
|
||||
var _, ok = app.Assigns[i]
|
||||
if !ok {
|
||||
fwdPort = i
|
||||
s.fwdPortMap[i] = clientId
|
||||
port = i
|
||||
app.Assigns[i] = client
|
||||
break
|
||||
}
|
||||
}
|
||||
if fwdPort == 0 {
|
||||
if port == 0 {
|
||||
return errors.New("没有可用的端口")
|
||||
}
|
||||
|
||||
// 报告端口分配
|
||||
if s.Config.Id == nil || *s.Config.Id == 0 {
|
||||
return errors.New("转发服务未成功注册,无法提供服务")
|
||||
}
|
||||
err = report.Assigned(s.ctx, *s.Config.Id, clientId, fwdPort)
|
||||
err = report.Assigned(client, port)
|
||||
if err != nil {
|
||||
return fmt.Errorf("报告端口分配失败: %w", err)
|
||||
}
|
||||
@@ -108,8 +106,8 @@ func (s *Service) processCtrlConn(conn net.Conn) error {
|
||||
}
|
||||
|
||||
// 启动转发服务
|
||||
slog.Info("监听转发端口", "port", fwdPort, "client", clientId)
|
||||
proxy, err := dispatcher.New(fwdPort)
|
||||
slog.Info("监听转发端口", "port", port, "client", client)
|
||||
proxy, err := dispatcher.New(port)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user