add flake to build go module and to block all parent roots

This commit is contained in:
2025-09-22 10:18:00 +08:00
parent c4e8442517
commit 191f2e6ba2
2 changed files with 23 additions and 6 deletions

View File

@@ -24,6 +24,12 @@
];
};
};
packages.default = pkgs.buildGoModule {
name = "nutdns";
src = ./.;
vendorHash = "sha256-4V3cIgEN8WkHHrPz9SRshoiu0C+NHR0Xov1FZ06Q9XI=";
};
}
);
}

23
main.go
View File

@@ -9,8 +9,21 @@ import (
const upstream = "1.1.1.1:53"
var blocklist = map[string]bool{
"x.com.": true,
var blocklist = []string{
"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) {
@@ -20,7 +33,7 @@ func handleDNS(w dns.ResponseWriter, r *dns.Msg) {
c := new(dns.Client)
for _, q := range r.Question {
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")
if err != nil {
log.Fatal(err)
@@ -41,10 +54,8 @@ func handleDNS(w dns.ResponseWriter, r *dns.Msg) {
}
func main() {
dns.HandleFunc(".", handleDNS)
server := &dns.Server{Addr: ":8053", Net: "udp"}
server := &dns.Server{Addr: ":53", Net: "udp"}
log.Println("Starting DNS Server on :53")
log.Fatal(server.ListenAndServe())
}