Funkensturm updates
This commit is contained in:
parent
fb54a7f460
commit
d6b1d886d1
|
@ -1,15 +1,32 @@
|
|||
package main
|
||||
|
||||
// This is transparant proxy
|
||||
|
||||
import (
|
||||
"dns"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
func send(m *dns.Msg) (buf []byte) {
|
||||
var o *dns.Msg
|
||||
for _, c := range qr {
|
||||
o, _ = c.Client.Exchange(m, c.Addr)
|
||||
if *verbose {
|
||||
fmt.Printf("--> %s\n", m.Question[0].String())
|
||||
}
|
||||
|
||||
var o *dns.Msg
|
||||
var err error
|
||||
for _, c := range qr {
|
||||
o, err = c.Client.Exchange(m, c.Addr)
|
||||
if *verbose {
|
||||
if err == nil {
|
||||
fmt.Printf("<-- %s\n", m.Question[0].String())
|
||||
} else {
|
||||
fmt.Printf("%s\n", err.Error())
|
||||
}
|
||||
}
|
||||
}
|
||||
if err == nil {
|
||||
buf, _ = o.Pack()
|
||||
}
|
||||
buf, _ = o.Pack()
|
||||
return
|
||||
}
|
||||
|
||||
|
|
|
@ -9,10 +9,7 @@ package main
|
|||
import (
|
||||
"dns"
|
||||
"flag"
|
||||
"log"
|
||||
"os"
|
||||
"os/signal"
|
||||
"runtime/pprof"
|
||||
"strings"
|
||||
)
|
||||
|
||||
|
@ -76,14 +73,15 @@ func listenAndServe(add, net string) {
|
|||
}
|
||||
|
||||
func main() {
|
||||
sserver := flag.String("sserver", "127.0.0.1:8053", "set the listener address")
|
||||
rserver := flag.String("rserver", "127.0.0.1:53", "remote server address(es), seperate with commas")
|
||||
cpuprofile := flag.String("cpuprofile", "", "write cpu profile to file")
|
||||
listen := flag.String("listen", "127.0.0.1:8053", "set the listener address")
|
||||
server := flag.String("server", "127.0.0.1:53", "remote server address(es), seperate with commas")
|
||||
verbose = flag.Bool("verbose", false, "Print packet as it flows through")
|
||||
// cpuprofile := flag.String("cpuprofile", "", "write cpu profile to file")
|
||||
flag.Usage = func() {
|
||||
flag.PrintDefaults()
|
||||
}
|
||||
flag.Parse()
|
||||
/*
|
||||
if *cpuprofile != "" {
|
||||
f, err := os.Create(*cpuprofile)
|
||||
if err != nil {
|
||||
|
@ -92,8 +90,9 @@ func main() {
|
|||
pprof.StartCPUProfile(f)
|
||||
defer pprof.StopCPUProfile()
|
||||
}
|
||||
*/
|
||||
|
||||
clients := strings.Split(*rserver, ",")
|
||||
clients := strings.Split(*server, ",")
|
||||
qr = make([]*FunkClient, len(clients))
|
||||
for i, ra := range clients {
|
||||
qr[i] = new(FunkClient)
|
||||
|
@ -109,8 +108,8 @@ func main() {
|
|||
}
|
||||
|
||||
dns.HandleFunc(".", serve)
|
||||
go listenAndServe(*sserver, "tcp")
|
||||
go listenAndServe(*sserver, "udp")
|
||||
go listenAndServe(*listen, "tcp")
|
||||
go listenAndServe(*listen, "udp")
|
||||
|
||||
forever:
|
||||
for {
|
||||
|
|
8
types.go
8
types.go
|
@ -134,9 +134,13 @@ type Question struct {
|
|||
Qclass uint16
|
||||
}
|
||||
|
||||
func (q *Question) String() string {
|
||||
func (q *Question) String() (s string) {
|
||||
// prefix with ; (as in dig)
|
||||
s := ";" + q.Name + "\t"
|
||||
if len(q.Name) == 0 {
|
||||
s = ";.\t" // root label
|
||||
} else {
|
||||
s = ";" + q.Name + "\t"
|
||||
}
|
||||
s = s + Class_str[q.Qclass] + "\t"
|
||||
if _, ok := Rr_str[q.Qtype]; ok {
|
||||
s += " " + Rr_str[q.Qtype]
|
||||
|
|
Loading…
Reference in New Issue