Last active
September 21, 2025 16:52
-
Star
(135)
You must be signed in to star a gist -
Fork
(27)
You must be signed in to fork a gist
-
-
Save walm/0d67b4fb2d5daf3edd4fad3e13b162cb to your computer and use it in GitHub Desktop.
Revisions
-
walm revised this gist
Nov 18, 2016 . No changes.There are no files selected for viewing
-
walm revised this gist
Nov 18, 2016 . No changes.There are no files selected for viewing
-
walm created this gist
Nov 18, 2016 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,57 @@ package main import ( "fmt" "log" "strconv" "github.com/miekg/dns" ) var records = map[string]string{ "test.service.": "192.168.0.2", } func parseQuery(m *dns.Msg) { for _, q := range m.Question { switch q.Qtype { case dns.TypeA: log.Printf("Query for %s\n", q.Name) ip := records[q.Name] if ip != "" { rr, err := dns.NewRR(fmt.Sprintf("%s A %s", q.Name, ip)) if err == nil { m.Answer = append(m.Answer, rr) } } } } } func handleDnsRequest(w dns.ResponseWriter, r *dns.Msg) { m := new(dns.Msg) m.SetReply(r) m.Compress = false switch r.Opcode { case dns.OpcodeQuery: parseQuery(m) } w.WriteMsg(m) } func main() { // attach request handler func dns.HandleFunc("service.", handleDnsRequest) // start server port := 5353 server := &dns.Server{Addr: ":" + strconv.Itoa(port), Net: "udp"} log.Printf("Starting at %d\n", port) err := server.ListenAndServe() defer server.Shutdown() if err != nil { log.Fatalf("Failed to start server: %s\n ", err.Error()) } } This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1 @@ dig @localhost -p 5353 test.service