aboutsummaryrefslogtreecommitdiff
path: root/lib/dns/server_example_test.go
diff options
context:
space:
mode:
authorShulhan <ms@kilabit.info>2021-11-12 00:19:22 +0700
committerShulhan <ms@kilabit.info>2021-11-13 14:40:47 +0700
commitf5691caf18928e3a4a5d282ebacf237640e872b3 (patch)
tree8bba3e9a0fc748f5b56425b135c2e6d0e08908b8 /lib/dns/server_example_test.go
parentd0ce55a4d6fda28e0dfd790f33283c90b6dc91db (diff)
downloadpakakeh.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.go74
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()
+}