Ver código fonte

fix #880 use x-forwarded-for

Shinsuke Sugaya 8 anos atrás
pai
commit
859cb0dcb9

+ 1 - 1
src/main/java/org/codelibs/fess/api/gsa/GsaApiManager.java

@@ -127,7 +127,7 @@ public class GsaApiManager extends BaseApiManager implements WebApiManager {
             final String ie = request.getCharacterEncoding();
             final String oe = "UTF-8";
             // IP address
-            final String ip = request.getRemoteAddr();
+            final String ip = ComponentUtil.getViewHelper().getClientIp(request);
             final String start = request.getParameter("start");
             long startNumber = 1;
             if (StringUtil.isNotBlank(start)) {

+ 2 - 9
src/main/java/org/codelibs/fess/helper/ActivityHelper.java

@@ -20,8 +20,8 @@ import java.time.format.DateTimeFormatter;
 
 import javax.annotation.PostConstruct;
 
-import org.codelibs.core.lang.StringUtil;
 import org.codelibs.fess.mylasta.action.FessUserBean;
+import org.codelibs.fess.util.ComponentUtil;
 import org.dbflute.optional.OptionalThing;
 import org.lastaflute.web.util.LaRequestUtil;
 import org.slf4j.Logger;
@@ -88,14 +88,7 @@ public class ActivityHelper {
     }
 
     protected static String getClientIp() {
-        return LaRequestUtil.getOptionalRequest().map(req -> {
-            final String value = req.getHeader("x-forwarded-for");
-            if (StringUtil.isNotBlank(value)) {
-                return value;
-            } else {
-                return req.getRemoteAddr();
-            }
-        }).orElse("-");
+        return LaRequestUtil.getOptionalRequest().map(req -> ComponentUtil.getViewHelper().getClientIp(req)).orElse("-");
     }
 
     protected enum Action {

+ 1 - 1
src/main/java/org/codelibs/fess/helper/SearchLogHelper.java

@@ -102,7 +102,7 @@ public class SearchLogHelper {
         });
 
         final HttpServletRequest request = LaRequestUtil.getRequest();
-        searchLog.setClientIp(StringUtils.abbreviate(request.getRemoteAddr(), 50));
+        searchLog.setClientIp(StringUtils.abbreviate(ComponentUtil.getViewHelper().getClientIp(request), 100));
         searchLog.setReferer(StringUtils.abbreviate(request.getHeader("referer"), 1000));
         searchLog.setUserAgent(StringUtils.abbreviate(request.getHeader("user-agent"), 255));
         final Object accessType = request.getAttribute(Constants.SEARCH_LOG_ACCESS_TYPE);

+ 10 - 0
src/main/java/org/codelibs/fess/helper/ViewHelper.java

@@ -34,6 +34,7 @@ import java.util.regex.Pattern;
 
 import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
 
 import org.apache.catalina.connector.ClientAbortException;
 import org.apache.commons.lang3.StringEscapeUtils;
@@ -608,6 +609,15 @@ public class ViewHelper {
         response.contentType(mimeType);
     }
 
+    public String getClientIp(final HttpServletRequest request) {
+        final String value = request.getHeader("x-forwarded-for");
+        if (StringUtil.isNotBlank(value)) {
+            return value;
+        } else {
+            return request.getRemoteAddr();
+        }
+    }
+
     public boolean isUseSession() {
         return useSession;
     }