add flake to build go module and to block all parent roots
This commit is contained in:
@@ -24,6 +24,12 @@
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
packages.default = pkgs.buildGoModule {
|
||||||
|
name = "nutdns";
|
||||||
|
src = ./.;
|
||||||
|
vendorHash = "sha256-4V3cIgEN8WkHHrPz9SRshoiu0C+NHR0Xov1FZ06Q9XI=";
|
||||||
|
};
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
23
main.go
23
main.go
@@ -9,8 +9,21 @@ import (
|
|||||||
|
|
||||||
const upstream = "1.1.1.1:53"
|
const upstream = "1.1.1.1:53"
|
||||||
|
|
||||||
var blocklist = map[string]bool{
|
var blocklist = []string{
|
||||||
"x.com.": true,
|
"x.com.",
|
||||||
|
"twitter.com.",
|
||||||
|
"example.com.",
|
||||||
|
}
|
||||||
|
|
||||||
|
func isBlocked(domain string) bool {
|
||||||
|
domain = strings.ToLower(domain)
|
||||||
|
for _, blocked := range blocklist {
|
||||||
|
// Check exact match or subdomain
|
||||||
|
if domain == blocked || strings.HasSuffix(domain, "."+blocked) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
func handleDNS(w dns.ResponseWriter, r *dns.Msg) {
|
func handleDNS(w dns.ResponseWriter, r *dns.Msg) {
|
||||||
@@ -20,7 +33,7 @@ func handleDNS(w dns.ResponseWriter, r *dns.Msg) {
|
|||||||
c := new(dns.Client)
|
c := new(dns.Client)
|
||||||
for _, q := range r.Question {
|
for _, q := range r.Question {
|
||||||
log.Printf("question: %s", q.Name)
|
log.Printf("question: %s", q.Name)
|
||||||
if blocklist[strings.ToLower(q.Name)] {
|
if isBlocked(q.Name) {
|
||||||
res, err := dns.NewRR(q.Name + " 60 IN A 0.0.0.0")
|
res, err := dns.NewRR(q.Name + " 60 IN A 0.0.0.0")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -41,10 +54,8 @@ func handleDNS(w dns.ResponseWriter, r *dns.Msg) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
|
||||||
dns.HandleFunc(".", handleDNS)
|
dns.HandleFunc(".", handleDNS)
|
||||||
|
server := &dns.Server{Addr: ":53", Net: "udp"}
|
||||||
server := &dns.Server{Addr: ":8053", Net: "udp"}
|
|
||||||
log.Println("Starting DNS Server on :53")
|
log.Println("Starting DNS Server on :53")
|
||||||
log.Fatal(server.ListenAndServe())
|
log.Fatal(server.ListenAndServe())
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user