mirror of
https://github.com/coredns/coredns.git
synced 2025-10-27 16:24:19 -04:00
plugin/rewrite: add handling of TTL field rewrites (#2048)
Resolves: #1981 Signed-off-by: Paul Greenberg <greenpau@outlook.com>
This commit is contained in:
@@ -50,7 +50,6 @@ func (rw Rewrite) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg
|
||||
state.Req.Question[0] = wr.originalQuestion
|
||||
return dns.RcodeServerFailure, fmt.Errorf("invalid name after rewrite: %s", x)
|
||||
}
|
||||
|
||||
respRule := rule.GetResponseRule()
|
||||
if respRule.Active == true {
|
||||
wr.ResponseRewrite = true
|
||||
@@ -111,23 +110,25 @@ func newRule(args ...string) (Rule, error) {
|
||||
startArg = 1
|
||||
}
|
||||
|
||||
if ruleType == "answer" {
|
||||
return nil, fmt.Errorf("response rewrites must begin with a name rule")
|
||||
}
|
||||
|
||||
if ruleType != "edns0" && ruleType != "name" && expectNumArgs != 3 {
|
||||
return nil, fmt.Errorf("%s rules must have exactly two arguments", ruleType)
|
||||
}
|
||||
|
||||
switch ruleType {
|
||||
case "answer":
|
||||
return nil, fmt.Errorf("response rewrites must begin with a name rule")
|
||||
case "name":
|
||||
return newNameRule(mode, args[startArg:]...)
|
||||
case "class":
|
||||
if expectNumArgs != 3 {
|
||||
return nil, fmt.Errorf("%s rules must have exactly two arguments", ruleType)
|
||||
}
|
||||
return newClassRule(mode, args[startArg:]...)
|
||||
case "type":
|
||||
if expectNumArgs != 3 {
|
||||
return nil, fmt.Errorf("%s rules must have exactly two arguments", ruleType)
|
||||
}
|
||||
return newTypeRule(mode, args[startArg:]...)
|
||||
case "edns0":
|
||||
return newEdns0Rule(mode, args[startArg:]...)
|
||||
case "ttl":
|
||||
return newTtlRule(mode, args[startArg:]...)
|
||||
default:
|
||||
return nil, fmt.Errorf("invalid rule type %q", args[0])
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user