Skip to content

[Bug] geosite:cn 构建将 ChinaMax 精确域名规则截断为 domain:full #167

Description

@Oisnoah

问题描述

geosite:cn 的构建流程会将 ChinaMax 中的精确域名规则转换为 full:<domain>,随后又在生成 community/data/cn 时将其截断为单标签 full。最终产物包含 domain:full,但丢失原始精确域名。

这不是单个域名未同步的问题。ChinaMax 当前声明包含 295 条 DOMAIN 类型规则,这些不以 . 开头的精确规则可能都受到同一转换路径影响。

可复现样例

当前 ChinaMax 中包含:

api.blipsandchitz.me

来源:

https://github.com/blackmatrix7/ios_rule_script/blob/master/rule/Clash/ChinaMax/ChinaMax_Domain.txt

工作流第一步转换(run.yml 第 72 行):

printf '%s\n' 'api.blipsandchitz.me' \
  | sed '/^\s*#/d' \
  | sed '/^[^\.]/ s/^/full:/' \
  | sed 's/^\.\([^.]*\)/\1/'

输出:

full:api.blipsandchitz.me

随后经过生成 community/data/cn 的 Perl 正则(run.yml 第 118 行):

printf '%s\n' 'full:api.blipsandchitz.me' \
  | perl -ne '/^((?=^.{1,255})[a-zA-Z0-9][-_a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-_a-zA-Z0-9]{0,62})*)/ && print "$1\n"'

输出:

full

该正则没有要求匹配整行,因此在 : 前停止并保留了 full

相关工作流:

https://github.com/MetaCubeX/meta-rules-dat/blob/master/.github/workflows/run.yml#L70-L125

最新产物验证

2026-07-19 07:22(Asia/Shanghai)的定时构建已成功完成:

https://github.com/MetaCubeX/meta-rules-dat/actions/runs/29665125111

发布的 geosite.dat

sha256:2c185fdfac8f0aac556cfceee6b66b9353779d3ef6deff3b4acc0132d7515546

使用 v2fly/domain-list-community/cmd/datdump 导出后:

cn:
  - "domain:full"

cn 中不存在:

  - "full:api.blipsandchitz.me"

同一个 geosite.datgeolocation-cn 中存在该条目,是因为它来自 V2Fly 的独立分类,并不能修复 MetaCubeX 替换后的 cn 分类。

预期行为

  • ChinaMax 的精确域名应保留为 full:<domain>
  • ChinaMax 的后缀域名应继续按域名后缀规则生成。
  • 产物中不应出现由类型前缀截断产生的 domain:full

建议在修复转换流程的同时增加最小回归测试,至少覆盖一条精确域名和一条后缀域名。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions