moved handle of blacklist domains
This commit is contained in:
parent
9bc041ca7e
commit
d77db9234e
36
blacklist.go
36
blacklist.go
@ -3,12 +3,18 @@ package main
|
|||||||
import (
|
import (
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"log"
|
"log"
|
||||||
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
"regexp"
|
"regexp"
|
||||||
|
|
||||||
"github.com/miekg/dns"
|
"github.com/miekg/dns"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const blockTTL uint32 = 300
|
||||||
|
|
||||||
|
var nullIPv4 = net.IPv4(0, 0, 0, 0)
|
||||||
|
var nullIPv6 = net.ParseIP("::/0")
|
||||||
|
|
||||||
func loadBlacklist(config []configBlacklist) map[string]bool {
|
func loadBlacklist(config []configBlacklist) map[string]bool {
|
||||||
list := make([]string, 0)
|
list := make([]string, 0)
|
||||||
for _, element := range config {
|
for _, element := range config {
|
||||||
@ -77,3 +83,33 @@ func parseRawBlacklist(blacklist configBlacklist, raw string) []string {
|
|||||||
|
|
||||||
return finalList
|
return finalList
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func handleBlockedDomain(w dns.ResponseWriter, r *dns.Msg) {
|
||||||
|
q := r.Question[0]
|
||||||
|
|
||||||
|
m := new(dns.Msg)
|
||||||
|
m.SetReply(r)
|
||||||
|
if q.Qtype == dns.TypeA {
|
||||||
|
m.Answer = append(m.Answer, &dns.A{
|
||||||
|
Hdr: dns.RR_Header{
|
||||||
|
Name: q.Name,
|
||||||
|
Rrtype: dns.TypeA,
|
||||||
|
Class: dns.ClassINET,
|
||||||
|
Ttl: blockTTL,
|
||||||
|
},
|
||||||
|
A: nullIPv4,
|
||||||
|
})
|
||||||
|
} else if q.Qtype == dns.TypeAAAA {
|
||||||
|
m.Answer = append(m.Answer, &dns.AAAA{
|
||||||
|
Hdr: dns.RR_Header{
|
||||||
|
Name: q.Name,
|
||||||
|
Rrtype: dns.TypeAAAA,
|
||||||
|
Class: dns.ClassINET,
|
||||||
|
Ttl: blockTTL,
|
||||||
|
},
|
||||||
|
AAAA: nullIPv6,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
w.WriteMsg(m)
|
||||||
|
}
|
||||||
|
28
coolDns.go
28
coolDns.go
@ -205,33 +205,7 @@ func createServer(zones zoneMap, config config, aclList map[string]*net.IPNet, b
|
|||||||
}
|
}
|
||||||
|
|
||||||
if _, ok := blacklist[r.Question[0].Name]; ok {
|
if _, ok := blacklist[r.Question[0].Name]; ok {
|
||||||
// Domain is blocked
|
handleBlockedDomain(w, r)
|
||||||
m := new(dns.Msg)
|
|
||||||
m.SetReply(r)
|
|
||||||
if r.Question[0].Qtype == dns.TypeA {
|
|
||||||
m.Answer = append(m.Answer, &dns.A{
|
|
||||||
Hdr: dns.RR_Header{
|
|
||||||
Name: r.Question[0].Name,
|
|
||||||
Rrtype: dns.TypeA,
|
|
||||||
Class: dns.ClassINET,
|
|
||||||
Ttl: 1000,
|
|
||||||
},
|
|
||||||
A: net.IPv4(0, 0, 0, 0),
|
|
||||||
})
|
|
||||||
} else if r.Question[0].Qtype == dns.TypeAAAA {
|
|
||||||
m.Answer = append(m.Answer, &dns.AAAA{
|
|
||||||
Hdr: dns.RR_Header{
|
|
||||||
Name: r.Question[0].Name,
|
|
||||||
Rrtype: dns.TypeA,
|
|
||||||
Class: dns.ClassINET,
|
|
||||||
Ttl: 1000,
|
|
||||||
},
|
|
||||||
AAAA: net.ParseIP("::/0"),
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
w.WriteMsg(m)
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// Forward request
|
// Forward request
|
||||||
in, _, err := c.Exchange(r, config.Forward.Server)
|
in, _, err := c.Exchange(r, config.Forward.Server)
|
||||||
|
Loading…
Reference in New Issue
Block a user