initial integration for bounded dialer in static mode
This commit is contained in:
parent
36235d68fb
commit
f1dc40b0ce
11
main.go
11
main.go
|
@ -72,6 +72,7 @@ type CLIArgs struct {
|
|||
passwdCost int
|
||||
positionalArgs []string
|
||||
proxy []string
|
||||
sourceIPHints []net.IP
|
||||
}
|
||||
|
||||
func parse_args() CLIArgs {
|
||||
|
@ -101,6 +102,14 @@ func parse_args() CLIArgs {
|
|||
args.proxy = append(args.proxy, p)
|
||||
return nil
|
||||
})
|
||||
flag.Func("ip-hints", "a comma-separated list of addresses to use on dial attempts. Example: \"10.0.0.1,fe80::2,0.0.0.0,::\"", func(p string) error {
|
||||
list, err := parseIPList(p)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
args.sourceIPHints = list
|
||||
return nil
|
||||
})
|
||||
flag.Parse()
|
||||
args.positionalArgs = flag.Args()
|
||||
return args
|
||||
|
@ -146,7 +155,7 @@ func run() int {
|
|||
}
|
||||
defer auth.Stop()
|
||||
|
||||
var dialer Dialer = new(net.Dialer)
|
||||
var dialer Dialer = NewBoundDialer(new(net.Dialer), args.sourceIPHints)
|
||||
for _, proxyURL := range args.proxy {
|
||||
newDialer, err := proxyDialerFromURL(proxyURL, dialer)
|
||||
if err != nil {
|
||||
|
|
16
utils.go
16
utils.go
|
@ -369,3 +369,19 @@ func maybeWrapWithContextDialer(d Dialer) ContextDialer {
|
|||
}
|
||||
return wrappedDialer{d}
|
||||
}
|
||||
|
||||
func parseIPList(list string) ([]net.IP, error) {
|
||||
res := make([]net.IP, 0)
|
||||
for _, elem := range strings.Split(list, ",") {
|
||||
elem = strings.TrimSpace(elem)
|
||||
if len(elem) == 0 {
|
||||
continue
|
||||
}
|
||||
if parsed := net.ParseIP(elem); parsed == nil {
|
||||
return nil, fmt.Errorf("unable to parse IP address %q", elem)
|
||||
} else {
|
||||
res = append(res, parsed)
|
||||
}
|
||||
}
|
||||
return res, nil
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue