Changeset 472 in code for trunk/server.go
- Timestamp:
- Mar 18, 2021, 11:08:25 AM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/server.go
r471 r472 4 4 "fmt" 5 5 "log" 6 "mime" 6 7 "net" 7 8 "net/http" … … 215 216 // to prevent users from spoofing the remote address 216 217 remoteAddr := req.RemoteAddr 217 forwardedHost := req.Header.Get("X-Forwarded-For") 218 forwardedPort := req.Header.Get("X-Forwarded-Port") 219 if isProxy && forwardedHost != "" && forwardedPort != "" { 220 remoteAddr = net.JoinHostPort(forwardedHost, forwardedPort) 218 if isProxy { 219 forwarded := parseForwarded(req.Header) 220 forwardedHost := req.Header.Get("X-Forwarded-For") 221 forwardedPort := req.Header.Get("X-Forwarded-Port") 222 if forwarded["for"] != "" && forwarded["port"] != "" { 223 remoteAddr = net.JoinHostPort(forwarded["for"], forwarded["port"]) 224 } else if forwardedHost != "" && forwardedPort != "" { 225 remoteAddr = net.JoinHostPort(forwardedHost, forwardedPort) 226 } 221 227 } 222 228 223 229 s.handle(newWebsocketIRCConn(conn, remoteAddr)) 224 230 } 231 232 func parseForwarded(h http.Header) map[string]string { 233 forwarded := h.Get("Forwarded") 234 if forwarded == "" { 235 return nil 236 } 237 // Hack to easily parse header parameters 238 _, params, _ := mime.ParseMediaType("hack; " + forwarded) 239 return params 240 }
Note:
See TracChangeset
for help on using the changeset viewer.