Author: cbrisson
Date: Sat Dec 23 15:17:17 2017
New Revision: 1819156
URL: http://svn.apache.org/viewvc?rev=1819156&view=rev
Log:
Added BrowserTool.getIPAddress()
Modified:
velocity/tools/trunk/src/changes/changes.xml
velocity/tools/trunk/velocity-tools-view/src/main/java/org/apache/velocity/tools/view/BrowserTool.java
Modified: velocity/tools/trunk/src/changes/changes.xml
URL:
http://svn.apache.org/viewvc/velocity/tools/trunk/src/changes/changes.xml?rev=1819156&r1=1819155&r2=1819156&view=diff
==============================================================================
--- velocity/tools/trunk/src/changes/changes.xml (original)
+++ velocity/tools/trunk/src/changes/changes.xml Sat Dec 23 15:17:17 2017
@@ -25,6 +25,9 @@
</properties>
<body>
<release version="3.0-SNAPSHOT" date="In Subversion">
+ <action type="add" dev="cbrisson">
+ Added <code>$browser.IPAddress</code>
+ </action>
<action type="fix" dev="cbrisson">
Removed deprecated components velocity-tools-uberjar and
velocity-tools-assembly
</action>
Modified:
velocity/tools/trunk/velocity-tools-view/src/main/java/org/apache/velocity/tools/view/BrowserTool.java
URL:
http://svn.apache.org/viewvc/velocity/tools/trunk/velocity-tools-view/src/main/java/org/apache/velocity/tools/view/BrowserTool.java?rev=1819156&r1=1819155&r2=1819156&view=diff
==============================================================================
---
velocity/tools/trunk/velocity-tools-view/src/main/java/org/apache/velocity/tools/view/BrowserTool.java
(original)
+++
velocity/tools/trunk/velocity-tools-view/src/main/java/org/apache/velocity/tools/view/BrowserTool.java
Sat Dec 23 15:17:17 2017
@@ -49,6 +49,7 @@ import javax.servlet.http.HttpServletReq
* <li><b>Specific rendering engine tests:</b>gecko webKit KHTML trident blink
edgeHTML presto</li>
* <li><b>Specific OS tests:</b>windows OSX linux unix BSD android iOS
symbian</li>
* <li><b>Languages</b>: <i>preferredLanguageTag</i> (a string like 'en',
'da', 'en-US', ...), <i>preferredLocale</i> (a java Locale)</li>
+ * <li><b>IP address</b>: <i>IPAddress</i>
* </ul>
*
* <p>Language properties are filtered by the languagesFilter tool param, if
present, which is here to specify which languages are acceptable on the server
side.
@@ -100,6 +101,9 @@ public class BrowserTool extends Browser
{
private static final long serialVersionUID = 1734529350532353339L;
+ /* IP */
+ private String IPAddress = null;
+
/* User-Agent */
private String userAgentString = null;
private String lowercaseUserAgentString = null;
@@ -125,6 +129,19 @@ public class BrowserTool extends Browser
{
setUserAgentString(request.getHeader("User-Agent"));
setAcceptLanguage(request.getHeader("Accept-Language"));
+
+ /* Get IP Address */
+ IPAddress = request.getHeader("X-FORWARDED-FOR");
+ if (IPAddress == null)
+ {
+ IPAddress = request.getRemoteAddr();
+ }
+ int coma;
+ if (IPAddress != null && (coma = IPAddress.indexOf(',')) != -1)
+ {
+ /* keep the leftmost address */
+ IPAddress = IPAddress.substring(0, coma);
+ }
}
else
{
@@ -198,7 +215,7 @@ public class BrowserTool extends Browser
}
- /* Generic getter for unknown tests
+ /* Generic getter for custom tests
*/
public boolean get(String key)
{
@@ -215,6 +232,25 @@ public class BrowserTool extends Browser
return acceptLanguage;
}
+ /**
+ * <p>
+ * Get the client browser IP address. In the session scope, which is the
default,
+ * it corresponds to the <i>first</i> seen IP adress.
+ * </p>
+ * <p>
+ * The tool tries to get the real IP address whenever the request has
been proxied.
+ * </p>
+ * <p>
+ * Please note that the result may be null.
+ * </p>
+ * @return the IP address as a string
+ * @Since VelocityTools 3.0
+ */
+ public String getIPAddress()
+ {
+ return IPAddress;
+ }
+
/* device type */
/**