You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by bh...@apache.org on 2014/11/25 10:03:36 UTC
[3/4] git commit: updated refs/heads/master to 7ff31f1
Validate IPv4 address using Apache Commons Validator
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/72ba98b1
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/72ba98b1
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/72ba98b1
Branch: refs/heads/master
Commit: 72ba98b1b856db84327f2836eac3b4a4b3099bea
Parents: 87a7810
Author: Wido den Hollander <wi...@widodh.nl>
Authored: Mon Nov 24 14:42:02 2014 +0100
Committer: Wido den Hollander <wi...@widodh.nl>
Committed: Mon Nov 24 14:43:48 2014 +0100
----------------------------------------------------------------------
pom.xml | 6 +++++
server/src/com/cloud/api/ApiServlet.java | 4 +--
utils/pom.xml | 4 +++
utils/src/com/cloud/utils/net/NetUtils.java | 32 +++---------------------
4 files changed, 15 insertions(+), 31 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/72ba98b1/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 99e23a1..e68b307 100644
--- a/pom.xml
+++ b/pom.xml
@@ -82,6 +82,7 @@
<cs.aws.sdk.version>1.3.22</cs.aws.sdk.version>
<cs.lang.version>2.6</cs.lang.version>
<cs.commons-io.version>1.4</cs.commons-io.version>
+ <cs.commons-validator.version>1.4.0</cs.commons-validator.version>
<cs.reflections.version>0.9.8</cs.reflections.version>
<cs.java-ipv6.version>0.10</cs.java-ipv6.version>
<cs.replace.properties>build/replace.properties</cs.replace.properties>
@@ -234,6 +235,11 @@
<version>${cs.codec.version}</version>
</dependency>
<dependency>
+ <groupId>commons-validator</groupId>
+ <artifactId>commons-validator</artifactId>
+ <version>${cs.commons-validator.version}</version>
+ </dependency>
+ <dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk16</artifactId>
<version>${cs.bcprov.version}</version>
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/72ba98b1/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 a246025..a4266f7 100644
--- a/server/src/com/cloud/api/ApiServlet.java
+++ b/server/src/com/cloud/api/ApiServlet.java
@@ -344,14 +344,14 @@ public class ApiServlet extends HttpServlet {
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
return null;
}
- if(NetUtils.isValidIp(ip)) {
+ if(NetUtils.isValidIp(ip) || NetUtils.isValidIpv6(ip)) {
return ip;
}
//it could be possible to have multiple IPs in HTTP header, this happens if there are multiple proxy in between
//the client and the servlet, so parse the client IP
String[] ips = ip.split(",");
for(String i : ips) {
- if(NetUtils.isValidIp(i.trim())) {
+ if(NetUtils.isValidIp(i.trim()) || NetUtils.isValidIpv6(i.trim())) {
return i.trim();
}
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/72ba98b1/utils/pom.xml
----------------------------------------------------------------------
diff --git a/utils/pom.xml b/utils/pom.xml
index 6b16b99..7d3210a 100755
--- a/utils/pom.xml
+++ b/utils/pom.xml
@@ -59,6 +59,10 @@
<artifactId>cglib-nodep</artifactId>
</dependency>
<dependency>
+ <groupId>commons-validator</groupId>
+ <artifactId>commons-validator</artifactId>
+ </dependency>
+ <dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
</dependency>
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/72ba98b1/utils/src/com/cloud/utils/net/NetUtils.java
----------------------------------------------------------------------
diff --git a/utils/src/com/cloud/utils/net/NetUtils.java b/utils/src/com/cloud/utils/net/NetUtils.java
index 1f41825..8875bb9 100755
--- a/utils/src/com/cloud/utils/net/NetUtils.java
+++ b/utils/src/com/cloud/utils/net/NetUtils.java
@@ -22,7 +22,6 @@ package com.cloud.utils.net;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
-import java.lang.reflect.Array;
import java.math.BigInteger;
import java.net.InetAddress;
import java.net.InterfaceAddress;
@@ -43,6 +42,7 @@ import java.util.regex.Pattern;
import org.apache.commons.lang.SystemUtils;
import org.apache.commons.net.util.SubnetUtils;
+import org.apache.commons.validator.routines.InetAddressValidator;
import org.apache.log4j.Logger;
import com.googlecode.ipv6.IPv6Address;
@@ -520,35 +520,9 @@ public class NetUtils {
}
public static boolean isValidIp(final String ip) {
- final String[] ipAsList = ip.split("\\.");
+ InetAddressValidator validator = InetAddressValidator.getInstance();
- // The IP address must have four octets
- if (Array.getLength(ipAsList) != 4) {
- return false;
- }
-
- for (int i = 0; i < 4; i++) {
- // Each octet must be an integer
- final String octetString = ipAsList[i];
- int octet;
- try {
- octet = Integer.parseInt(octetString);
- } catch (final Exception e) {
- return false;
- }
- // Each octet must be between 0 and 255, inclusive
- if (octet < 0 || octet > 255) {
- return false;
- }
-
- // Each octetString must have between 1 and 3 characters
- if (octetString.length() < 1 || octetString.length() > 3) {
- return false;
- }
- }
-
- // IP is good, return true
- return true;
+ return validator.isValidInet4Address(ip);
}
public static boolean isValidCIDR(final String cidr) {