Workflow - Matcher 匹配器¶
下面是一些 Workflow 预定义的匹配器
ListenerClient-IPQTypeQNameHas-Resp-MsgResp-IPMarkEnvMetadataPluginMatch-AndMatch-OrInvert*
Listener¶
匹配请求的监听器
值类型:字符串 | 数组(字符串)
workflows:
- tag: default
rules:
- match-and:
- listener: listener-tcp
- listener: # 这样也可以,只需一个匹配即可
- listener-tcp
- listener-udp
exec:
...
Client-IP¶
匹配请求的客户端 IP
值类型:(IP / CIDR) | 数组(IP / CIDR)
workflows:
- tag: default
rules:
- match-and:
- client-ip: 192.168.0.2
- client-ip: # 这样也可以,只需一个匹配即可
- 192.168.0.4
- 192.168.0.0/24 # 这样也可以
exec:
...
QType¶
匹配请求的查询类型
值类型:字符串 | 数组(字符串) | 正整数 | 数组(正整数)
workflows:
- tag: default
rules:
- match-and:
- qtype: 28 # AAAA
- qtype: # 这样也可以,只需一个匹配即可
- 28 # AAAA
- HTTPS # 这样也可以, 65
exec:
...
QName¶
匹配请求的查询名
值类型:字符串 | 数组(字符串)
workflows:
- tag: default
rules:
- match-and:
- qname: www.google.com
- qname: # 这样也可以,只需一个匹配即可
- www.google.com
- www.youtube.com
exec:
...
Has-Resp-Msg¶
匹配请求是否有响应消息
值类型:布尔值
workflows:
- tag: default
rules:
- match-and:
- has-resp-msg: true # 是否有响应消息
- has-resp-msg: false # 是否没有响应消息
exec:
...
Resp-IP¶
匹配响应 IP,所有 IP 地址只需要匹配一个即可
值类型:(IP / CIDR) | 数组(IP / CIDR)
workflows:
- tag: default
rules:
- match-and:
- resp-ip: 192.168.0.1
- resp-ip: # 这样也可以,只需一个匹配即可
- 192.168.0.2
- 192.168.0.0/24 # 这样也可以
exec:
...
Mark¶
匹配标记 Mark,所有 Mark 只需要匹配一个即可
Mark可以通过Mark执行器设置
值类型:正整数 | 数组(正整数)
Env¶
匹配环境变量 Env,所有 Env 只需要匹配一个即可
值类型:键值对(字符串 => 字符串)
Metadata¶
匹配 Metadata,所有 Metadata 只需要匹配一个即可
Metadata可以通过Metadata执行器设置
值类型:键值对(字符串 => 字符串)
Plugin¶
通过匹配器插件匹配请求
workflows:
- tag: default
rules:
- match-and:
- plugin:
tag: plugin-tag # 插件标签
args: # 插件参数,视插件而定
foo: bar
exec:
...
Match-And¶
要求匹配 match-and 中的所有匹配器
值类型:数组(匹配器)
Match-Or¶
要求匹配 match-or 中的任意一个匹配器
值类型:数组(匹配器)
Invert¶
反转匹配结果,可以附加在任意匹配器上