dd721fafc85f08b145cafba4c700f262cccfdaeb
原 `ipad` 子命令用 `flutter run --release` 装真机,走的是 Xcode 工程的**开发** 签名。Apple 只把 Development 证书签发给团队里的**个人成员**(不存在组织版), 于是装到机上「设置→通用→VPN 与设备管理」里开发者显示成个人姓名,而不是 Yanmei (beijing) Technology Co., Ltd。 改为 ad-hoc 分发(Xcode 15+ 的 method=release-testing)+ 自动签名: - 新增 write_ios_export_options() 生成 ExportOptions.plist(teamID=BYL4KQHMTN); - `flutter build ipa --release --export-options-plist=…` 导出时由 Xcode 用 **Apple Distribution: Yanmei…** 重签; - 装机前解包 IPA 逐字比对签名主体(IOS_EXPECT_SIGNER),不符即中止 —— 防止 以后无声退回个人证书; - 用 devicectl 安装;仅当覆盖安装失败(旧包签名主体不同)才卸载重装,不无条件 先卸(卸载会清空 app 数据要重新登录); - 构建失败时提示新设备注册命令:光给 -allowProvisioningUpdates 不够,必须同时 给 -allowProvisioningDeviceRegistration。 另外两处顺手修: - 取 IPA 路径原写 `ls … | head -1`,在 set -o pipefail 下 head 提前退出会让 ls 吃 SIGPIPE、管道返回 141,被 set -e 当失败终止脚本(实测复现,退出码 141)。 改用数组 glob。签名主体提取的 `codesign | grep -m1` 同一个坑,改成整段捕获 后用 awk 读完全部输入。 - API_URL 支持 env 覆盖(默认值不变),便于装生产地址的包做验证。 验证:bash -n 通过;shellcheck 无新增告警; API_URL=https://api.yanmeiai.com bash scripts/local_test.sh ipad 无字天书 端到端 exit=0,日志确认"签名核验通过: Apple Distribution: Yanmei…"并装机成功。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01P9G7E3wmAYL9KeYCVZVsqu
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
20
server 1.1.0
Latest
Languages
Go
39.9%
Dart
21.1%
JavaScript
14.7%
Shell
5.2%
HTML
4.8%
Other
14%