Created
February 27, 2015 07:45
-
-
Save baris/76e577d15b572fa3619f to your computer and use it in GitHub Desktop.
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 characters
package main | |
import ( | |
"log" | |
"math/rand" | |
"time" | |
"github.com/miekg/dns" | |
) | |
const ( | |
ORIGIN string = "$ORIGIN metin.org." | |
SOA string = "@ SOA metin.org. baris.metin.org 2015032600 1800 900 0604800 604800" | |
) | |
func main() { | |
start() | |
} | |
type DelayedHandler struct { | |
} | |
func NewRR(s string) dns.RR { r, _ := dns.NewRR(s); return r } | |
func query(r *dns.Msg) *dns.Msg { | |
c := new(dns.Client) | |
m, _, _ := c.Exchange(r, "8.8.8.8:53") | |
return m | |
} | |
func (h DelayedHandler) ServeDNS(w dns.ResponseWriter, r *dns.Msg) { | |
log.Println("Handling dns query for ", r.Question) | |
m := query(r) | |
delay := 0 | |
if r.Question[0].Qtype == dns.TypeAAAA || r.Question[0].Qtype == dns.TypeA { | |
delay = rand.Intn(3) | |
} | |
time.Sleep(time.Duration(delay) * time.Second) | |
w.WriteMsg(m) | |
} | |
func start() { | |
h := DelayedHandler{} | |
srvu := &dns.Server{Addr: ":5354", Net: "udp", Handler: h} | |
srvt := &dns.Server{Addr: ":5354", Net: "tcp", Handler: h} | |
if err := srvu.ListenAndServe(); err != nil { | |
log.Fatal("Failed to listen on :53", err) | |
} | |
if err := srvt.ListenAndServe(); err != nil { | |
log.Fatal("Failed to listen on :53", err) | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment