From e5ba5c9777250e2ef9fab0f919b308e6ec8c1de9 Mon Sep 17 00:00:00 2001 From: Bel LaPointe Date: Mon, 26 Dec 2022 14:02:21 -0500 Subject: [PATCH] if no dig then no hijack --- server.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/server.go b/server.go index be3d7c5..bcd17ac 100644 --- a/server.go +++ b/server.go @@ -9,6 +9,7 @@ import ( "log" "net" "net/http" + "net/http/httputil" "strings" "time" @@ -78,6 +79,11 @@ func (s *Server) Connect(w http.ResponseWriter, r *http.Request) { return } + if host == r.Host { + s.connectHTTPReverseProxy(w, r) + return + } + dest, err := net.DialTimeout("tcp", host, s.Timeout) if err != nil { s.Error(r, w, fmt.Errorf("error dialing w timeout %s=>%s: %w", r.Host, host, err)) @@ -102,6 +108,10 @@ func (s *Server) Connect(w http.ResponseWriter, r *http.Request) { go s.xfer(r.Context(), client, dest) } +func (s *Server) connectHTTPReverseProxy(w http.ResponseWriter, r *http.Request) { + httputil.NewSingleHostReverseProxy(r.URL).ServeHTTP(w, r) +} + func (s *Server) Serve(w http.ResponseWriter, r *http.Request) { resp, err := s.Transport.RoundTrip(r) if err != nil {