65 lines
1.9 KiB
Go
65 lines
1.9 KiB
Go
package ctr
|
||
|
||
// Client Ctr 客户端接口(Service 层调用)
|
||
//
|
||
// 职责:
|
||
// 1. 定义 Service 层可调用的所有方法
|
||
// 2. 解耦 Service 和 Ctr 实现
|
||
// 3. 便于单元测试 Mock
|
||
//
|
||
// 使用示例:
|
||
//
|
||
// type NetworkService struct {
|
||
// ctrClient ctr.Client
|
||
// }
|
||
//
|
||
// func (s *NetworkService) CreateNetwork(req *model.Network) error {
|
||
// return s.ctrClient.CreateNetwork(req.ID, req.Subnet, listenPort)
|
||
// }
|
||
type Client interface {
|
||
// ========== 网络生命周期管理 ==========
|
||
|
||
// CreateNetwork 创建网络
|
||
// networkID: 组网 ID(雪花算法 uint64)
|
||
// subnet: 子网段(例如:"10.0.0.0/24")
|
||
// listenPort: WireGuard 监听端口(例如:51820 + hash(networkID))
|
||
// meshMode: 组网模式("native" | "enhanced")
|
||
CreateNetwork(networkID uint64, subnet string, listenPort int, meshMode string) error
|
||
|
||
// DeleteNetwork 删除网络
|
||
DeleteNetwork(networkID uint64) error
|
||
|
||
// ========== Peer 管理 ==========
|
||
|
||
// AddPeer 添加 Peer
|
||
// publicKey: Peer 的公钥
|
||
// allowedIP: Peer 的允许 IP(例如:"10.0.0.2/32")
|
||
AddPeer(networkID uint64, publicKey, allowedIP string) error
|
||
|
||
// RemovePeer 移除 Peer
|
||
RemovePeer(networkID uint64, publicKey string) error
|
||
|
||
// ========== 状态查询 ==========
|
||
|
||
// GetStatus 获取网络状态
|
||
// 返回 WGStatus 和 CoreStatus(如果 Core 存在)
|
||
GetStatus(networkID uint64) (*NetworkStatus, error)
|
||
|
||
// ========== 模式切换(P3 阶段) ==========
|
||
|
||
// SwitchMode 切换传输模式(原生→增强)
|
||
// mode: "native" | "enhanced"
|
||
// ✅ P3-1 阶段实现
|
||
SwitchMode(networkID uint64, mode string) error
|
||
|
||
// ========== 配置同步(P3 阶段) ==========
|
||
|
||
// UpdateCoreConfig 更新 Core 配置(策略修改后同步)
|
||
// config: 新的配置对象(根据策略类型决定)
|
||
// ✅ P3-1 阶段实现
|
||
UpdateCoreConfig(networkID uint64, config interface{}) error
|
||
}
|
||
|
||
// 确保 Ctr 实现了 Client 接口
|
||
var _ Client = (*Ctr)(nil)
|