aboutsummaryrefslogtreecommitdiff
path: root/cmd/rpc.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/rpc.go')
-rw-r--r--cmd/rpc.go10
1 files changed, 10 insertions, 0 deletions
diff --git a/cmd/rpc.go b/cmd/rpc.go
index d539400..cfc7a9d 100644
--- a/cmd/rpc.go
+++ b/cmd/rpc.go
@@ -6,6 +6,7 @@ import (
"github.com/oiweiwei/go-msrpc/dcerpc"
"github.com/spf13/cobra"
"github.com/spf13/pflag"
+ "golang.org/x/net/proxy"
"regexp"
)
@@ -15,6 +16,15 @@ func needsRpcTarget(proto string) func(cmd *cobra.Command, args []string) error
if err = needsTarget(proto)(cmd, args); err != nil {
return err
}
+ if proxyUrl != nil {
+ if netDialer, err := proxy.FromURL(proxyUrl, nil); err != nil {
+ return fmt.Errorf("proxy dialer from URL: %w", err)
+ } else if dceDialer, ok := netDialer.(dcerpc.Dialer); !ok {
+ return fmt.Errorf("failed to cast %T to dcerpc.Dialer", netDialer)
+ } else {
+ dceConfig.Options = append(dceConfig.Options, dcerpc.WithDialer(dceDialer))
+ }
+ }
if argDceStringBinding != "" {
dceConfig.Endpoint, err = dcerpc.ParseStringBinding(argDceStringBinding)
if err != nil {