diff options
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/org/traccar/api/resource/SessionResource.java | 4 | ||||
-rw-r--r-- | src/main/java/org/traccar/helper/IpRetriever.java | 50 | ||||
-rw-r--r-- | src/main/java/org/traccar/helper/ServletHelper.java | 27 |
3 files changed, 29 insertions, 52 deletions
diff --git a/src/main/java/org/traccar/api/resource/SessionResource.java b/src/main/java/org/traccar/api/resource/SessionResource.java index 65e05a4a2..e3c5d457f 100644 --- a/src/main/java/org/traccar/api/resource/SessionResource.java +++ b/src/main/java/org/traccar/api/resource/SessionResource.java @@ -18,7 +18,7 @@ package org.traccar.api.resource; import org.traccar.Context; import org.traccar.api.BaseResource; import org.traccar.helper.DataConverter; -import org.traccar.helper.IpRetriever; +import org.traccar.helper.ServletHelper; import org.traccar.helper.LogAction; import org.traccar.model.User; @@ -107,7 +107,7 @@ public class SessionResource extends BaseResource { LogAction.login(user.getId()); return user; } else { - LogAction.failedLogin(IpRetriever.retrieveIP(request)); + LogAction.failedLogin(ServletHelper.retrieveRemoteAddress(request)); throw new WebApplicationException(Response.status(Response.Status.UNAUTHORIZED).build()); } } diff --git a/src/main/java/org/traccar/helper/IpRetriever.java b/src/main/java/org/traccar/helper/IpRetriever.java deleted file mode 100644 index ff211d181..000000000 --- a/src/main/java/org/traccar/helper/IpRetriever.java +++ /dev/null @@ -1,50 +0,0 @@ -package org.traccar.helper; - -import javax.servlet.http.HttpServletRequest; - -/** - * Gets the client's IP address regardless of whether - * the server is behind a proxy/reverse proxy server or a load balancer. - */ -public final class IpRetriever { - - /** - * Retrieves the client's IP address. - * Handles the cases like whether the server is behind a proxy/reverse proxy server or a load balancer - * - * @param request {@link HttpServletRequest} instance - * @return client's IP address - */ - public static String retrieveIP(HttpServletRequest request) { - - if (request != null) { - String ipAddress = request.getHeader("X-FORWARDED-FOR"); - - if (ipAddress != null && !ipAddress.isEmpty()) { - return removeUnwantedData(ipAddress); - } else { - ipAddress = request.getRemoteAddr(); - return ipAddress; - } - - } else { - return null; - } - - } - - /** - * If the server is behind a reverse proxy, the header value will also - * contain the IP's from load balancer and reverse proxy. - * This method gets rid of them. - * - * @param ipAddress IP address value from the header - * @return IP address of the client - */ - private static String removeUnwantedData(String ipAddress) { - return ipAddress.contains(",") ? ipAddress.split(",")[0] : ipAddress; - } - - private IpRetriever() { - } -} diff --git a/src/main/java/org/traccar/helper/ServletHelper.java b/src/main/java/org/traccar/helper/ServletHelper.java new file mode 100644 index 000000000..4eab49001 --- /dev/null +++ b/src/main/java/org/traccar/helper/ServletHelper.java @@ -0,0 +1,27 @@ +package org.traccar.helper; + +import javax.servlet.http.HttpServletRequest; + + +public final class ServletHelper { + + + public static String retrieveRemoteAddress(HttpServletRequest request) { + + if (request != null) { + String ipAddress = request.getHeader("X-FORWARDED-FOR"); + + if (ipAddress != null && !ipAddress.isEmpty()) { + return ipAddress.substring(0, ipAddress.indexOf(",")); //Removes the additional data + } else { + ipAddress = request.getRemoteAddr(); + return ipAddress; + } + + } else { + return null; + } + + + } +}
\ No newline at end of file |