aboutsummaryrefslogtreecommitdiff
path: root/middleware/rewrite/name.go
diff options
context:
space:
mode:
Diffstat (limited to 'middleware/rewrite/name.go')
-rw-r--r--middleware/rewrite/name.go29
1 files changed, 29 insertions, 0 deletions
diff --git a/middleware/rewrite/name.go b/middleware/rewrite/name.go
new file mode 100644
index 000000000..645e1dc04
--- /dev/null
+++ b/middleware/rewrite/name.go
@@ -0,0 +1,29 @@
+// Package rewrite is middleware for rewriting requests internally to something different.
+package rewrite
+
+import (
+ "strings"
+
+ "github.com/miekg/coredns/middleware"
+ "github.com/miekg/dns"
+)
+
+// NameRule is a name rewrite rule.
+type NameRule struct {
+ From, To string
+}
+
+// Initializer
+func (rule NameRule) New(args ...string) Rule {
+ from, to := args[0], strings.Join(args[1:], " ")
+ return &NameRule{middleware.Name(from).Normalize(), middleware.Name(to).Normalize()}
+}
+
+// Rewrite rewrites the the current request.
+func (rule NameRule) Rewrite(r *dns.Msg) Result {
+ if rule.From == r.Question[0].Name {
+ r.Question[0].Name = rule.To
+ return RewriteDone
+ }
+ return RewriteIgnored
+}