ip logging behind proxies now works
authorzapata <zapata>
Sun, 2 Jan 2005 19:25:36 +0000 (19:25 +0000)
committerzapata <zapata>
Sun, 2 Jan 2005 19:25:36 +0000 (19:25 +0000)
source/mir/session/HTTPAdapters.java

index 08c8221..78cd362 100755 (executable)
@@ -110,13 +110,22 @@ public class HTTPAdapters {
     }
 
     public String getHeader(String aHeaderName) {
-      if (aHeaderName.equals("ip"))
-        return request.getRequest().getRemoteAddr();
+      if (aHeaderName.equals("ip")) {
+        // transparent proxies propagate the originating ip in the x-forwarded-for
+        // header. So if it's there, we should use it.
+        Enumeration headers = request.getRequest().getHeaders("x-forwarded-for");
+        if (headers.hasMoreElements()) {
+          return (String) headers.nextElement();
+        }
+        else {
+          return request.getRequest().getRemoteAddr();
+        }
+      }
 
       if (aHeaderName.equals("hostname")) {
         if (cachedHostName==null) {
           try {
-            cachedHostName = InetAddress.getByName(request.getRequest().getRemoteAddr()).getHostName();
+            cachedHostName = InetAddress.getByName(getHeader("ip")).getHostName();
           }
           catch (UnknownHostException e) {
             cachedHostName = request.getRequest().getRemoteAddr();