mirror of
https://github.com/XTLS/Xray-core.git
synced 2026-07-10 21:58:52 +00:00
Sockopt config: Add trustedXForwardedFor (for XHTTP, WS, HU inbounds) (#5331)
Fixes https://github.com/XTLS/Xray-core/pull/5101#issuecomment-3404979909
This commit is contained in:
@@ -20,6 +20,7 @@ type server struct {
|
||||
config *Config
|
||||
addConn internet.ConnHandler
|
||||
innnerListener net.Listener
|
||||
socketSettings *internet.SocketConfig
|
||||
}
|
||||
|
||||
func (s *server) Close() error {
|
||||
@@ -70,7 +71,17 @@ func (s *server) Handle(conn net.Conn) (stat.Connection, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
forwardedAddrs := http_proto.ParseXForwardedFor(req.Header)
|
||||
var forwardedAddrs []net.Address
|
||||
if s.socketSettings != nil && len(s.socketSettings.TrustedXForwardedFor) > 0 {
|
||||
for _, key := range s.socketSettings.TrustedXForwardedFor {
|
||||
if len(req.Header.Values(key)) > 0 {
|
||||
forwardedAddrs = http_proto.ParseXForwardedFor(req.Header)
|
||||
break
|
||||
}
|
||||
}
|
||||
} else {
|
||||
forwardedAddrs = http_proto.ParseXForwardedFor(req.Header)
|
||||
}
|
||||
remoteAddr := conn.RemoteAddr()
|
||||
if len(forwardedAddrs) > 0 && forwardedAddrs[0].Family().IsIP() {
|
||||
remoteAddr = &net.TCPAddr{
|
||||
@@ -141,6 +152,7 @@ func ListenHTTPUpgrade(ctx context.Context, address net.Address, port net.Port,
|
||||
config: transportConfiguration,
|
||||
addConn: addConn,
|
||||
innnerListener: listener,
|
||||
socketSettings: streamSettings.SocketSettings,
|
||||
}
|
||||
go serverInstance.keepAccepting()
|
||||
return serverInstance, nil
|
||||
|
||||
Reference in New Issue
Block a user