2024-08-24 01:16:10 +03:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
2024-08-24 17:46:34 +03:00
|
|
|
dnsProxy "kvas2-go/dns-proxy"
|
2024-08-24 01:16:10 +03:00
|
|
|
"log"
|
|
|
|
)
|
|
|
|
|
|
|
|
var (
|
2024-08-24 17:46:34 +03:00
|
|
|
ListenPort = uint16(7548)
|
2024-08-24 01:16:10 +03:00
|
|
|
UsableDNSServerAddress = "127.0.0.1"
|
2024-08-24 17:46:34 +03:00
|
|
|
UsableDNSServerPort = uint16(53)
|
2024-08-24 01:16:10 +03:00
|
|
|
)
|
|
|
|
|
|
|
|
func main() {
|
2024-08-24 17:46:34 +03:00
|
|
|
proxy := dnsProxy.New("", ListenPort, UsableDNSServerAddress, UsableDNSServerPort)
|
|
|
|
proxy.MsgHandler = func(msg *dnsProxy.Message) {
|
|
|
|
for _, q := range msg.QD {
|
|
|
|
fmt.Printf("%x: <- Request name: %s\n", msg.ID, q.QName.String())
|
2024-08-24 01:16:10 +03:00
|
|
|
}
|
2024-08-24 17:46:34 +03:00
|
|
|
for _, a := range msg.AN {
|
|
|
|
switch v := a.(type) {
|
|
|
|
case dnsProxy.Address:
|
|
|
|
fmt.Printf("%x: -> A: Name: %s; Address: %s; TTL: %d\n", msg.ID, v.Name, v.Address.String(), v.TTL)
|
|
|
|
case dnsProxy.CName:
|
|
|
|
fmt.Printf("%x: -> CNAME: Name: %s; CName: %s\n", msg.ID, v.Name, v.CName)
|
|
|
|
default:
|
|
|
|
fmt.Printf("%x: -> Unknown: %x\n", msg.ID, v.EncodeResource())
|
|
|
|
}
|
2024-08-24 01:16:10 +03:00
|
|
|
}
|
2024-08-24 17:46:34 +03:00
|
|
|
for _, a := range msg.NS {
|
|
|
|
fmt.Printf("%x: -> NS: %x\n", msg.ID, a.EncodeResource())
|
2024-08-24 01:16:10 +03:00
|
|
|
}
|
2024-08-24 17:46:34 +03:00
|
|
|
for _, a := range msg.AR {
|
|
|
|
fmt.Printf("%x: -> NS: %x\n", msg.ID, a.EncodeResource())
|
2024-08-24 01:16:10 +03:00
|
|
|
}
|
|
|
|
}
|
2024-08-24 17:46:34 +03:00
|
|
|
err := proxy.Listen()
|
2024-08-24 01:16:10 +03:00
|
|
|
if err != nil {
|
2024-08-24 17:46:34 +03:00
|
|
|
log.Fatal(err)
|
2024-08-24 01:16:10 +03:00
|
|
|
}
|
2024-08-24 17:46:34 +03:00
|
|
|
defer proxy.Close()
|
2024-08-24 01:16:10 +03:00
|
|
|
}
|