diff --git a/config.yaml b/config.yaml index a302ea0..206a5c9 100644 --- a/config.yaml +++ b/config.yaml @@ -42,15 +42,10 @@ rules: matcher: regex matcherParams: - (.*\.)?accounts\.ea\.com.* - raw: - A: accounts.ea.com. 60 IN A 50.7.87.85 - - name: Ea Acc proxy - matcher: regex - matcherParams: - (.*\.)?signin\.ea.com\.* raw: - A: signin.ea.com. 60 IN A 50.7.87.85 - + A: "{{ .address }} 60 IN A 50.7.87.85" + - name: Ea proxy matcher: regex matcherParams: @@ -127,5 +122,5 @@ rules: matcherParams: - raw.raw. raw: - A: raw.raw. 60 IN A 1.2.3.4 - AAAA: raw.raw. 60 IN AAAA FFFF:FFFF:FFFF:FFFF::FFFF + A: "{{ .address }} 60 IN A 1.2.3.4" + AAAA: "{{ .address }} 60 IN AAAA FFFF:FFFF:FFFF:FFFF::FFFF" diff --git a/lib/config/router_helper.go b/lib/config/router_helper.go index 69ba93a..f4cc7d3 100644 --- a/lib/config/router_helper.go +++ b/lib/config/router_helper.go @@ -3,8 +3,10 @@ package config import ( + "bytes" "net" "strings" + "text/template" "github.com/FMotalleb/dns-reverse-proxy-docker/lib/provider" @@ -31,7 +33,10 @@ func (c *Config) Route(w dns.ResponseWriter, req *dns.Msg) { raw := rule.GetRaw(dns.TypeToString[req.Question[0].Qtype]) if raw != nil { - msg, err := dns.NewRR(*raw) + mapper := make(map[string]string, 0) + mapper["address"] = lcName + msg, err := dns.NewRR(formatString(*raw, mapper)) + if err != nil { log.Debug().Msgf("cannot parse raw response: %v", err) } @@ -84,3 +89,17 @@ func (c *Config) allowed(w dns.ResponseWriter, req *dns.Msg) bool { } return false } + +func formatString(text string, hashmap map[string]string) string { + + tmpl, err := template.New("Mapper").Parse(text) + if err != nil { + panic(err) + } + writer := bytes.NewBuffer(nil) + err = tmpl.Execute(writer, hashmap) + if err != nil { + panic(err) + } + return writer.String() +} diff --git a/lib/provider/proxy_handler.go b/lib/provider/proxy_handler.go index ca43d03..d611307 100644 --- a/lib/provider/proxy_handler.go +++ b/lib/provider/proxy_handler.go @@ -1,5 +1,4 @@ //go:build !test -// +build !test package provider