diff options
Diffstat (limited to 'plugin/rewrite/rewrite.go')
-rw-r--r-- | plugin/rewrite/rewrite.go | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/plugin/rewrite/rewrite.go b/plugin/rewrite/rewrite.go index e340fa3ca..7389c68eb 100644 --- a/plugin/rewrite/rewrite.go +++ b/plugin/rewrite/rewrite.go @@ -6,6 +6,7 @@ import ( "strings" "github.com/coredns/coredns/plugin" + "github.com/coredns/coredns/request" "github.com/miekg/dns" ) @@ -38,8 +39,10 @@ type Rewrite struct { // ServeDNS implements the plugin.Handler interface. func (rw Rewrite) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (int, error) { wr := NewResponseReverter(w, r) + state := request.Request{W: w, Req: r} + for _, rule := range rw.Rules { - switch result := rule.Rewrite(w, r); result { + switch result := rule.Rewrite(state); result { case RewriteDone: respRule := rule.GetResponseRule() if respRule.Active == true { @@ -68,7 +71,7 @@ func (rw Rewrite) Name() string { return "rewrite" } // Rule describes a rewrite rule. type Rule interface { // Rewrite rewrites the current request. - Rewrite(dns.ResponseWriter, *dns.Msg) Result + Rewrite(state request.Request) Result // Mode returns the processing mode stop or continue. Mode() string // GetResponseRule returns the rule to rewrite response with, if any. |