From 73abdc40e68afce60f4ff20323ab32192c5e3c8e Mon Sep 17 00:00:00 2001 From: shadowy-pycoder <35629483+shadowy-pycoder@users.noreply.github.com> Date: Thu, 19 Jun 2025 07:50:39 +0300 Subject: [PATCH] added resp/req parsing for handleForward, minor changes to CLI, bumped to v1.7.2 --- README.md | 2 +- cmd/gohpts/cli.go | 2 +- gohpts.go | 16 ++++++++++++++-- version.go | 2 +- 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 39aa445..5cf0451 100644 --- a/README.md +++ b/README.md @@ -93,7 +93,7 @@ You can download the binary for your platform from [Releases](https://github.com Example: ```shell -HPTS_RELEASE=v1.7.1; wget -v https://github.com/shadowy-pycoder/go-http-proxy-to-socks/releases/download/$HPTS_RELEASE/gohpts-$HPTS_RELEASE-linux-amd64.tar.gz -O gohpts && tar xvzf gohpts && mv -f gohpts-$HPTS_RELEASE-linux-amd64 gohpts && ./gohpts -h +HPTS_RELEASE=v1.7.2; wget -v https://github.com/shadowy-pycoder/go-http-proxy-to-socks/releases/download/$HPTS_RELEASE/gohpts-$HPTS_RELEASE-linux-amd64.tar.gz -O gohpts && tar xvzf gohpts && mv -f gohpts-$HPTS_RELEASE-linux-amd64 gohpts && ./gohpts -h ``` Alternatively, you can install it using `go install` command (requires Go [1.24](https://go.dev/doc/install) or later): diff --git a/cmd/gohpts/cli.go b/cmd/gohpts/cli.go index f17b025..ff6c542 100644 --- a/cmd/gohpts/cli.go +++ b/cmd/gohpts/cli.go @@ -63,7 +63,7 @@ func root(args []string) error { flags.StringVar(&conf.SniffLogFile, "snifflog", "", "Sniffed traffic log file path (Default: the same as -logfile)") flags.BoolVar(&conf.Color, "color", false, "Enable colored output for logs in stdout (no effect if log file provided or -j flag specified)") flags.BoolFunc("v", "print version", func(flagValue string) error { - fmt.Println(gohpts.Version) + fmt.Printf("%s (built for %s %s with %s)\n", gohpts.Version, runtime.GOOS, runtime.GOARCH, runtime.Version()) os.Exit(0) return nil }) diff --git a/gohpts.go b/gohpts.go index 2f10534..362d534 100644 --- a/gohpts.go +++ b/gohpts.go @@ -347,9 +347,9 @@ func (p *proxyapp) handleForward(w http.ResponseWriter, r *http.Request) { return } req.RequestURI = "" - delConnectionHeaders(r.Header) - delHopHeaders(r.Header) copyHeader(req.Header, r.Header) + delConnectionHeaders(req.Header) + delHopHeaders(req.Header) if clientIP, _, err := net.SplitHostPort(req.RemoteAddr); err == nil { appendHostToXForwardHeader(req.Header, clientIP) } @@ -392,6 +392,18 @@ func (p *proxyapp) handleForward(w http.ResponseWriter, r *http.Request) { } } defer resp.Body.Close() + if p.sniff { + sniffheader := make([]string, 0, 2) + j, err := json.Marshal(&layers.HTTPMessage{Request: r}) + if err == nil { + sniffheader = append(sniffheader, string(j)) + } + j, err = json.Marshal(&layers.HTTPMessage{Response: resp}) + if err == nil { + sniffheader = append(sniffheader, string(j)) + } + p.snifflogger.Debug().Msg(fmt.Sprintf("[%s]", strings.Join(sniffheader, ","))) + } done := make(chan bool) if chunked { rc := http.NewResponseController(w) diff --git a/version.go b/version.go index f6e0722..a4e2f3b 100644 --- a/version.go +++ b/version.go @@ -1,3 +1,3 @@ package gohpts -const Version string = "gohpts v1.7.1" +const Version string = "gohpts v1.7.2"