@@ -3,7 +3,9 @@ package cmd
3
3
import (
4
4
"fmt"
5
5
"os"
6
+ "strings"
6
7
8
+ "github.com/hashicorp/go-hclog"
7
9
"github.com/hashicorp/go-multierror"
8
10
"github.com/spf13/cobra"
9
11
"github.com/znscli/zns/internal/query"
@@ -12,7 +14,9 @@ import (
12
14
var (
13
15
version string
14
16
15
- debug bool
17
+ debug bool
18
+ server string
19
+ qtype string
16
20
17
21
rootCmd = & cobra.Command {
18
22
Use : "zns" ,
@@ -25,13 +29,50 @@ var (
25
29
os .Exit (1 )
26
30
}
27
31
28
- querier := query .NewQuerier ("1.1.1.1:53" , nil )
32
+ // Determine log level based on environment variable and debug flag
33
+ logLevel := os .Getenv ("ZNS_LOG_LEVEL" )
34
+ if debug {
35
+ logLevel = "DEBUG" // Override log level to DEBUG if the debug flag is set
36
+ }
37
+
38
+ logger := hclog .New (& hclog.LoggerOptions {
39
+ Name : "zns" ,
40
+ Level : hclog .LevelFromString (logLevel ),
41
+ Color : hclog .AutoColor ,
42
+ ColorHeaderAndFields : true ,
43
+ DisableTime : true ,
44
+ })
45
+
46
+ // Log the debug state and current log level
47
+ logger .Debug ("Debug logging enabled" , "debug" , debug )
48
+ logger .Debug ("Log level" , "level" , logger .GetLevel ())
49
+
50
+ // Log the arguments and flags
51
+ logger .Debug ("Args" , "args" , args )
52
+ logger .Debug ("Flags" , "server" , server , "qtype" , qtype , "debug" , debug )
53
+
54
+ // Create a new querier
55
+ querier := query .NewQuerier (fmt .Sprintf ("%s:53" , server ), logger )
29
56
57
+ logger .Debug ("Creating querier" , "server" , server , "qtype" , qtype , "domain" , args [0 ])
58
+
59
+ // Prepare query types
30
60
qtypes := make ([]uint16 , 0 , len (query .QueryTypes ))
31
61
for _ , qtype := range query .QueryTypes {
32
62
qtypes = append (qtypes , qtype )
33
63
}
34
64
65
+ // Set specific query type if provided
66
+ if qtype != "" {
67
+ qtypeInt , ok := query .QueryTypes [strings .ToUpper (qtype )]
68
+ if ! ok {
69
+ fmt .Printf ("error: invalid query type: %s\n " , qtype )
70
+ os .Exit (1 )
71
+ }
72
+ qtypes = []uint16 {qtypeInt }
73
+ }
74
+
75
+ // Execute the query
35
76
messages , err := querier .MultiQuery (args [0 ], qtypes )
36
77
if err != nil {
37
78
if merr , ok := err .(* multierror.Error ); ok {
@@ -44,14 +85,17 @@ var (
44
85
os .Exit (1 )
45
86
}
46
87
88
+ // Print the records
47
89
printRecords (args [0 ], messages )
48
90
},
49
91
}
50
92
)
51
93
52
94
func init () {
53
95
rootCmd .CompletionOptions .DisableDefaultCmd = true
54
- rootCmd .Flags ().BoolVarP (& debug , "debug" , "d" , false , "verbose logging" )
96
+ rootCmd .Flags ().StringVarP (& server , "server" , "s" , "1.1.1.1" , "DNS server to query" )
97
+ rootCmd .Flags ().StringVarP (& qtype , "query-type" , "q" , "" , "DNS query type" )
98
+ rootCmd .Flags ().BoolVar (& debug , "debug" , false , "Enable debug logging" )
55
99
}
56
100
57
101
func Execute () {
0 commit comments