覆写文件(Override)
覆写文件(Override)允许用户修改配置文件的部分字段,常用于修改托管、订阅的配置的内容。Stash 允许同时启用多个覆写文件,会从上到下覆盖了原来配置中。
一个最佳实践是,为了便于单独控制开关和分享,通常以单个功能点划分覆写文件。
语法参考
- 覆写文件使用 YAML 格式,后缀名为
stoverride
; - 通常地,使用
name
与desc
字段作为覆写文件的名称和描述,这两个字段仅用于展示; - 覆写文件对配置文件的修改,采用如下规则:
- 对于简单类型的同名 key,例如 string、number、boolean,会直接覆盖;
- 对于字典类型的同名 key,采用递归按 key 合并;
- 对于数组类型的同名 key,采用覆写文件的数组会插入在配置文件数组的前面。
- 对于字典类型和数组类型的 key 后面新增注释(line comment)
#!replace
,则会采用覆盖方式合并
⚠️
暂时不支持修改数组中的元素,后续会提供其他语法进行修改。
常见的覆写样例:
name: BiliBili 重定向 MCDN / PCDN 到正规 CDN
desc: 加载更流畅的 BiliBili 更值得干杯🍻!
http:
force-http-engine:
- 'upos-*.bilivideo.com:80'
- '*:4480'
- '*:9102'
url-rewrite:
- https?:\/\/(.*):4480\/upgcxcode http://upos-sz-mirrorcos.bilivideo.com/upgcxcode 302
- https?:\/\/(.*):9102\/upgcxcode http://upos-sz-mirrorcos.bilivideo.com/upgcxcode 302
- https?:\/\/upos-.*-.*oss\d*\.bilivideo\.com\/upgcxcode http://upos-sz-mirrorcos.bilivideo.com/upgcxcode 302
- https?:\/\/upos-sz-mirror(?!cos\.).*bilivideo\.com\/upgcxcode http://upos-sz-mirrorcos.bilivideo.com/upgcxcode 302
# alternative:
# upos-sz-mirrorhw.bilivideo.com
# upos-sz-mirrorcos.bilivideo.com
# upos-sz-mirrorcoso1.bilivideo.com
# upos-sz-mirrorcoso2.bilivideo.com
# upos-sz-mirrorbs.bilivideo.com
# upos-sz-mirrorali.bilivideo.com
script:
shortcuts:
bilibili-quic: network == 'udp' and geoip(dst_ip) == 'CN' and dst_port == 3478
rules:
- SCRIPT,bilibili-quic,REJECT
采用了 #!replace
语法的覆写样例:
name: 仅使用 CloudFlare DNS
dns:
# 将会完整覆盖原有 default-nameserver
default-nameserver: #!replace
- system
- 223.5.5.5
- 1.0.0.1
# 将会完整覆盖原有 nameserver
nameserver: #!replace
- https://1.0.0.1/dns-query # CF IPv4
- https://[2606:4700:4700::1111]/dns-query # CF IPv6
下面为一个简单的合并实例:
# config.yaml
dict:
k1: true
k2: 1
k3:
- 1
- 2
- 3
k4:
- 1
- 2
- 3
# override file
key: value
dict:
k3:
- 0
k4: #!replace
- 1
k5: null
# after override
key: value
dict:
k1: true
k2: 1
k3:
- 0
- 1
- 2
- 3
k4:
- 1
k5: null