匹配器插件
匹配器插件返回 true 或 false,主要供 sequence 的 matches 使用。
运行时模式
plugins: 中具有稳定 tag 的 matcher 可以通过管理 API 在当前 runtime 内查询和切换三种模式:
| 模式 | $matcher | !$matcher |
|---|---|---|
normal | 使用 matcher 原始结果 | 使用原始结果的取反 |
always_false | 不命中 | 命中 |
always_true | 命中 | 不命中 |
always_false 和 always_true 会跳过 matcher 内部逻辑并固定其基础布尔值,但每个引用仍独立应用外层取反。WebUI 对两个固定操作都要求二次确认,恢复 normal 不需要确认。
运行时模式由 matcher tag 共享,引用语义则由引用位置决定。例如同一 tag 同时以 $matcher 与 !$matcher 出现在一个或多个 sequence 中,两者共享同一个固定基础值,但最终结果始终互为取反。any_match 的子引用也遵循同一规则;如需控制整个组合,应切换 any_match 自身的运行时模式。
该状态不会写入配置,全量 reload 或进程重启后恢复 normal。quick-setup matcher 没有稳定的公开 tag,因此不提供运行时模式;需要控制时应先把表达式提取为独立 matcher。接口详情见插件扩展 API。
匹配表达式规则
在 sequence 中使用 matcher 时,推荐优先使用 quick setup 形式,配置会更直观:
- matches:
- "client_ip $lan_ip_set"
- "qtype A,28"
exec: "$forward_main"
也可以继续组合其它 quick setup matcher:
- matches:
- "qname domain:example.com"
- "qclass IN,3"
exec: "$forward_main"
取反:
- matches: "!has_resp"
exec: "$forward_main"
分类导航
| 分组 | 插件 |
|---|---|
| 请求匹配器 | qname、question、qtype、qclass、client_ip、ptr_ip |
| 响应匹配器 | resp_ip、cname、rcode、has_resp、has_wanted_ans |
| 上下文与策略 | mark、env、time、random、rate_limiter |
| 组合与常量 | any_match、string_exp、_true、_false |
旧版插件锚点保留在本目录页;字段说明已移动到上表中的职责分组。