跳到主要内容

匹配器插件

匹配器插件返回 truefalse,主要供 sequencematches 使用。

运行时模式

plugins: 中具有稳定 tag 的 matcher 可以通过管理 API 在当前 runtime 内查询和切换三种模式:

模式$matcher!$matcher
normal使用 matcher 原始结果使用原始结果的取反
always_false不命中命中
always_true命中不命中

always_falsealways_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"

分类导航

分组插件
请求匹配器qnamequestionqtypeqclassclient_ipptr_ip
响应匹配器resp_ipcnamercodehas_resphas_wanted_ans
上下文与策略markenvtimerandomrate_limiter
组合与常量any_matchstring_exp_true_false

旧版插件锚点保留在本目录页;字段说明已移动到上表中的职责分组。