This is an automated email from the ASF dual-hosted git repository.

papegaaij pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/wicket.git


The following commit(s) were added to refs/heads/master by this push:
     new 84f62a5  Do not try to resolve X-Forwarded-For header
84f62a5 is described below

commit 84f62a5cff462eaa3bfaf171b0638c7e7feea30d
Author: Emond Papegaaij <emond.papega...@topicus.nl>
AuthorDate: Fri Mar 5 13:28:15 2021 +0100

    Do not try to resolve X-Forwarded-For header
    
    The remote address is reported by HttpServletRequest. Configuration of
    this property is normally done via the application server. If this is
    somehow not possible, use XForwardedRequestWrapperFactory.
---
 .../protocol/http/request/WebClientInfo.java       | 40 +++-------------------
 1 file changed, 4 insertions(+), 36 deletions(-)

diff --git 
a/wicket-core/src/main/java/org/apache/wicket/protocol/http/request/WebClientInfo.java
 
b/wicket-core/src/main/java/org/apache/wicket/protocol/http/request/WebClientInfo.java
index b5d0544..d8e552c 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/protocol/http/request/WebClientInfo.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/protocol/http/request/WebClientInfo.java
@@ -140,48 +140,16 @@ public class WebClientInfo extends ClientInfo
        }
 
        /**
-        * When using ProxyPass, requestCycle().getHttpServletRequest(). 
getRemoteAddr() returns the IP
-        * of the machine forwarding the request. In order to maintain the 
clients ip address, the
-        * server places it in the <a
-        * 
href="http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#x-headers";>X-Forwarded-For</a>
-        * Header.
-        *
-        * Proxies may also mask the original client IP with tokens like 
"hidden" or "unknown".
-        * If so, the last proxy ip address is returned.
+        * Returns the IP address from {@code 
HttpServletRequest.getRemoteAddr()}.
         *
         * @param requestCycle
         *            the request cycle
-        * @return remoteAddr IP address of the client, using the 
X-Forwarded-For header and defaulting
-        *         to: getHttpServletRequest().getRemoteAddr()
+        * @return remoteAddr IP address of the client, using
+        *         {@code getHttpServletRequest().getRemoteAddr()}
         */
        protected String getRemoteAddr(RequestCycle requestCycle)
        {
                ServletWebRequest request = 
(ServletWebRequest)requestCycle.getRequest();
-               HttpServletRequest req = request.getContainerRequest();
-               String remoteAddr = request.getHeader("X-Forwarded-For");
-
-               if (remoteAddr != null)
-               {
-                       if (remoteAddr.contains(","))
-                       {
-                               // sometimes the header is of form client 
ip,proxy 1 ip,proxy 2 ip,...,proxy n ip,
-                               // we just want the client
-                               remoteAddr = Strings.split(remoteAddr, 
',')[0].trim();
-                       }
-                       try
-                       {
-                               // If ip4/6 address string handed over, simply 
does pattern validation.
-                               InetAddress.getByName(remoteAddr);
-                       }
-                       catch (UnknownHostException e)
-                       {
-                               remoteAddr = req.getRemoteAddr();
-                       }
-               }
-               else
-               {
-                       remoteAddr = req.getRemoteAddr();
-               }
-               return remoteAddr;
+               return request.getContainerRequest().getRemoteAddr();
        }
 }

Reply via email to