2025-05-15 15:56:20 +08:00
|
|
|
package app
|
|
|
|
|
|
2025-05-16 15:13:16 +08:00
|
|
|
import (
|
2025-05-16 17:04:03 +08:00
|
|
|
"proxy-server/gateway/core"
|
2025-05-19 09:41:41 +08:00
|
|
|
"proxy-server/utils"
|
2025-05-16 15:13:16 +08:00
|
|
|
)
|
2025-05-15 15:56:20 +08:00
|
|
|
|
2025-05-17 11:02:18 +08:00
|
|
|
type Stoppable interface {
|
|
|
|
|
Stop()
|
|
|
|
|
}
|
|
|
|
|
|
2025-05-15 15:56:20 +08:00
|
|
|
var (
|
|
|
|
|
Id int32
|
|
|
|
|
Name string
|
|
|
|
|
PlatformSecret string // 平台密钥,验证接收的请求是否属于平台
|
|
|
|
|
|
2025-05-17 11:02:18 +08:00
|
|
|
Assigns = core.SyncMap[uint16, int32]{} // 转发端口 -> 节点 ID
|
|
|
|
|
Edges = core.SyncMap[int32, uint16]{} // 节点 ID -> 转发端口
|
|
|
|
|
Permits = core.SyncMap[int32, *core.Permit]{} // 转发端口 -> 权限配置
|
2025-05-19 09:41:41 +08:00
|
|
|
|
|
|
|
|
CtrlConnWg utils.CountWaitGroup // 控制通道计数器
|
|
|
|
|
DataConnWg utils.CountWaitGroup // 数据通道计数器
|
|
|
|
|
FwdLesWg utils.CountWaitGroup // 转发监听端口计数器
|
|
|
|
|
UserConnWg utils.CountWaitGroup // 用户连接计数器
|
|
|
|
|
UserConnMap core.SyncMap[string, *core.Conn] // 用户连接暂存
|
2025-05-15 15:56:20 +08:00
|
|
|
)
|
2025-05-17 10:00:28 +08:00
|
|
|
|
|
|
|
|
func AddEdge(id int32, port uint16) {
|
|
|
|
|
Edges.Store(id, port)
|
|
|
|
|
Assigns.Store(port, id)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func DelEdge(port uint16) {
|
|
|
|
|
id, _ := Assigns.LoadAndDelete(port)
|
|
|
|
|
Edges.Delete(id)
|
|
|
|
|
}
|
|
|
|
|
|
2025-05-17 11:02:18 +08:00
|
|
|
func LoadPermit(port uint16) *core.Permit {
|
|
|
|
|
id, ok := Assigns.Load(port)
|
|
|
|
|
if !ok {
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
permit, ok := Permits.Load(id)
|
|
|
|
|
if !ok {
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return permit
|
2025-05-17 10:00:28 +08:00
|
|
|
}
|