plugin/header: Add support for query modification (#5548) (#5556)

This commit is contained in:
Christoph Heer
2022-08-12 13:46:06 +02:00
committed by GitHub
parent c7fe4a0c4d
commit 5c1447e0b0
6 changed files with 176 additions and 51 deletions

View File

@@ -26,18 +26,7 @@ type ResponseHeaderWriter struct {
// WriteMsg implements the dns.ResponseWriter interface.
func (r *ResponseHeaderWriter) WriteMsg(res *dns.Msg) error {
// handle all supported flags
for _, rule := range r.Rules {
switch rule.Flag {
case authoritative:
res.Authoritative = rule.State
case recursionAvailable:
res.RecursionAvailable = rule.State
case recursionDesired:
res.RecursionDesired = rule.State
}
}
applyRules(res, r.Rules)
return r.ResponseWriter.WriteMsg(res)
}
@@ -90,3 +79,17 @@ func newRules(key string, args []string) ([]Rule, error) {
return rules, nil
}
func applyRules(res *dns.Msg, rules []Rule) {
// handle all supported flags
for _, rule := range rules {
switch rule.Flag {
case authoritative:
res.Authoritative = rule.State
case recursionAvailable:
res.RecursionAvailable = rule.State
case recursionDesired:
res.RecursionDesired = rule.State
}
}
}