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

1.4 KiB

subscription-protocols

职责

  • 负责 /sub... 订阅入口的客户端识别、协议匹配与最终导出文本生成
  • 维护 app/Protocols/* 对 Clash / ClashMeta / Stash / General / SingBox 等客户端格式的适配
  • 根据 flagUser-Agent 与客户端版本信息,对不兼容协议做过滤或降级

行为规范

  • 订阅入口以 app/Http/Controllers/V1/Client/ClientController.php 为真相源,flag / User-Agent 解析结果会决定导出器类
  • flag=stashapp/Protocols/Stash.php
  • Stash 的 AnyTLS 目前采用保守兼容策略:只有明确拿到客户端版本且版本 >= 3.3.0 时才导出
  • 未知版本优先保证“可导入”,因此会过滤 AnyTLS,避免客户端直接报“不支持 anytls 协议”
  • 这类兼容修复默认只改目标导出器,不顺带联动其他协议类

依赖关系

  • 依赖 ClientController 解析 flagUser-Agenttypesfilter
  • 依赖 App\Support\AbstractProtocol 提供公共过滤与协议抽象
  • 依赖 App\Models\ServerApp\Services\ServerService 提供节点数据

已知限制

  • 当前工作区缺少 PHP 运行时与 vendor,本地只能做静态校验,无法直接执行协议导出单元测试
  • 其他协议类中的 base_version 兼容声明暂未统一梳理;当前仅对用户命中的 Stash AnyTLS 做定点修复