Files
Xboard/.helloagents/modules/subscription-protocols.md
T
yinjianm f7cef30b9c feat(admin-frontend): 完成订阅与系统管理真实工作台
补齐订单、优惠券、主题、插件、公告与支付管理页面,
接入对应后台接口、路由入口与工具层类型定义。
同时修复套餐页开关初始化误写问题,避免浏览即触发写操作。

在订阅协议侧为 Stash 导出增加 AnyTLS 版本守卫,
未知版本或低于 3.3.0 时不再导出该协议,并补充回归测试与知识记录。
2026-04-24 16:52:41 +08:00

27 lines
1.4 KiB
Markdown

# subscription-protocols
## 职责
- 负责 `/sub...` 订阅入口的客户端识别、协议匹配与最终导出文本生成
- 维护 `app/Protocols/*` 对 Clash / ClashMeta / Stash / General / SingBox 等客户端格式的适配
- 根据 `flag``User-Agent` 与客户端版本信息,对不兼容协议做过滤或降级
## 行为规范
- 订阅入口以 `app/Http/Controllers/V1/Client/ClientController.php` 为真相源,`flag` / `User-Agent` 解析结果会决定导出器类
- `flag=stash``app/Protocols/Stash.php`
- Stash 的 `AnyTLS` 目前采用保守兼容策略:只有明确拿到客户端版本且版本 `>= 3.3.0` 时才导出
- 未知版本优先保证“可导入”,因此会过滤 `AnyTLS`,避免客户端直接报“不支持 anytls 协议”
- 这类兼容修复默认只改目标导出器,不顺带联动其他协议类
## 依赖关系
- 依赖 `ClientController` 解析 `flag``User-Agent``types``filter`
- 依赖 `App\Support\AbstractProtocol` 提供公共过滤与协议抽象
- 依赖 `App\Models\Server``App\Services\ServerService` 提供节点数据
## 已知限制
- 当前工作区缺少 PHP 运行时与 `vendor`,本地只能做静态校验,无法直接执行协议导出单元测试
- 其他协议类中的 `base_version` 兼容声明暂未统一梳理;当前仅对用户命中的 Stash AnyTLS 做定点修复