rebuild: split core into separate repo; move wg-go integration to internal/ctr/corebind

- go.mod: require git.zkcoi.com/zkcoi/meshray/core, replace => ../Meshray
- internal/ctr/corebind: EnhancedBind + registry + adapter (wg-go integration isolated)
- cmd/mr-wg migrated from old core/cmd/meshray-core
- core/ removed; CHANGELOG updated; fix checkdb vet warning
This commit is contained in:
2026-07-15 16:08:13 +08:00
parent 15dab96872
commit 59e3059246
39 changed files with 2350 additions and 4361 deletions
+80
View File
@@ -0,0 +1,80 @@
// Package corebind 的契约注册:向开源契约(meshray-contract)注册增强 Bind 工厂与引擎提供方。
package corebind
import (
"sync"
"git.zkcoi.com/zkcoi/meshray-contract"
"git.zkcoi.com/zkcoi/meshray/core/engine"
"go.uber.org/zap"
"golang.zx2c4.com/wireguard/conn"
)
// engines 维护 networkID -> Engine 单例映射。
// EnhancedBind(收发接管)与 engineController(控制面)均通过 networkID 关联同一个 Engine
// 使信令下发的候选地址、ICE 配置、层顺序都能落到接管该组网收发的 Engine 上。
var (
enginesMu sync.Mutex
engines = make(map[string]*core.Engine)
)
// getOrCreateEngine 获取或创建指定组网的 Engine 单例(线程安全)
func getOrCreateEngine(networkID string, logger *zap.Logger) *core.Engine {
enginesMu.Lock()
defer enginesMu.Unlock()
if e, ok := engines[networkID]; ok {
return e
}
e := core.NewEngine(logger, core.NewMetrics())
engines[networkID] = e
return e
}
// engineController 适配 contract.EngineController,以 networkID 关联 Engine 单例,
// 供管理器在 enhanced 模式调用,无需直接依赖本包具体类型。
type engineController struct {
networkID string
engine *core.Engine
}
func (c *engineController) Start() error { return c.engine.Start() }
func (c *engineController) Stop() error { return c.engine.Stop() }
// NotifyPeerCandidates 由信令层调用:注入对端候选地址并触发 P2P 建连
func (c *engineController) NotifyPeerCandidates(peerKey string, candidates []contract.Candidate) error {
return c.engine.NotifyPeerInfo(peerKey, toCoreCandidates(candidates))
}
// SetICEConfig 更新 ICE/STUN/TURN 配置
func (c *engineController) SetICEConfig(cfg contract.ICEConfig) error {
return c.engine.SetICEConfig(toCoreICEConfig(cfg))
}
// SetLayerOrder 设置传输层优先级顺序(策略核心配置)
func (c *engineController) SetLayerOrder(order []contract.Layer) error {
c.engine.SetLayerOrder(toCoreLayerOrder(order))
return nil
}
// GetStatus 查询引擎状态
func (c *engineController) GetStatus() (*contract.EngineStatus, error) {
st, err := c.engine.GetStatus()
if err != nil {
return nil, err
}
return toContractStatus(st), nil
}
// init 向开源契约注册表注册增强 Bind 工厂与引擎提供方。
// 由管理器侧 core_enable.go 在 -tags meshray_core 构建下空白导入本包触发,
// 此时管理器侧 contract.GetBindFactory(true) / NewEngineController 才能取到实现;
// 默认构建不引入本包,原生直连(默认 Bind)始终可用。
func init() {
contract.RegisterEnhancedBindFactory(func(listenPort int, networkID string, logger *zap.Logger) (conn.Bind, error) {
return NewEnhancedBind(listenPort, networkID, logger)
})
contract.RegisterEngineProvider(func(networkID string, logger *zap.Logger) (contract.EngineController, error) {
return &engineController{networkID: networkID, engine: getOrCreateEngine(networkID, logger)}, nil
})
}