Skip to content

Commit 5097260

Browse files
committed
update: scan record print
1 parent f601f2f commit 5097260

File tree

6 files changed

+51
-69
lines changed

6 files changed

+51
-69
lines changed

cmd/all/all.go

+14-23
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@ package all
22

33
import (
44
"net"
5-
"os"
65

76
command "github.com/esonhugh/k8spider/cmd"
87
"github.com/esonhugh/k8spider/define"
98
"github.com/esonhugh/k8spider/pkg"
109
"github.com/esonhugh/k8spider/pkg/mutli"
10+
"github.com/esonhugh/k8spider/pkg/printer"
1111
"github.com/esonhugh/k8spider/pkg/scanner"
1212
"github.com/miekg/dns"
1313
log "github.com/sirupsen/logrus"
@@ -27,52 +27,43 @@ var AllCmd = &cobra.Command{
2727
log.Warn("cidr is required")
2828
return
2929
}
30+
// AXFR Dumping
3031
records, err := scanner.DumpAXFR(dns.Fqdn(command.Opts.Zone), "ns.dns."+command.Opts.Zone+":53")
3132
if err == nil {
32-
printResult(records)
33+
printer.PrintResult(records, command.Opts.OutputFile)
34+
} else {
35+
log.Errorf("Transfer failed: %v", err)
3336
}
34-
log.Errorf("Transfer failed: %v", err)
37+
// Service Discovery
3538
ipNets, err := pkg.ParseStringToIPNet(command.Opts.Cidr)
3639
if err != nil {
3740
log.Warnf("ParseStringToIPNet failed: %v", err)
3841
return
3942
}
43+
var finalRecord define.Records
4044
if command.Opts.MultiThreadingMode {
41-
RunMultiThread(ipNets, command.Opts.ThreadingNum)
45+
finalRecord = RunMultiThread(ipNets, command.Opts.ThreadingNum)
4246
} else {
43-
Run(ipNets)
47+
finalRecord = Run(ipNets)
4448
}
49+
printer.PrintResult(finalRecord, command.Opts.OutputFile)
4550
},
4651
}
4752

48-
func Run(net *net.IPNet) {
53+
func Run(net *net.IPNet) (finalRecord define.Records) {
4954
var records define.Records = scanner.ScanSubnet(net)
5055
if records == nil || len(records) == 0 {
5156
log.Warnf("ScanSubnet Found Nothing")
5257
return
5358
}
5459
records = scanner.ScanSvcForPorts(records)
55-
printResult(records)
60+
return
5661
}
5762

58-
func RunMultiThread(net *net.IPNet, count int) {
63+
func RunMultiThread(net *net.IPNet, count int) (finalRecord define.Records) {
5964
scan := mutli.ScanAll(net, count)
60-
var finalRecord []define.Record
6165
for r := range scan {
6266
finalRecord = append(finalRecord, r...)
6367
}
64-
printResult(finalRecord)
65-
}
66-
67-
func printResult(records define.Records) {
68-
if command.Opts.OutputFile != "" {
69-
f, err := os.OpenFile(command.Opts.OutputFile, os.O_CREATE|os.O_WRONLY, 0644)
70-
if err != nil {
71-
log.Warnf("OpenFile failed: %v", err)
72-
}
73-
defer f.Close()
74-
records.Print(log.StandardLogger().Writer(), f)
75-
} else {
76-
records.Print(log.StandardLogger().Writer())
77-
}
68+
return
7869
}

cmd/axfr/axfr.go

+2-12
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package axfr
22

33
import (
4-
"os"
54
"strings"
65

76
command "github.com/esonhugh/k8spider/cmd"
87
"github.com/esonhugh/k8spider/define"
8+
"github.com/esonhugh/k8spider/pkg/printer"
99
"github.com/esonhugh/k8spider/pkg/scanner"
1010
"github.com/miekg/dns"
1111
log "github.com/sirupsen/logrus"
@@ -41,16 +41,6 @@ var AxfrCmd = &cobra.Command{
4141
log.Errorf("Transfer failed: %v", err)
4242
return
4343
}
44-
if command.Opts.OutputFile != "" {
45-
f, err := os.OpenFile(command.Opts.OutputFile, os.O_CREATE|os.O_WRONLY, 0644)
46-
if err != nil {
47-
log.Warnf("OpenFile failed: %v", err)
48-
}
49-
defer f.Close()
50-
records.Print(log.StandardLogger().Writer(), f)
51-
} else {
52-
records.Print(log.StandardLogger().Writer())
53-
}
54-
44+
printer.PrintResult(records, command.Opts.OutputFile)
5545
},
5646
}

cmd/service/service.go

+2-11
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ package service
22

33
import (
44
"fmt"
5-
"os"
65

76
command "github.com/esonhugh/k8spider/cmd"
87
"github.com/esonhugh/k8spider/define"
8+
"github.com/esonhugh/k8spider/pkg/printer"
99
"github.com/esonhugh/k8spider/pkg/scanner"
1010
log "github.com/sirupsen/logrus"
1111
"github.com/spf13/cobra"
@@ -28,15 +28,6 @@ var ServiceCmd = &cobra.Command{
2828
records = append(records, define.Record{SvcDomain: fmt.Sprintf("%s.svc.%s", domain, command.Opts.Zone)})
2929
}
3030
records = scanner.ScanSvcForPorts(records)
31-
if command.Opts.OutputFile != "" {
32-
f, err := os.OpenFile(command.Opts.OutputFile, os.O_CREATE|os.O_WRONLY, 0644)
33-
if err != nil {
34-
log.Warnf("OpenFile failed: %v", err)
35-
}
36-
defer f.Close()
37-
records.Print(log.StandardLogger().Writer(), f)
38-
} else {
39-
records.Print(log.StandardLogger().Writer())
40-
}
31+
printer.PrintResult(records, command.Opts.OutputFile)
4132
},
4233
}

