mirror of
https://github.com/XTLS/Xray-core.git
synced 2026-10-22 17:24:26 +00:00
HTTP transports: X-Real-IP
This commit is contained in:
@@ -14,19 +14,50 @@ import (
|
||||
)
|
||||
|
||||
func TestParseTrustedXForwardedFor(t *testing.T) {
|
||||
header := http.Header{}
|
||||
header.Add("X-Forwarded-For", "129.78.138.66, 129.78.64.103")
|
||||
clientAddr := &gonet.TCPAddr{IP: gonet.ParseIP("127.0.0.1"), Port: 12345}
|
||||
|
||||
if addrs := ParseTrustedXForwardedFor(header, nil, clientAddr); addrs != nil {
|
||||
t.Fatalf("unexpected trusted X-Forwarded-For: %v", addrs)
|
||||
}
|
||||
t.Run("ignore X-Forwarded-For without trusted header", func(t *testing.T) {
|
||||
header := http.Header{}
|
||||
header.Add("X-Forwarded-For", "129.78.138.66, 129.78.64.103")
|
||||
|
||||
header.Add("X-Trusted-CDN", "")
|
||||
addrs := ParseTrustedXForwardedFor(header, []string{"X-Trusted-CDN"}, clientAddr)
|
||||
if r := cmp.Diff(addrs, []net.Address{net.ParseAddress("129.78.138.66"), net.ParseAddress("129.78.64.103")}); r != "" {
|
||||
t.Error(r)
|
||||
}
|
||||
if addrs := ParseTrustedXForwardedFor(header, nil, clientAddr); addrs != nil {
|
||||
t.Fatalf("unexpected trusted X-Forwarded-For: %v", addrs)
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("trust X-Forwarded-For", func(t *testing.T) {
|
||||
header := http.Header{}
|
||||
header.Add("X-Forwarded-For", "129.78.138.66, 129.78.64.103")
|
||||
header.Add("X-Trusted-CDN", "")
|
||||
|
||||
addrs := ParseTrustedXForwardedFor(header, []string{"X-Trusted-CDN"}, clientAddr)
|
||||
if r := cmp.Diff(addrs, []net.Address{net.ParseAddress("129.78.138.66"), net.ParseAddress("129.78.64.103")}); r != "" {
|
||||
t.Error(r)
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("prefer X-Real-IP over X-Forwarded-For", func(t *testing.T) {
|
||||
header := http.Header{}
|
||||
header.Add("X-Real-IP", "10.0.0.1")
|
||||
header.Add("X-Forwarded-For", "129.78.138.66, 129.78.64.103")
|
||||
header.Add("X-Trusted-CDN", "")
|
||||
|
||||
addrs := ParseTrustedXForwardedFor(header, []string{"X-Trusted-CDN"}, clientAddr)
|
||||
if r := cmp.Diff(addrs, []net.Address{net.ParseAddress("10.0.0.1")}); r != "" {
|
||||
t.Error(r)
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("do not parse X-Real-IP as a list", func(t *testing.T) {
|
||||
header := http.Header{}
|
||||
header.Add("X-Real-IP", "8.8.8.8, 9.9.9.9")
|
||||
header.Add("X-Trusted-CDN", "")
|
||||
|
||||
addrs := ParseTrustedXForwardedFor(header, []string{"X-Trusted-CDN"}, clientAddr)
|
||||
if r := cmp.Diff(addrs, []net.Address{net.ParseAddress("8.8.8.8, 9.9.9.9")}); r != "" {
|
||||
t.Error(r)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func TestHopByHopHeadersRemoving(t *testing.T) {
|
||||
|
||||
Reference in New Issue
Block a user