11package command
22
33import (
4- "bufio"
54 "context"
65 "errors"
76 "net"
@@ -12,11 +11,11 @@ import (
1211 "time"
1312
1413 "github.com/spf13/cobra"
14+ "github.com/v-byte-cpu/sx/command/log"
1515 "github.com/v-byte-cpu/sx/pkg/ip"
1616 "github.com/v-byte-cpu/sx/pkg/packet/afpacket"
1717 "github.com/v-byte-cpu/sx/pkg/scan"
1818 "github.com/v-byte-cpu/sx/pkg/scan/arp"
19- "go.uber.org/zap"
2019)
2120
2221var errSrcIP = errors .New ("invalid source IP" )
@@ -77,44 +76,22 @@ var arpCmd = &cobra.Command{
7776 }
7877 }
7978
80- r := & scan.Range {Subnet : dstSubnet , Interface : iface , SrcIP : srcIP .To4 (), SrcMAC : srcMAC }
81- return startEngine (r )
82- },
83- }
84-
85- func logResults (logger * zap.Logger , results <- chan * arp.ScanResult ) {
86- bw := bufio .NewWriter (os .Stdout )
87- defer bw .Flush ()
88- for result := range results {
89- // TODO refactor it using logger facade interface
79+ var logger log.Logger
9080 if jsonFlag {
91- data , err := result .MarshalJSON ()
92- if err != nil {
93- logger .Error ("arp" , zap .Error (err ))
94- }
95- _ , err = bw .Write (data )
96- if err != nil {
97- logger .Error ("arp" , zap .Error (err ))
98- }
81+ logger , err = log .NewJSONLogger (os .Stdout , "arp" )
9982 } else {
100- _ , err := bw .WriteString (result .String ())
101- if err != nil {
102- logger .Error ("arp" , zap .Error (err ))
103- }
83+ logger , err = log .NewPlainLogger (os .Stdout , "arp" )
10484 }
105- err := bw .WriteByte ('\n' )
10685 if err != nil {
107- logger . Error ( "arp" , zap . Error ( err ))
86+ return err
10887 }
109- }
110- }
11188
112- func startEngine (r * scan.Range ) error {
113- logger , err := zap .NewProduction ()
114- if err != nil {
115- return err
116- }
89+ r := & scan.Range {Subnet : dstSubnet , Interface : iface , SrcIP : srcIP .To4 (), SrcMAC : srcMAC }
90+ return startEngine (logger , r )
91+ },
92+ }
11793
94+ func startEngine (logger log.Logger , r * scan.Range ) error {
11895 ctx , cancel := signal .NotifyContext (context .Background (), os .Interrupt )
11996 defer cancel ()
12097
@@ -136,7 +113,7 @@ func startEngine(r *scan.Range) error {
136113 wg .Add (1 )
137114 go func () {
138115 defer wg .Done ()
139- logResults ( logger , m .Results ())
116+ logger . LogResults ( m .Results ())
140117 }()
141118
142119 // start scan
@@ -153,7 +130,7 @@ func startEngine(r *scan.Range) error {
153130 go func () {
154131 defer wg .Done ()
155132 for err := range errc {
156- logger .Error ("arp" , zap . Error ( err ) )
133+ logger .Error (err )
157134 }
158135 }()
159136 wg .Wait ()
0 commit comments