9a028ab9077ef94c5cc67cfc018d5ed70eab4b51
管理后台节点页的「拉黑/恢复(draining/up)」与「一键换机(replace)」此前 注入的是 StubLifecycle/StubProvision(Ready()=false,UI 置灰、操作返回 服务不可用)。本次接真实实现: - RealLifecycle:复用 scheduler 的乐观锁状态流转(UPDATE nodes WHERE status=from + node_events + directory_version bump),手动运维与调度 自动循环共用同一条 canonical 路径;读当前状态作 from 守卫,幂等安全。 - RealProvision:委托 provision.Service.Replace 的 make-before-break 换机 (先拉起新节点再 drain 旧节点,容量不掉)。 - BuildServices:lifecycle 恒为真实;provision 在服务初始化成功时为真实, 否则回退 not-ready stub(无厂商凭证时点击换机给出明确错误)。 补 services_real_test.go:换机委托(空 UUID 起新编排)、错误透传、 非法目标状态拒绝、Ready 标志。server 全量 23 包测试通过。 e2e(真实换机)待机群 + 厂商凭证。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Pangolin
面向中国大陆用户的终端 VPN(科学上网)项目。
- 设计方案:
docs/技术方案.md - 实施计划:
plan/ - 部署(Phase 0,容器化 + CI/CD):
deploy/
Phase 0 现状
数据面两条线,容器化、经 Gitea Actions 自动部署到节点,与现网服务隔离:
- Xray VLESS + REALITY(主线,经宿主 nginx SNI 分流)
- sing-box Hysteria2(晚高峰加速线,UDP 443)
部署细节见 deploy/README.md。
Description
Releases
22
client 1.1.1
Latest
Languages
Go
36%
Dart
21.3%
JavaScript
13%
HTML
12.8%
Shell
4.4%
Other
12.3%