Files
OpenStats/project.yml
T
gentpan d305e5e3e1 纯净度改为只查自己:锁定 IPv4 / IPv6 连接分别请求 cleanip.io/cli?json=1
cleanip.io 自 09-15 起不再接受 /cli?ip=,带参数一律 400,网络详情的纯净度因此一直停在“正在查询”。

- 新增 AddressFamilyRequest:用 Network.framework 建连接并锁定 IP 版本,走 HTTP/1.1 over TLS 请求,
  处理 chunked 与 Content-Length;这一族没有路由时直接失败,不干等。URLSession 无法指定地址族,
  而 cleanip.io 在 Cloudflare 后面 A / AAAA 都有,锁定地址族才能两族各查到自己的结果
- 锁定地址族的连接建不起来时退回 URLSession,只接受与所查同一族的结果
- 分流代理下 cleanip.io 看到的出口与 Cloudflare 不同时,显示 cleanip.io 看到的地址;缓存按 Cloudflare 的地址比对
- 查询失败的空结果不再写进 7 天缓存,也不进内存缓存,服务恢复后下次打开详情即重查
- 单元测试覆盖响应解析;真实网络下 IPv4 在本机验证、IPv6 在服务器上用 curl -6 验证 cleanip.io 返回对应地址的纯净度
2026-09-16 01:47:21 +05:00

122 lines
3.5 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
name: OpenStats
options:
bundleIdPrefix: com.openstats
deploymentTarget:
macOS: "14.0"
developmentLanguage: zh-Hans
createIntermediateGroups: true
groupSortPosition: top
settings:
base:
SWIFT_VERSION: "6.0"
MARKETING_VERSION: "0.3.1"
# 构建号四位数字,每次 make build 加一;营销版本只在发布时用 Scripts/version.sh patch / minor 修改
CURRENT_PROJECT_VERSION: "0053"
MACOSX_DEPLOYMENT_TARGET: "14.0"
# 本地开发使用 ad-hoc 签名;发布时改为 Developer ID(见 docs/PLAN.md)
CODE_SIGN_STYLE: Manual
CODE_SIGN_IDENTITY: "-"
DEVELOPMENT_TEAM: ""
ENABLE_HARDENED_RUNTIME: YES
DEAD_CODE_STRIPPING: YES
ENABLE_USER_SCRIPT_SANDBOXING: YES
packages:
OpenStatsKit:
path: Packages/OpenStatsKit
targets:
OpenStats:
type: application
platform: macOS
sources:
- path: App
- path: Helper/com.openstats.helper.plist
buildPhase:
copyFiles:
destination: wrapper
subpath: Contents/Library/LaunchDaemons
info:
path: App/Info.plist
properties:
CFBundleName: OpenStats
CFBundleDisplayName: OpenStats
CFBundleShortVersionString: $(MARKETING_VERSION)
CFBundleVersion: $(CURRENT_PROJECT_VERSION)
CFBundleDevelopmentRegion: zh-Hans
LSMinimumSystemVersion: $(MACOSX_DEPLOYMENT_TARGET)
LSUIElement: true
LSApplicationCategoryType: public.app-category.utilities
NSHumanReadableCopyright: © 2026 OpenStats
# 账号登录完成后浏览器跳回 openstats://auth/callback
CFBundleURLTypes:
- CFBundleURLName: com.openstats.app.auth
CFBundleURLSchemes: [openstats]
CFBundleTypeRole: Viewer
settings:
base:
PRODUCT_NAME: OpenStats
PRODUCT_BUNDLE_IDENTIFIER: com.openstats.app
ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon
dependencies:
- package: OpenStatsKit
product: OpenStatsUI
- target: OpenStatsHelper
embed: true
copy:
destination: executables
- target: OpenStatsWidget
embed: true
# 桌面小组件(沙盒扩展),嵌入 OpenStats.app/Contents/PlugIns
OpenStatsWidget:
type: app-extension
platform: macOS
sources:
- path: Widget
excludes:
- "*.entitlements"
info:
path: Widget/Info.plist
properties:
CFBundleDisplayName: OpenStats
CFBundleShortVersionString: $(MARKETING_VERSION)
CFBundleVersion: $(CURRENT_PROJECT_VERSION)
LSMinimumSystemVersion: $(MACOSX_DEPLOYMENT_TARGET)
NSExtension:
NSExtensionPointIdentifier: com.apple.widgetkit-extension
entitlements:
path: Widget/OpenStatsWidget.entitlements
properties:
com.apple.security.app-sandbox: true
settings:
base:
PRODUCT_NAME: OpenStatsWidget
PRODUCT_BUNDLE_IDENTIFIER: com.openstats.app.widget
SKIP_INSTALL: YES
dependencies:
- package: OpenStatsKit
product: Metrics
OpenStatsHelper:
type: tool
platform: macOS
sources:
- path: Helper
excludes:
- "*.plist"
settings:
base:
PRODUCT_NAME: OpenStatsHelper
PRODUCT_BUNDLE_IDENTIFIER: com.openstats.helper
GENERATE_INFOPLIST_FILE: YES
CREATE_INFOPLIST_SECTION_IN_BINARY: YES
SKIP_INSTALL: YES
dependencies:
- package: OpenStatsKit
product: SMC
- package: OpenStatsKit
product: HelperShared