2.0 KiB
status
| status |
|---|
| accepted |
订阅自定义字段统一使用项目扩展命名空间
订阅协议的自定义字段集中于根对象的 x_shadowsocksx_ng,以明确项目扩展与 SIP008 标准字段的边界。已确认将 expires_at 与 traffic_reset_at 从根对象移入该对象,今后本项目新增的扩展字段也归入该命名空间;标准字段 version、servers、bytes_used、bytes_remaining 保持原位。
NG2 尚未正式发布,选择直接统一输入格式,不保留根层时间字段的兼容读取。旧位置按未知字段忽略,即使新位置缺失或无效也不回读旧位置;仅提供旧位置的订阅仍可更新服务器,但不再提供这两个时间信息。
沿用 schema_version: 1,两个时间字段直接置于 x_shadowsocksx_ng 下,不再增加资料子对象。该对象可以只包含版本与时间字段,无需提供分组树。今后本项目新增的自定义字段均放在根对象的这个命名空间内,不在根层或 servers[] 中另设项目扩展字段;未来字段的具体结构在引入对应功能时决定。
时间字段仍使用现有 RFC 3339 格式并逐项解析。扩展对象缺失、不是对象、版本缺失或不支持时,不读取其中的时间字段。受支持版本内,分组树、自动更新策略与时间字段独立解析,一项功能内容错误不影响其他有效功能;标准流量字段也不受扩展错误影响。
每次成功刷新以本次解析结果替换订阅资料,缺失或无效的时间字段清除对应旧值;网络、文档解析或保存失败时保留原资料。不采用自动更新策略的「无效时保留上次有效值」规则,避免时间资料继续呈现供应方本次未有效提供的旧事实。
本地已保存的时间资料保留到下次成功刷新,不迁移持久化格式。配置组导出继续只包含标准服务器列表与分组扩展,不携带订阅时间、流量或供应商自动更新策略;文件导入仍只创建独立手动子树。