From c29e70df5434a82ee43fa59826c67037d07d7b3a Mon Sep 17 00:00:00 2001 From: Bryan McNulty Date: Wed, 12 Mar 2025 10:36:38 -0500 Subject: +Proxy support +Dockerfile --- cmd/rpc.go | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'cmd/rpc.go') 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 { -- cgit v1.2.3