mirror of
https://github.com/yusing/godoxy.git
synced 2025-05-19 20:32:35 +02:00
add $remote_host and $remote_port variables
This commit is contained in:
parent
aff8a3b401
commit
2cbee10527
3 changed files with 38 additions and 4 deletions
|
@ -2,6 +2,7 @@ package middleware
|
|||
|
||||
import (
|
||||
"bytes"
|
||||
"net"
|
||||
"net/http"
|
||||
"slices"
|
||||
"testing"
|
||||
|
@ -26,6 +27,8 @@ func TestModifyRequest(t *testing.T) {
|
|||
"X-Test-Req-Uri": VarRequestURI,
|
||||
"X-Test-Req-Content-Type": VarRequestContentType,
|
||||
"X-Test-Req-Content-Length": VarRequestContentLen,
|
||||
"X-Test-Remote-Host": VarRemoteHost,
|
||||
"X-Test-Remote-Port": VarRemotePort,
|
||||
"X-Test-Remote-Addr": VarRemoteAddr,
|
||||
"X-Test-Upstream-Scheme": VarUpstreamScheme,
|
||||
"X-Test-Upstream-Host": VarUpstreamHost,
|
||||
|
@ -76,6 +79,10 @@ func TestModifyRequest(t *testing.T) {
|
|||
ExpectEqual(t, result.RequestHeaders.Get("X-Test-Req-Uri"), reqURL.RequestURI())
|
||||
ExpectEqual(t, result.RequestHeaders.Get("X-Test-Req-Content-Type"), "application/json")
|
||||
ExpectEqual(t, result.RequestHeaders.Get("X-Test-Req-Content-Length"), "100")
|
||||
|
||||
remoteHost, remotePort, _ := net.SplitHostPort(result.RemoteAddr)
|
||||
ExpectEqual(t, result.RequestHeaders.Get("X-Test-Remote-Host"), remoteHost)
|
||||
ExpectEqual(t, result.RequestHeaders.Get("X-Test-Remote-Port"), remotePort)
|
||||
ExpectEqual(t, result.RequestHeaders.Get("X-Test-Remote-Addr"), result.RemoteAddr)
|
||||
|
||||
ExpectEqual(t, result.RequestHeaders.Get("X-Test-Upstream-Scheme"), upstreamURL.Scheme)
|
||||
|
|
|
@ -2,6 +2,7 @@ package middleware
|
|||
|
||||
import (
|
||||
"bytes"
|
||||
"net"
|
||||
"net/http"
|
||||
"slices"
|
||||
"testing"
|
||||
|
@ -27,6 +28,10 @@ func TestModifyResponse(t *testing.T) {
|
|||
"X-Test-Req-Query": VarRequestQuery,
|
||||
"X-Test-Req-Url": VarRequestURL,
|
||||
"X-Test-Req-Uri": VarRequestURI,
|
||||
"X-Test-Req-Content-Type": VarRequestContentType,
|
||||
"X-Test-Req-Content-Length": VarRequestContentLen,
|
||||
"X-Test-Remote-Host": VarRemoteHost,
|
||||
"X-Test-Remote-Port": VarRemotePort,
|
||||
"X-Test-Remote-Addr": VarRemoteAddr,
|
||||
"X-Test-Upstream-Scheme": VarUpstreamScheme,
|
||||
"X-Test-Upstream-Host": VarUpstreamHost,
|
||||
|
@ -83,6 +88,12 @@ func TestModifyResponse(t *testing.T) {
|
|||
ExpectEqual(t, result.ResponseHeaders.Get("X-Test-Req-Query"), reqURL.RawQuery)
|
||||
ExpectEqual(t, result.ResponseHeaders.Get("X-Test-Req-Url"), reqURL.String())
|
||||
ExpectEqual(t, result.ResponseHeaders.Get("X-Test-Req-Uri"), reqURL.RequestURI())
|
||||
ExpectEqual(t, result.ResponseHeaders.Get("X-Test-Req-Content-Type"), "application/json")
|
||||
ExpectEqual(t, result.ResponseHeaders.Get("X-Test-Req-Content-Length"), "100")
|
||||
|
||||
remoteHost, remotePort, _ := net.SplitHostPort(result.RemoteAddr)
|
||||
ExpectEqual(t, result.ResponseHeaders.Get("X-Test-Remote-Host"), remoteHost)
|
||||
ExpectEqual(t, result.ResponseHeaders.Get("X-Test-Remote-Port"), remotePort)
|
||||
ExpectEqual(t, result.ResponseHeaders.Get("X-Test-Remote-Addr"), result.RemoteAddr)
|
||||
|
||||
ExpectEqual(t, result.ResponseHeaders.Get("X-Test-Upstream-Scheme"), upstreamURL.Scheme)
|
||||
|
|
|
@ -34,6 +34,8 @@ const (
|
|||
VarRequestURI = "$req_uri"
|
||||
VarRequestContentType = "$req_content_type"
|
||||
VarRequestContentLen = "$req_content_length"
|
||||
VarRemoteHost = "$remote_host"
|
||||
VarRemotePort = "$remote_port"
|
||||
VarRemoteAddr = "$remote_addr"
|
||||
VarUpstreamScheme = "$upstream_scheme"
|
||||
VarUpstreamHost = "$upstream_host"
|
||||
|
@ -72,6 +74,20 @@ var staticReqVarSubsMap = map[string]reqVarGetter{
|
|||
VarRequestURI: func(req *Request) string { return req.URL.RequestURI() },
|
||||
VarRequestContentType: func(req *Request) string { return req.Header.Get("Content-Type") },
|
||||
VarRequestContentLen: func(req *Request) string { return strconv.FormatInt(req.ContentLength, 10) },
|
||||
VarRemoteHost: func(req *Request) string {
|
||||
clientIP, _, err := net.SplitHostPort(req.RemoteAddr)
|
||||
if err == nil {
|
||||
return clientIP
|
||||
}
|
||||
return ""
|
||||
},
|
||||
VarRemotePort: func(req *Request) string {
|
||||
_, clientPort, err := net.SplitHostPort(req.RemoteAddr)
|
||||
if err == nil {
|
||||
return clientPort
|
||||
}
|
||||
return ""
|
||||
},
|
||||
VarRemoteAddr: func(req *Request) string { return req.RemoteAddr },
|
||||
VarUpstreamScheme: func(req *Request) string { return req.Header.Get(gphttp.HeaderUpstreamScheme) },
|
||||
VarUpstreamHost: func(req *Request) string { return req.Header.Get(gphttp.HeaderUpstreamHost) },
|
||||
|
|
Loading…
Add table
Reference in a new issue