Skip to content

Commit 9815930

Browse files
authored
feature: workers count option (#69)
1 parent 8845651 commit 9815930

File tree

5 files changed

+13
-7
lines changed

5 files changed

+13
-7
lines changed

command/docker.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ func init() {
1818
dockerCmd.Flags().StringVarP(&cliPortsFlag, "ports", "p", "", "set ports to scan")
1919
dockerCmd.Flags().StringVarP(&cliIPPortFileFlag, "file", "f", "", "set JSONL file with ip/port pairs to scan")
2020
dockerCmd.Flags().StringVar(&cliProtoFlag, "proto", "", "set protocol to use, http is used by default; only http or https are valid")
21+
dockerCmd.Flags().IntVarP(&cliWorkerCountFlag, "workers", "w", defaultWorkerCount, "set workers count")
2122
rootCmd.AddCommand(dockerCmd)
2223
}
2324

@@ -63,6 +64,5 @@ func newDockerScanEngine(ctx context.Context) scan.EngineResulter {
6364
// TODO custom dataTimeout
6465
scanner := docker.NewScanner(cliProtoFlag, docker.WithDataTimeout(10*time.Second))
6566
results := scan.NewResultChan(ctx, 1000)
66-
// TODO custom workerCount
67-
return scan.NewScanEngine(newIPPortGenerator(), scanner, results, scan.WithScanWorkerCount(50))
67+
return scan.NewScanEngine(newIPPortGenerator(), scanner, results, scan.WithScanWorkerCount(cliWorkerCountFlag))
6868
}

command/elastic.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ func init() {
1818
elasticCmd.Flags().StringVarP(&cliPortsFlag, "ports", "p", "", "set ports to scan")
1919
elasticCmd.Flags().StringVarP(&cliIPPortFileFlag, "file", "f", "", "set JSONL file with ip/port pairs to scan")
2020
elasticCmd.Flags().StringVar(&cliProtoFlag, "proto", "", "set protocol to use, http is used by default; only http or https are valid")
21+
elasticCmd.Flags().IntVarP(&cliWorkerCountFlag, "workers", "w", defaultWorkerCount, "set workers count")
2122
rootCmd.AddCommand(elasticCmd)
2223
}
2324

@@ -63,6 +64,5 @@ func newElasticScanEngine(ctx context.Context) scan.EngineResulter {
6364
// TODO custom dataTimeout
6465
scanner := elastic.NewScanner(cliProtoFlag, elastic.WithDataTimeout(5*time.Second))
6566
results := scan.NewResultChan(ctx, 1000)
66-
// TODO custom workerCount
67-
return scan.NewScanEngine(newIPPortGenerator(), scanner, results, scan.WithScanWorkerCount(50))
67+
return scan.NewScanEngine(newIPPortGenerator(), scanner, results, scan.WithScanWorkerCount(cliWorkerCountFlag))
6868
}

command/root.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,9 @@ var rootCmd = &cobra.Command{
9090
return
9191
}
9292
}
93+
if cliWorkerCountFlag <= 0 {
94+
return errors.New("invalid workers count")
95+
}
9396
return
9497
},
9598
}
@@ -110,6 +113,7 @@ var (
110113
cliIPTotalLenFlag string
111114
cliIPProtocolFlag string
112115
cliIPFlagsFlag string
116+
cliWorkerCountFlag int
113117

114118
cliInterface *net.Interface
115119
cliSrcIP net.IP
@@ -129,6 +133,8 @@ var (
129133
const (
130134
cliHTTPProtoFlag = "http"
131135
cliHTTPSProtoFlag = "https"
136+
137+
defaultWorkerCount = 100
132138
)
133139

134140
var (

command/socks.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616
func init() {
1717
socksCmd.Flags().StringVarP(&cliPortsFlag, "ports", "p", "", "set ports to scan")
1818
socksCmd.Flags().StringVarP(&cliIPPortFileFlag, "file", "f", "", "set JSONL file with ip/port pairs to scan")
19+
socksCmd.Flags().IntVarP(&cliWorkerCountFlag, "workers", "w", defaultWorkerCount, "set workers count")
1920
rootCmd.AddCommand(socksCmd)
2021
}
2122

@@ -57,6 +58,5 @@ func newSOCKSScanEngine(ctx context.Context) scan.EngineResulter {
5758
socks5.WithDialTimeout(2*time.Second),
5859
socks5.WithDataTimeout(2*time.Second))
5960
results := scan.NewResultChan(ctx, 1000)
60-
// TODO custom workerCount
61-
return scan.NewScanEngine(newIPPortGenerator(), scanner, results, scan.WithScanWorkerCount(50))
61+
return scan.NewScanEngine(newIPPortGenerator(), scanner, results, scan.WithScanWorkerCount(cliWorkerCountFlag))
6262
}

pkg/scan/socks5/socks5.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package socks5
22

33
import (
44
"context"
5-
json "encoding/json"
5+
"encoding/json"
66
"fmt"
77
"net"
88
"time"

0 commit comments

Comments
 (0)