Initial commit
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user