aboutsummaryrefslogtreecommitdiff
path: root/cmd/rpc.go
diff options
context:
space:
mode:
authorBryan McNulty <bryanmcnulty@protonmail.com>2025-03-12 10:36:38 -0500
committerBryan McNulty <bryanmcnulty@protonmail.com>2025-03-12 10:36:38 -0500
commitc29e70df5434a82ee43fa59826c67037d07d7b3a (patch)
treeadea65dcb7c7f2d3c461e0b98de444519c03bb42 /cmd/rpc.go
parent8a2631d9348c81a724e30b0e2913f3e7bb1bb56f (diff)
downloadgoexec-c29e70df5434a82ee43fa59826c67037d07d7b3a.tar.gz
goexec-c29e70df5434a82ee43fa59826c67037d07d7b3a.zip
+Proxy support +Dockerfile
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 {