diff options
author | Bryan McNulty <bryanmcnulty@protonmail.com> | 2025-03-12 10:36:38 -0500 |
---|---|---|
committer | Bryan McNulty <bryanmcnulty@protonmail.com> | 2025-03-12 10:36:38 -0500 |
commit | c29e70df5434a82ee43fa59826c67037d07d7b3a (patch) | |
tree | adea65dcb7c7f2d3c461e0b98de444519c03bb42 /cmd/rpc.go | |
parent | 8a2631d9348c81a724e30b0e2913f3e7bb1bb56f (diff) | |
download | goexec-c29e70df5434a82ee43fa59826c67037d07d7b3a.tar.gz goexec-c29e70df5434a82ee43fa59826c67037d07d7b3a.zip |
+Proxy support +Dockerfile
Diffstat (limited to 'cmd/rpc.go')
-rw-r--r-- | cmd/rpc.go | 10 |
1 files changed, 10 insertions, 0 deletions
@@ -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 { |