From 5cc47f77c5d7c1c8c40c5e7cb2f7083fd2ce56cd Mon Sep 17 00:00:00 2001 From: Wei Zhou Date: Fri, 29 Nov 2013 10:39:04 +0100 Subject: [PATCH] CLOUDSTACK-5033: set origin ip address in logs if management servers is behind a reverse proxy or load balancer --- server/src/com/cloud/api/ApiServlet.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/server/src/com/cloud/api/ApiServlet.java b/server/src/com/cloud/api/ApiServlet.java index 6a33c14baaf..6386929e936 100755 --- a/server/src/com/cloud/api/ApiServlet.java +++ b/server/src/com/cloud/api/ApiServlet.java @@ -121,7 +121,13 @@ public class ApiServlet extends HttpServlet { private void processRequestInContext(HttpServletRequest req, HttpServletResponse resp) { StringBuffer auditTrailSb = new StringBuffer(); - auditTrailSb.append(" " + req.getRemoteAddr()); + String ipAddress = req.getHeader("X-FORWARDED-FOR"); + if (ipAddress == null) { + ipAddress = req.getRemoteAddr(); + } else { + ipAddress = ipAddress.split(",")[0]; + } + auditTrailSb.append(" " + ipAddress); auditTrailSb.append(" -- " + req.getMethod() + " "); // get the response format since we'll need it in a couple of places String responseType = BaseCmd.RESPONSE_TYPE_XML;