You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ko...@apache.org on 2014/11/23 20:49:13 UTC

[05/11] git commit: updated refs/heads/master to 31db58f

Some simplification on getClientAddress in ApiServlet

Signed-off-by: Laszlo Hornyak <la...@gmail.com>


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/2a6d6891
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/2a6d6891
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/2a6d6891

Branch: refs/heads/master
Commit: 2a6d6891eb734cb0d229d650689786697dcae46d
Parents: fa52ffa
Author: Laszlo Hornyak <la...@gmail.com>
Authored: Sat Nov 22 20:57:23 2014 +0100
Committer: Laszlo Hornyak <la...@gmail.com>
Committed: Sun Nov 23 19:48:58 2014 +0100

----------------------------------------------------------------------
 server/src/com/cloud/api/ApiServlet.java | 39 +++++++++------------------
 1 file changed, 13 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2a6d6891/server/src/com/cloud/api/ApiServlet.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/ApiServlet.java b/server/src/com/cloud/api/ApiServlet.java
index 75f7ed2..e1f7927 100644
--- a/server/src/com/cloud/api/ApiServlet.java
+++ b/server/src/com/cloud/api/ApiServlet.java
@@ -18,7 +18,10 @@ package com.cloud.api;
 
 import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
+import java.util.Arrays;
+import java.util.Collections;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import javax.inject.Inject;
@@ -54,6 +57,9 @@ import com.cloud.utils.net.NetUtils;
 public class ApiServlet extends HttpServlet {
     public static final Logger s_logger = Logger.getLogger(ApiServlet.class.getName());
     private static final Logger s_accessLogger = Logger.getLogger("apiserver." + ApiServer.class.getName());
+    private final static List<String> s_clientAddressHeaders = Collections
+            .unmodifiableList(Arrays.asList("X-Forwarded-For",
+                    "HTTP_CLIENT_IP", "HTTP_X_FORWARDED_FOR", "Remote_Addr"));
 
     @Inject
     ApiServerService _apiServer;
@@ -309,34 +315,15 @@ public class ApiServlet extends HttpServlet {
     }
 
     //This method will try to get login IP of user even if servlet is behind reverseProxy or loadBalancer
-    static String getClientAddress(HttpServletRequest request) {
-        String ip = null;
-        ip = request.getHeader("X-Forwarded-For");
-        ip = getCorrectIPAddress(ip);
-        if (ip != null) {
-            return ip;
-        }
-
-        ip = request.getHeader("HTTP_CLIENT_IP");
-        ip = getCorrectIPAddress(ip);
-        if (ip != null) {
-            return ip;
-        }
-
-        ip = request.getHeader("HTTP_X_FORWARDED_FOR");
-        ip = getCorrectIPAddress(ip);
-        if (ip != null) {
-            return ip;
-        }
-
-        ip = request.getHeader("Remote_Addr");
-        ip = getCorrectIPAddress(ip);
-        if (ip != null) {
-            return ip;
+    static String getClientAddress(final HttpServletRequest request) {
+        for(final String header : s_clientAddressHeaders) {
+            final String ip = getCorrectIPAddress(request.getHeader(header));
+            if (ip != null) {
+                return ip;
+            }
         }
 
-        ip = request.getRemoteAddr();
-        return ip;
+        return request.getRemoteAddr();
     }
 
     private static String getCorrectIPAddress(String ip) {