@@ -8,12 +8,13 @@ package dns
88
99import (
1010 "fmt"
11+ "log/slog"
1112 "math/rand"
1213 "net"
14+ "os"
1315 "strings"
1416
1517 "github.com/blinklabs-io/cdnsd/internal/config"
16- "github.com/blinklabs-io/cdnsd/internal/logging"
1718 "github.com/blinklabs-io/cdnsd/internal/state"
1819
1920 "github.com/miekg/dns"
@@ -49,21 +50,25 @@ func Start() error {
4950
5051func startListener (server * dns.Server ) {
5152 if err := server .ListenAndServe (); err != nil {
52- logging .GetLogger ().Fatalf ("failed to start DNS listener: %s" , err )
53+ slog .Error (
54+ fmt .Sprintf ("failed to start DNS listener: %s" , err ),
55+ )
56+ os .Exit (1 )
5357 }
5458}
5559
5660func handleQuery (w dns.ResponseWriter , r * dns.Msg ) {
57- logger := logging .GetLogger ()
5861 cfg := config .GetConfig ()
5962 m := new (dns.Msg )
6063
6164 if cfg .Logging .QueryLog {
6265 for _ , q := range r .Question {
63- logger .Infof ("query: name: %s, type: %s, class: %s" ,
64- q .Name ,
65- dns .Type (q .Qtype ).String (),
66- dns .Class (q .Qclass ).String (),
66+ slog .Info (
67+ fmt .Sprintf ("query: name: %s, type: %s, class: %s" ,
68+ q .Name ,
69+ dns .Type (q .Qtype ).String (),
70+ dns .Class (q .Qclass ).String (),
71+ ),
6772 )
6873 }
6974 }
@@ -74,7 +79,9 @@ func handleQuery(w dns.ResponseWriter, r *dns.Msg) {
7479 strings .TrimSuffix (r .Question [0 ].Name , "." ),
7580 )
7681 if err != nil {
77- logger .Errorf ("failed to lookup records in state: %s" , err )
82+ slog .Error (
83+ fmt .Sprintf ("failed to lookup records in state: %s" , err ),
84+ )
7885 return
7986 }
8087 if records != nil {
@@ -83,14 +90,18 @@ func handleQuery(w dns.ResponseWriter, r *dns.Msg) {
8390 for _ , tmpRecord := range records {
8491 tmpRR , err := stateRecordToDnsRR (tmpRecord )
8592 if err != nil {
86- logger .Errorf ("failed to convert state record to dns.RR: %s" , err )
93+ slog .Error (
94+ fmt .Sprintf ("failed to convert state record to dns.RR: %s" , err ),
95+ )
8796 return
8897 }
8998 m .Answer = append (m .Answer , tmpRR )
9099 }
91100 // Send response
92101 if err := w .WriteMsg (m ); err != nil {
93- logger .Errorf ("failed to write response: %s" , err )
102+ slog .Error (
103+ fmt .Sprintf ("failed to write response: %s" , err ),
104+ )
94105 }
95106 // We found our answer, to return from handler
96107 return
@@ -101,10 +112,12 @@ func handleQuery(w dns.ResponseWriter, r *dns.Msg) {
101112 r .Question [0 ].Name ,
102113 )
103114 if err != nil {
104- logger .Errorf (
105- "failed to lookup nameservers for %s: %s" ,
106- r .Question [0 ].Name ,
107- err ,
115+ slog .Error (
116+ fmt .Sprintf (
117+ "failed to lookup nameservers for %s: %s" ,
118+ r .Question [0 ].Name ,
119+ err ,
120+ ),
108121 )
109122 }
110123 if nameservers != nil {
@@ -119,15 +132,21 @@ func handleQuery(w dns.ResponseWriter, r *dns.Msg) {
119132 // Send failure response
120133 m .SetRcode (r , dns .RcodeServerFailure )
121134 if err := w .WriteMsg (m ); err != nil {
122- logger .Errorf ("failed to write response: %s" , err )
135+ slog .Error (
136+ fmt .Sprintf ("failed to write response: %s" , err ),
137+ )
123138 }
124- logger .Errorf ("failed to query domain nameserver: %s" , err )
139+ slog .Error (
140+ fmt .Sprintf ("failed to query domain nameserver: %s" , err ),
141+ )
125142 return
126143 } else {
127144 copyResponse (r , resp , m )
128145 // Send response
129146 if err := w .WriteMsg (m ); err != nil {
130- logger .Errorf ("failed to write response: %s" , err )
147+ slog .Error (
148+ fmt .Sprintf ("failed to write response: %s" , err ),
149+ )
131150 }
132151 return
133152 }
@@ -161,7 +180,9 @@ func handleQuery(w dns.ResponseWriter, r *dns.Msg) {
161180 }
162181 // Send response
163182 if err := w .WriteMsg (m ); err != nil {
164- logger .Errorf ("failed to write response: %s" , err )
183+ slog .Error (
184+ fmt .Sprintf ("failed to write response: %s" , err ),
185+ )
165186 }
166187 // We found our answer, to return from handler
167188 return
@@ -177,15 +198,21 @@ func handleQuery(w dns.ResponseWriter, r *dns.Msg) {
177198 // Send failure response
178199 m .SetRcode (r , dns .RcodeServerFailure )
179200 if err := w .WriteMsg (m ); err != nil {
180- logger .Errorf ("failed to write response: %s" , err )
201+ slog .Error (
202+ fmt .Sprintf ("failed to write response: %s" , err ),
203+ )
181204 }
182- logger .Errorf ("failed to query domain nameserver: %s" , err )
205+ slog .Error (
206+ fmt .Sprintf ("failed to query domain nameserver: %s" , err ),
207+ )
183208 return
184209 } else {
185210 copyResponse (r , resp , m )
186211 // Send response
187212 if err := w .WriteMsg (m ); err != nil {
188- logger .Errorf ("failed to write response: %s" , err )
213+ slog .Error (
214+ fmt .Sprintf ("failed to write response: %s" , err ),
215+ )
189216 }
190217 return
191218 }
@@ -194,7 +221,9 @@ func handleQuery(w dns.ResponseWriter, r *dns.Msg) {
194221 // Return NXDOMAIN if we have no information about the requested domain or any of its parents
195222 m .SetRcode (r , dns .RcodeNameError )
196223 if err := w .WriteMsg (m ); err != nil {
197- logger .Errorf ("failed to write response: %s" , err )
224+ slog .Error (
225+ fmt .Sprintf ("failed to write response: %s" , err ),
226+ )
198227 }
199228}
200229
@@ -243,7 +272,6 @@ func randomNameserverAddress(nameservers map[string][]net.IP) net.IP {
243272}
244273
245274func doQuery (msg * dns.Msg , address string , recursive bool ) (* dns.Msg , error ) {
246- logger := logging .GetLogger ()
247275 // Default to a random fallback server if no address is specified
248276 if address == "" {
249277 address = randomFallbackServer ()
@@ -252,22 +280,26 @@ func doQuery(msg *dns.Msg, address string, recursive bool) (*dns.Msg, error) {
252280 if ! strings .Contains (address , ":" ) {
253281 address = address + `:53`
254282 }
255- logger .Debugf (
256- "querying %s: %s" ,
257- address ,
258- formatMessageQuestionSection (msg .Question ),
283+ slog .Debug (
284+ fmt .Sprintf (
285+ "querying %s: %s" ,
286+ address ,
287+ formatMessageQuestionSection (msg .Question ),
288+ ),
259289 )
260290 resp , err := dns .Exchange (msg , address )
261291 if err != nil {
262292 return nil , err
263293 }
264- logger .Debugf (
265- "response: rcode=%s, authoritative=%v, authority=%s, answer=%s, extra=%s" ,
266- dns .RcodeToString [resp .Rcode ],
267- resp .Authoritative ,
268- formatMessageAnswerSection (resp .Ns ),
269- formatMessageAnswerSection (resp .Answer ),
270- formatMessageAnswerSection (resp .Extra ),
294+ slog .Debug (
295+ fmt .Sprintf (
296+ "response: rcode=%s, authoritative=%v, authority=%s, answer=%s, extra=%s" ,
297+ dns .RcodeToString [resp .Rcode ],
298+ resp .Authoritative ,
299+ formatMessageAnswerSection (resp .Ns ),
300+ formatMessageAnswerSection (resp .Answer ),
301+ formatMessageAnswerSection (resp .Extra ),
302+ ),
271303 )
272304 // Immediately return authoritative response
273305 if resp .Authoritative {
0 commit comments