mirror of
https://github.com/yusing/godoxy.git
synced 2025-05-20 20:52:33 +02:00
37 lines
927 B
Go
37 lines
927 B
Go
package middleware
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
gphttp "github.com/yusing/go-proxy/internal/net/http"
|
|
"github.com/yusing/go-proxy/internal/net/http/reverseproxy"
|
|
)
|
|
|
|
// internal use only.
|
|
type setUpstreamHeaders struct {
|
|
Name, Scheme, Host, Port string
|
|
}
|
|
|
|
var suh = NewMiddleware[setUpstreamHeaders]()
|
|
|
|
func newSetUpstreamHeaders(rp *reverseproxy.ReverseProxy) *Middleware {
|
|
m, err := suh.New(OptionsRaw{
|
|
"name": rp.TargetName,
|
|
"scheme": rp.TargetURL.Scheme,
|
|
"host": rp.TargetURL.Hostname(),
|
|
"port": rp.TargetURL.Port(),
|
|
})
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
return m
|
|
}
|
|
|
|
// before implements RequestModifier.
|
|
func (s setUpstreamHeaders) before(w http.ResponseWriter, r *http.Request) (proceed bool) {
|
|
r.Header.Set(gphttp.HeaderUpstreamName, s.Name)
|
|
r.Header.Set(gphttp.HeaderUpstreamScheme, s.Scheme)
|
|
r.Header.Set(gphttp.HeaderUpstreamHost, s.Host)
|
|
r.Header.Set(gphttp.HeaderUpstreamPort, s.Port)
|
|
return true
|
|
}
|