cmd/subnet/subnet.go

+10-22
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@ package subnet
22

33
import (
44
"net"
5-
"os"
65

76
command "github.com/esonhugh/k8spider/cmd"
87
"github.com/esonhugh/k8spider/define"
98
"github.com/esonhugh/k8spider/pkg"
109
"github.com/esonhugh/k8spider/pkg/mutli"
10+
"github.com/esonhugh/k8spider/pkg/printer"
1111
"github.com/esonhugh/k8spider/pkg/scanner"
1212
log "github.com/sirupsen/logrus"
1313
"github.com/spf13/cobra"
@@ -30,45 +30,33 @@ var SubNetCmd = &cobra.Command{
3030
log.Warnf("ParseStringToIPNet failed: %v", err)
3131
return
3232
}
33+
var finalRecord define.Records
3334
if command.Opts.MultiThreadingMode {
34-
RunMultiThread(ipNets, command.Opts.ThreadingNum)
35+
finalRecord = RunMultiThread(ipNets, command.Opts.ThreadingNum)
3536
} else {
36-
Run(ipNets)
37+
finalRecord = Run(ipNets)
3738
}
39+
printer.PrintResult(finalRecord, command.Opts.OutputFile)
3840
},
3941
}
4042

41-
func Run(net *net.IPNet) {
42-
var records define.Records = scanner.ScanSubnet(net)
43+
func Run(net *net.IPNet) (records define.Records) {
44+
records = scanner.ScanSubnet(net)
4345
if records == nil || len(records) == 0 {
4446
log.Warnf("ScanSubnet Found Nothing")
4547
return
4648
}
47-
printResult(records)
49+
return
4850
}
4951

50-
func RunMultiThread(net *net.IPNet, num int) {
52+
func RunMultiThread(net *net.IPNet, num int) (finalRecord define.Records) {
5153
scan := mutli.NewSubnetScanner(num)
52-
var finalRecord []define.Record
5354
for r := range scan.ScanSubnet(net) {
5455
finalRecord = append(finalRecord, r...)
5556
}
5657
if len(finalRecord) == 0 {
5758
log.Warn("ScanSubnet Found Nothing")
5859
return
5960
}
60-
printResult(finalRecord)
61-
}
62-
63-
func printResult(records define.Records) {
64-
if command.Opts.OutputFile != "" {
65-
f, err := os.OpenFile(command.Opts.OutputFile, os.O_CREATE|os.O_WRONLY, 0644)
66-
if err != nil {
67-
log.Warnf("OpenFile failed: %v", err)
68-
}
69-
defer f.Close()
70-
records.Print(log.StandardLogger().Writer(), f)
71-
} else {
72-
records.Print(log.StandardLogger().Writer())
73-
}
61+
return
7462
}

define/record.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ func (r *Record) Print(writer ...io.Writer) {
3434
if len(writer) == 0 {
3535
W = os.Stdout
3636
} else {
37-
W = io.MultiWriter(writer...)
37+
w := io.MultiWriter(writer...)
38+
W = io.MultiWriter(os.Stdout, w)
3839
}
3940
data, err := json.Marshal(r)
4041
if err != nil {

pkg/printer/p_utils.go

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package printer
2+
3+
import (
4+
"os"
5+
6+
"github.com/esonhugh/k8spider/define"
7+
log "github.com/sirupsen/logrus"
8+
)
9+
10+
func PrintResult(records define.Records, OutputFile string) {
11+
if OutputFile != "" {
12+
f, err := os.OpenFile(OutputFile, os.O_CREATE|os.O_WRONLY, 0644)
13+
if err != nil {
14+
log.Warnf("OpenFile failed: %v", err)
15+
}
16+
defer f.Close()
17+
records.Print(f)
18+
} else {
19+
records.Print()
20+
}
21+
}

0 commit comments

Comments
 (0)