wangjia
|
e129f094c2
|
feat(ios): M3 PoC — PacketTunnelProvider + entitlement + 内存监控 [tsk_nsobbj_rJdy0]
### 新增文件
- client/ios/PacketTunnel/MemoryMonitor.swift
周期打点 NE 进程内存(os_proc_available_memory iOS13+ / mach_task_basic_info 兼容
iOS12);每 10s 采样一次;availableMemory < 5MB 时输出 ⚠️ 警告;提供
summaryString() 供 handleAppMessage/getMemory IPC 返回。
- client/ios/PacketTunnel/PacketTunnel.entitlements
Extension 的 NE + App Group entitlement 文件;申请说明写入注释。
- client/ios/Runner/Runner.entitlements
主 App 的 NE + App Group entitlement 文件;申请说明写入注释。
- doc/ne-entitlement-申请指引.md
完整申请操作手册:Bundle ID 清单、Apple Developer Portal 步骤、
专项审批英文申请文案(已脱敏,无红线词)、审批 lead time 说明。
### 修改文件
- client/ios/PacketTunnel/PacketTunnelProvider.swift
完整 M3 实现(替换原骨架 TODO):
· startTunnel:解析 configJson(options/App Group 两路回退)→
buildNetworkSettings → setTunnelNetworkSettings → setupTunBridge
→ startLibbox → startPacketBridging → memoryMonitor.start()
· stopTunnel:memoryMonitor.stop() → stopLibbox → closeTunBridge
· handleAppMessage:JSON IPC 协议(getStatus/getMemory/selectOutbound)
· LibboxPlatformInterface 扩展(#if canImport(Libbox)):
openTun 返回 socketpair libbox 侧 fd,autoDetectInterfaceControl no-op,
writeLog 转 os.log,useProcFS 返回 false
· packetFlow 双向桥接(readFromPacketFlow/writeToPacketFlow 循环)
· parseTunAddress/parseDNSServers 从 JSON 提取网络参数
- client/ios/Runner/VpnManager.swift
· localizedDescription "穿山甲 Pangolin VPN" → "Pangolin 加速"(红线词修复)
· 新增 appGroup 常量(group.com.pangolin.pangolinVpn)
· start() 写入 App Group UserDefaults 缓存 configJson
- client/ios/Runner/Info.plist
NSVPNUsageDescription "穿山甲使用 VPN…" → "Pangolin 使用网络加速通道…"(红线词修复)
- client/ios/PacketTunnel/Info.plist
CFBundleDisplayName "穿山甲 Tunnel" → "Pangolin 加速通道"(红线词修复)
- client/ios/Runner.xcodeproj/project.pbxproj
· Runner + PacketTunnel 所有 build config 添加 CODE_SIGN_ENTITLEMENTS
· 新增 MemoryMonitor.swift 到 PacketTunnel Sources 构建阶段
· 新增 Runner.entitlements / PacketTunnel.entitlements / MemoryMonitor.swift
文件引用及分组
- app/kernel/build-ios.sh
添加 M3 内存裁剪决策记录:gVisor→grpc→QUIC 优先裁减顺序及内存估算,
等待真机 10min 压测结果后更新最终结论
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-06-13 17:44:11 +08:00 |
|
wangjia
|
4e2a444572
|
merge: usage 用量 + 广告解锁 [tsk_1taxhtV2k3RP]
# Conflicts:
# server/internal/apierr/apierr.go
|
2026-06-13 17:30:36 +08:00 |
|
wangjia
|
ab2bbaf683
|
tsk_9uMrd9kUpmVA: 数据面定稿 + 修订 ARCHITECTURE.md connect 契约
决策:libbox 统一承载 REALITY/Hy2 outbound(方案 C),弃用 WireGuard peer 注册。
现网 deploy/ 基础设施(singbox Hy2 + xray REALITY)已验证,零改动复用。
变更文件:
- design/server/ARCHITECTURE.md v0.2:
· §0 数据面描述改为 sing-box libbox (REALITY/Hy2)
· §1 拓扑图更新(wireguard+agent → singbox+agent,客户端标注 libbox 内嵌)
· §2 devices 表移除 pubkey;nodes 表改为 reality_public_key/short_id/uuid/hy2_password
· §3 connect 响应由 WireGuard 配置改为完整 sing-box config JSON
· §3.1(新增)connect 契约详细规范:四块 inbounds/outbounds/route/dns、
客户端透传原则、字段与 deploy/ 模板逐字段对照、占位符替换说明
· §4.3 连接流程更新(peer 注册 → config JSON 渲染下发)
· 附录 A(新增)v0.1→v0.2 变更汇总
- doc/plans/11-libbox-bridge.md(新建):
完整决策记录(背景/备选/结论/影响面),任务链 11A→11C→11D/E/F→11H
- doc/plans/client-connect-config.example.json(新建):
最小示例 config,字段与 deploy/ 模板对齐,可用 sing-box check -c 校验
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-06-13 01:43:17 +08:00 |
|
wangjia
|
3ae96ef229
|
docs: 新增整体架构设计文档(doc/,HTML 七章)
覆盖前端五端/后端/MySQL/弹性节点拓扑/Web安全/安全总纲,遵循 design/ 设计系统视觉呈现。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-06-11 23:57:49 +08:00 |
|