docs: update TASKS.md — M3/M5 marked complete, relay tests documented

This commit is contained in:
2026-03-02 15:23:46 +08:00
parent 91e3d4da2a
commit 85c094a095

View File

@@ -37,15 +37,15 @@ UDP 打洞优先,分层中继,超级辅助节点。
- [x] **集成到 inp2pc main**:登录前先探测,结果带入 LoginReq
- [ ] 定期重新探测(每 5 分钟NATType 变化时通知 server
### M3: 打洞(预计 300 行)
### M3: 打洞(预计 300 行)✅ 完成
- [x] UDP punch 基础实现 `pkg/punch/`
- [x] TCP punch 基础实现
- [x] 优先级链direct → UDP → TCP
- [ ] **双端同步打洞协调**
- server 收到 A 的 ConnectReq
- 同时推送 PunchStart 给 A 和 B带对方的 IP:Port + NAT 类型)
- 双方同时调 `punch.Connect()`
- 任一方成功后报告 PunchResult
- [x] **双端同步打洞协调** `internal/server/coordinator.go`
- [x] server 收到 A 的 ConnectReq
- [x] 同时推送 PunchStart 给 A 和 B带对方的 IP:Port + NAT 类型)
- [x] 双方同时调 `punch.Connect()`
- [x] 任一方成功后报告 PunchResult
- [ ] Symmetric NAT 端口预测(可选优化)
- [ ] 打洞结果上报 + 统计
@@ -63,22 +63,25 @@ UDP 打洞优先,分层中继,超级辅助节点。
- [ ] UDP 端口转发实现
- [x] 连接池/复用(同 peer 多 app 共享一条 tunnel
### M5: 中继(预计 400 行)
- [x] 中继管理器框架 `pkg/relay/`
- [ ] **中继节点选择策略**server 端)
- 同用户 `--relay` 节点优先
- 全局 `--super` 节点次优
- server 自身中继兜底
- [ ] **中继握手协议**
- A → server: RelayNodeReq
- server → A: RelayNodeRsp中继节点信息 + TOTP/一次性令牌)
- A → relay: 建立 TCP 连接 + 携带令牌
- server → relay: PushRelayOffer通知中继节点
- B → relay: 建立 TCP 连接
- relay: 桥接 A↔B
- [ ] **中继认证**
- 同用户TOTP(token, now)
- 跨用户超级节点server 签发 `RelayToken`HMAC-SHA256 签名,含 TTL
### M5: 中继(预计 400 行)✅ 完成
- [x] 中继管理器 `pkg/relay/` — 完整实现(~320 行)
- [x] **中继节点选择策略**server 端 `server.GetRelayNodes()`
- [x] 同用户 `--relay` 节点优先
- [x] 全局 `--super` 节点次优
- [x] server 自身中继兜底
- [x] **中继握手协议**(长度前缀 JSON
- [x] A → relay: TCP 连接 + RelayHandshake{sessionID, role="from", token, node}
- [x] B → relay: TCP 连接 + RelayHandshake{sessionID, role="to", token, node}
- [x] relay: TOTP 验证 → 配对等待30s 超时)→ 双向桥接
- [x] 结果回传 relayResult{error, detail}
- [x] **中继认证**
- [x] 同用户TOTP(token, now)
- [x] 跨用户超级节点server 签发 `RelayToken`HMAC-SHA256 签名,含 TTL
- [x] **客户端工具函数** `ConnectToRelay()` — 封装完整握手+等待配对
- [x] **测试覆盖**3/3 通过
- [x] TestRelayBridge — A↔B 双向数据验证
- [x] TestRelayLargeData — 1MB 精确传输
- [x] TestRelayAuthDenied — 错误 TOTP 被正确拒绝
- [ ] 中继带宽统计 + 负载均衡
### M6: inp2ps / inp2pc main 入口(预计 200 行)✅ 完成
@@ -180,7 +183,7 @@ pkg/
├── punch/ ✅ 完成UDP/TCP punch + direct + 优先级链)
├── mux/ ✅ 完成流多路复用7 测试 + 1 benchmark 全部通过)
├── tunnel/ ✅ 完成(基于 mux 的端口转发,端到端测试通过)
└── relay/ ✅ 框架完成(缺握手协议实现
└── relay/ ✅ 完成(中继握手、TOTP 认证、双向桥接、3 测试通过
internal/
├── server/ ✅ 完成登录、心跳、report、relay 选择、节点管理、打洞协调)
@@ -199,7 +202,9 @@ cmd/
- pkg/mux: 7 tests + 1 bench (0.2s) — 并发/大载荷/FIN/session
- pkg/tunnel: 3 tests (0.16s) — 端到端转发/5 并发/统计
二进制: bin/inp2ps (8.8MB) + bin/inp2pc (8.2MB)
- pkg/relay: 3 tests (0.3s) — 双向桥接/1MB 中继/认证拒绝
二进制: bin/inp2ps (6.0MB) + bin/inp2pc (5.6MB) (静态编译, strip)
```
## 接口约定(核心层 ↔ 前端/次要层)