diff options
| author | Shulhan <ms@kilabit.info> | 2021-11-12 00:19:22 +0700 |
|---|---|---|
| committer | Shulhan <ms@kilabit.info> | 2021-11-13 14:40:47 +0700 |
| commit | f5691caf18928e3a4a5d282ebacf237640e872b3 (patch) | |
| tree | 8bba3e9a0fc748f5b56425b135c2e6d0e08908b8 /lib/dns/server_example_test.go | |
| parent | d0ce55a4d6fda28e0dfd790f33283c90b6dc91db (diff) | |
| download | pakakeh.go-f5691caf18928e3a4a5d282ebacf237640e872b3.tar.xz | |
lib/dns: use snake case for file naming
Using snake case make the file naming more readable.
Diffstat (limited to 'lib/dns/server_example_test.go')
| -rw-r--r-- | lib/dns/server_example_test.go | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/lib/dns/server_example_test.go b/lib/dns/server_example_test.go new file mode 100644 index 00000000..a2a69eb7 --- /dev/null +++ b/lib/dns/server_example_test.go @@ -0,0 +1,74 @@ +package dns_test + +import ( + "fmt" + "log" + "time" + + "github.com/shuLhan/share/lib/dns" +) + +func clientLookup(nameserver string) { + cl, err := dns.NewUDPClient(nameserver) + if err != nil { + log.Println(err) + return + } + + msg, err := cl.Lookup(false, dns.QueryTypeA, dns.QueryClassIN, + "kilabit.info") + if err != nil { + log.Println(err) + return + } + + fmt.Printf("Receiving DNS message: %s\n", msg) + for x, answer := range msg.Answer { + fmt.Printf("Answer %d: %s\n", x, answer.Value) + } + for x, auth := range msg.Authority { + fmt.Printf("Authority %d: %s\n", x, auth.Value) + } + for x, add := range msg.Additional { + fmt.Printf("Additional %d: %s\n", x, add.Value) + } +} + +func ExampleServer() { + serverAddress := "127.0.0.1:5300" + + serverOptions := &dns.ServerOptions{ + ListenAddress: "127.0.0.1:5300", + HTTPPort: 8443, + TLSCertFile: "testdata/domain.crt", + TLSPrivateKey: "testdata/domain.key", + TLSAllowInsecure: true, + } + + server, err := dns.NewServer(serverOptions) + if err != nil { + log.Fatal(err) + } + + // Load records to be served from zone file. + zoneFile, err := dns.ParseZoneFile("testdata/kilabit.info", "", 0) + if err != nil { + log.Fatal(err) + } + + server.PopulateCaches(zoneFile.Messages(), zoneFile.Path) + + go func() { + err = server.ListenAndServe() + if err != nil { + log.Fatal(err) + } + }() + + // Wait for all listeners running. + time.Sleep(500 * time.Millisecond) + + clientLookup(serverAddress) + + server.Stop() +} |
