+ rewrites: support IP exception; support "pass A only" case

+ rewrites: support IP exception

	host.com -> 1.2.3.4
	host.com -> AAAA

Response:

	A:
		A = 1.2.3.4
	AAAA:
		AAAA = <IPv6 address of host.com>

+ rewrites: support "pass A only" case

	host.com -> A

Response:

	A:
		A = <IPv4 address of host.com>
	AAAA:
		<empty>
This commit is contained in:
Simon Zolin
2020-06-03 12:04:23 +03:00
parent 9df7aba9e1
commit 5980db1a2d
5 changed files with 195 additions and 27 deletions

View File

@@ -69,6 +69,16 @@ func (a rewritesArray) Less(i, j int) bool {
// Prepare entry for use
func (r *RewriteEntry) prepare() {
if r.Answer == "AAAA" {
r.IP = nil
r.Type = dns.TypeAAAA
return
} else if r.Answer == "A" {
r.IP = nil
r.Type = dns.TypeA
return
}
ip := net.ParseIP(r.Answer)
if ip == nil {
r.Type = dns.TypeCNAME