mirror of
https://github.com/openziti/zrok.git
synced 2024-12-22 14:50:55 +01:00
more proxy debugging
This commit is contained in:
parent
7e39a99ade
commit
fe7e3acbca
14
http/http.go
14
http/http.go
@ -2,6 +2,7 @@ package http
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/openziti-test-kitchen/zrok/util"
|
||||
"github.com/openziti/sdk-golang/ziti"
|
||||
"github.com/openziti/sdk-golang/ziti/config"
|
||||
"github.com/pkg/errors"
|
||||
@ -35,24 +36,33 @@ func Run(cfg *Config) error {
|
||||
type handler struct{}
|
||||
|
||||
func (self *handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||
logrus.Infof("handling request from [%v]", r.RemoteAddr)
|
||||
logrus.Warnf("handling request from [%v]", r.RemoteAddr)
|
||||
|
||||
r.Host = "localhost:3000"
|
||||
r.URL.Host = "localhost:3000"
|
||||
r.URL.Scheme = "http"
|
||||
r.RequestURI = ""
|
||||
logrus.Info(util.DumpHeaders(r.Header, true))
|
||||
|
||||
logrus.Infof("forwarding to: %v [%v]", r.Method, r.URL)
|
||||
rr, err := http.DefaultClient.Do(r)
|
||||
if err != nil {
|
||||
w.WriteHeader(http.StatusInternalServerError)
|
||||
_, _ = fmt.Fprint(w, err)
|
||||
return
|
||||
}
|
||||
w.WriteHeader(rr.StatusCode)
|
||||
logrus.Infof("response: %v", rr.Status)
|
||||
|
||||
// forward headers
|
||||
for k, v := range rr.Header {
|
||||
w.Header().Add(k, v[0])
|
||||
for _, vi := range v {
|
||||
w.Header().Add(k, vi)
|
||||
}
|
||||
}
|
||||
logrus.Info(util.DumpHeaders(w.Header(), false))
|
||||
|
||||
// copy body
|
||||
n, err := io.Copy(w, rr.Body)
|
||||
if err != nil {
|
||||
w.WriteHeader(http.StatusInternalServerError)
|
||||
|
@ -31,29 +31,37 @@ type handler struct {
|
||||
}
|
||||
|
||||
func (self *handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||
logrus.Infof("handling request from [%v]", r.RemoteAddr)
|
||||
logrus.Warnf("handling request from [%v]", r.RemoteAddr)
|
||||
|
||||
zDialCtx := util.ZitiDialContext{Context: self.zCtx}
|
||||
zTransport := http.DefaultTransport.(*http.Transport).Clone()
|
||||
zTransport.DialContext = zDialCtx.Dial
|
||||
client := &http.Client{Transport: zTransport}
|
||||
r.Host = "zrok"
|
||||
r.URL.Host = "zrok"
|
||||
r.URL.Scheme = "http"
|
||||
r.RequestURI = ""
|
||||
logrus.Warnf("request: %v", r)
|
||||
logrus.Info(util.DumpHeaders(r.Header, true))
|
||||
|
||||
rr, err := client.Do(r)
|
||||
logrus.Infof("forwarding to: %v [%v]", r.Method, r.URL)
|
||||
zDialCtx := util.ZitiDialContext{Context: self.zCtx}
|
||||
zTransport := http.DefaultTransport.(*http.Transport).Clone()
|
||||
zTransport.DialContext = zDialCtx.Dial
|
||||
zClient := &http.Client{Transport: zTransport}
|
||||
rr, err := zClient.Do(r)
|
||||
if err != nil {
|
||||
w.WriteHeader(http.StatusInternalServerError)
|
||||
_, _ = fmt.Fprint(w, err)
|
||||
return
|
||||
}
|
||||
w.WriteHeader(rr.StatusCode)
|
||||
logrus.Infof("response: %v", rr.Status)
|
||||
|
||||
// forward headers
|
||||
for k, v := range rr.Header {
|
||||
w.Header().Add(k, v[0])
|
||||
for _, vi := range v {
|
||||
w.Header().Add(k, vi)
|
||||
}
|
||||
}
|
||||
logrus.Info(util.DumpHeaders(w.Header(), false))
|
||||
|
||||
// copy body
|
||||
n, err := io.Copy(w, rr.Body)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
|
29
util/headers.go
Normal file
29
util/headers.go
Normal file
@ -0,0 +1,29 @@
|
||||
package util
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"sort"
|
||||
)
|
||||
|
||||
func DumpHeaders(headers http.Header, in bool) string {
|
||||
out := "headers {\n"
|
||||
keys := make([]string, len(headers))
|
||||
i := 0
|
||||
for k, _ := range headers {
|
||||
keys[i] = k
|
||||
i++
|
||||
}
|
||||
sort.Strings(keys)
|
||||
for _, k := range keys {
|
||||
for _, v := range headers[k] {
|
||||
indicator := "->"
|
||||
if !in {
|
||||
indicator = "<-"
|
||||
}
|
||||
out += fmt.Sprintf("\t%v %v: %v\n", indicator, k, v)
|
||||
}
|
||||
}
|
||||
out += "}"
|
||||
return out
|
||||
}
|
Loading…
Reference in New Issue
Block a user