File tree 1 file changed +46
-0
lines changed
1 file changed +46
-0
lines changed Original file line number Diff line number Diff line change
1
+ package query
2
+
3
+ import (
4
+ "github.com/hashicorp/go-hclog"
5
+ "github.com/miekg/dns"
6
+ "os"
7
+ )
8
+
9
+ // Querier is an interface for querying DNS records
10
+ type Querier interface {
11
+ Query (domain string , qtype uint16 ) (* dns.Msg , error )
12
+ }
13
+
14
+ // Query implements the Querier interface
15
+ type Query struct {
16
+ Server string
17
+ hclog.Logger
18
+ }
19
+
20
+ // NewQuerier creates a new Querier with the specified server
21
+ func NewQuerier (server string , logger hclog.Logger ) Querier {
22
+ if logger == nil {
23
+ logger = hclog .New (& hclog.LoggerOptions {
24
+ Name : "zns" ,
25
+ Level : hclog .LevelFromString (os .Getenv ("ZNS_LOG_LEVEL" )),
26
+ Color : hclog .AutoColor ,
27
+ DisableTime : true ,
28
+ })
29
+ logger .Warn ("no logger provided, using default 'zns' logger" )
30
+ }
31
+ return & Query {Server : server , Logger : logger }
32
+ }
33
+
34
+ // Query performs the DNS query and returns the response and any error encountered
35
+ func (q * Query ) Query (domain string , qtype uint16 ) (* dns.Msg , error ) {
36
+ msg := new (dns.Msg )
37
+ msg .SetQuestion (dns .Fqdn (domain ), qtype )
38
+
39
+ client := new (dns.Client )
40
+ resp , _ , err := client .Exchange (msg , q .Server )
41
+ if err != nil {
42
+ return nil , err
43
+ }
44
+
45
+ return resp , nil
46
+ }
You can’t perform that action at this time.
0 commit comments