cloudstack-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From mc...@apache.org
Subject [1/2] git commit: updated refs/heads/object_store to 235825d
Date Tue, 21 May 2013 23:51:41 GMT
Updated Branches:
  refs/heads/object_store 2aab3c884 -> 235825dc3


Consolidate code to use UriUtils.validateUrl instead of repeating code
several places.

Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/f5732fe3
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/f5732fe3
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/f5732fe3

Branch: refs/heads/object_store
Commit: f5732fe3bff9970eb913bfbd9a8912dbb8d8592a
Parents: 2aab3c8
Author: Min Chen <min.chen@citrix.com>
Authored: Tue May 21 16:50:02 2013 -0700
Committer: Min Chen <min.chen@citrix.com>
Committed: Tue May 21 16:50:02 2013 -0700

----------------------------------------------------------------------
 .../storage/template/HttpTemplateDownloader.java   |   42 +-------------
 .../storage/template/S3TemplateDownloader.java     |   46 +--------------
 .../src/com/cloud/storage/VolumeManagerImpl.java   |   42 +-------------
 .../cloud/template/HypervisorTemplateAdapter.java  |   36 +----------
 utils/src/com/cloud/utils/UriUtils.java            |    5 +-
 5 files changed, 13 insertions(+), 158 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f5732fe3/core/src/com/cloud/storage/template/HttpTemplateDownloader.java
----------------------------------------------------------------------
diff --git a/core/src/com/cloud/storage/template/HttpTemplateDownloader.java b/core/src/com/cloud/storage/template/HttpTemplateDownloader.java
index e832c02..4c0e145 100644
--- a/core/src/com/cloud/storage/template/HttpTemplateDownloader.java
+++ b/core/src/com/cloud/storage/template/HttpTemplateDownloader.java
@@ -50,6 +50,7 @@ import com.cloud.agent.api.storage.Proxy;
 import com.cloud.storage.StorageLayer;
 import com.cloud.utils.exception.CloudRuntimeException;
 import com.cloud.utils.Pair;
+import com.cloud.utils.UriUtils;
 
 /**
  * Download a template file using HTTP
@@ -128,7 +129,7 @@ public class HttpTemplateDownloader implements TemplateDownloader {
 			}
 
 			toFile = f.getAbsolutePath();
-			Pair<String, Integer> hostAndPort = validateUrl(downloadUrl);
+			Pair<String, Integer> hostAndPort = UriUtils.validateUrl(downloadUrl);
 
 			if (proxy != null) {
 				client.getHostConfiguration().setProxy(proxy.getHost(), proxy.getPort());
@@ -159,45 +160,6 @@ public class HttpTemplateDownloader implements TemplateDownloader {
 	}
 
 
-	private  Pair<String, Integer> validateUrl(String url) throws IllegalArgumentException
{
-		try {
-			URI uri = new URI(url);
-			if (!uri.getScheme().equalsIgnoreCase("http") && !uri.getScheme().equalsIgnoreCase("https")
) {
-				throw new IllegalArgumentException("Unsupported scheme for url");
-			}
-			int port = uri.getPort();
-			if (!(port == 80 || port == 8080 || port == 443 || port == -1)) {
-				throw new IllegalArgumentException("Only ports 80, 8080 and 443 are allowed");
-			}
-
-			if (port == -1 && uri.getScheme().equalsIgnoreCase("https")) {
-				port = 443;
-			} else if (port == -1 && uri.getScheme().equalsIgnoreCase("http")) {
-				port = 80;
-			}
-
-			String host = uri.getHost();
-			try {
-				InetAddress hostAddr = InetAddress.getByName(host);
-				if (hostAddr.isAnyLocalAddress() || hostAddr.isLinkLocalAddress() || hostAddr.isLoopbackAddress()
|| hostAddr.isMulticastAddress()) {
-					throw new IllegalArgumentException("Illegal host specified in url");
-				}
-				if (hostAddr instanceof Inet6Address) {
-					throw new IllegalArgumentException("IPV6 addresses not supported (" + hostAddr.getHostAddress()
+ ")");
-				}
-			    return new Pair<String, Integer>(host, port);
-			} catch (UnknownHostException uhe) {
-				throw new IllegalArgumentException("Unable to resolve " + host);
-			}
-		} catch (IllegalArgumentException iae) {
-			s_logger.warn("Failed uri validation check: " + iae.getMessage());
-			throw iae;
-		} catch (URISyntaxException use) {
-			s_logger.warn("Failed uri syntax check: " + use.getMessage());
-			throw new IllegalArgumentException(use.getMessage());
-		}
-	}
-
 	@Override
 	public long download(boolean resume, DownloadCompleteCallback callback) {
 		switch (status) {

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f5732fe3/core/src/com/cloud/storage/template/S3TemplateDownloader.java
----------------------------------------------------------------------
diff --git a/core/src/com/cloud/storage/template/S3TemplateDownloader.java b/core/src/com/cloud/storage/template/S3TemplateDownloader.java
index 43b582c..5ca6d33 100644
--- a/core/src/com/cloud/storage/template/S3TemplateDownloader.java
+++ b/core/src/com/cloud/storage/template/S3TemplateDownloader.java
@@ -61,6 +61,7 @@ import com.cloud.agent.api.storage.Proxy;
 import com.cloud.agent.api.to.S3TO;
 import com.cloud.utils.Pair;
 import com.cloud.utils.S3Utils;
+import com.cloud.utils.UriUtils;
 
 /**
  * Download a template file using HTTP
@@ -132,7 +133,8 @@ public class S3TemplateDownloader implements TemplateDownloader {
 			this.request.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, myretryhandler);
 			this.completionCallback = callback;
 
-			Pair<String, Integer> hostAndPort = validateUrl(downloadUrl);
+			Pair<String, Integer> hostAndPort = UriUtils.validateUrl(downloadUrl);
+            this.fileName = StringUtils.substringAfterLast(downloadUrl, "/");
 
 			if (proxy != null) {
 				client.getHostConfiguration().setProxy(proxy.getHost(), proxy.getPort());
@@ -163,48 +165,6 @@ public class S3TemplateDownloader implements TemplateDownloader {
 	}
 
 
-	private  Pair<String, Integer> validateUrl(String url) throws IllegalArgumentException
{
-		try {
-			URI uri = new URI(url);
-			if (!uri.getScheme().equalsIgnoreCase("http") && !uri.getScheme().equalsIgnoreCase("https")
) {
-				throw new IllegalArgumentException("Unsupported scheme for url");
-			}
-			int port = uri.getPort();
-			if (!(port == 80 || port == 8080 || port == 443 || port == -1)) {
-				throw new IllegalArgumentException("Only ports 80, 8080 and 443 are allowed");
-			}
-
-			if (port == -1 && uri.getScheme().equalsIgnoreCase("https")) {
-				port = 443;
-			} else if (port == -1 && uri.getScheme().equalsIgnoreCase("http")) {
-				port = 80;
-			}
-
-            this.fileName = StringUtils.substringAfterLast(url, "/");
-
-			String host = uri.getHost();
-			try {
-				InetAddress hostAddr = InetAddress.getByName(host);
-				if (hostAddr.isAnyLocalAddress() || hostAddr.isLinkLocalAddress() || hostAddr.isLoopbackAddress()
|| hostAddr.isMulticastAddress()) {
-					throw new IllegalArgumentException("Illegal host specified in url");
-				}
-				if (hostAddr instanceof Inet6Address) {
-					throw new IllegalArgumentException("IPV6 addresses not supported (" + hostAddr.getHostAddress()
+ ")");
-				}
-			    return new Pair<String, Integer>(host, port);
-			} catch (UnknownHostException uhe) {
-				throw new IllegalArgumentException("Unable to resolve " + host);
-			}
-
-		} catch (IllegalArgumentException iae) {
-			s_logger.warn("Failed uri validation check: " + iae.getMessage());
-			throw iae;
-		} catch (URISyntaxException use) {
-			s_logger.warn("Failed uri syntax check: " + use.getMessage());
-			throw new IllegalArgumentException(use.getMessage());
-		}
-	}
-
 	@Override
 	public long download(boolean resume, DownloadCompleteCallback callback) {
 		switch (status) {

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f5732fe3/server/src/com/cloud/storage/VolumeManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/storage/VolumeManagerImpl.java b/server/src/com/cloud/storage/VolumeManagerImpl.java
index 2aa4192..38f9959 100644
--- a/server/src/com/cloud/storage/VolumeManagerImpl.java
+++ b/server/src/com/cloud/storage/VolumeManagerImpl.java
@@ -481,7 +481,7 @@ public class VolumeManagerImpl extends ManagerBase implements VolumeManager
{
                             + " is an invalid for the format "
                             + format.toLowerCase());
         }
-        validateUrl(url);
+        UriUtils.validateUrl(url);
 
         // Check that the resource limit for secondary storage won't be exceeded
         _resourceLimitMgr.checkResourceLimit(_accountMgr.getAccount(ownerId), ResourceType.secondary_storage,
@@ -2478,47 +2478,7 @@ public class VolumeManagerImpl extends ManagerBase implements VolumeManager
{
     }
 
 
-    private String validateUrl(String url) {
-        try {
-            URI uri = new URI(url);
-            if ((uri.getScheme() == null)
-                    || (!uri.getScheme().equalsIgnoreCase("http")
-                            && !uri.getScheme().equalsIgnoreCase("https") &&
!uri
-                            .getScheme().equalsIgnoreCase("file"))) {
-                throw new IllegalArgumentException(
-                        "Unsupported scheme for url: " + url);
-            }
 
-            int port = uri.getPort();
-            if (!(port == 80 || port == 8080 || port == 443 || port == -1)) {
-                throw new IllegalArgumentException(
-                        "Only ports 80, 8080 and 443 are allowed");
-            }
-            String host = uri.getHost();
-            try {
-                InetAddress hostAddr = InetAddress.getByName(host);
-                if (hostAddr.isAnyLocalAddress()
-                        || hostAddr.isLinkLocalAddress()
-                        || hostAddr.isLoopbackAddress()
-                        || hostAddr.isMulticastAddress()) {
-                    throw new IllegalArgumentException(
-                            "Illegal host specified in url");
-                }
-                if (hostAddr instanceof Inet6Address) {
-                    throw new IllegalArgumentException(
-                            "IPV6 addresses not supported ("
-                                    + hostAddr.getHostAddress() + ")");
-                }
-            } catch (UnknownHostException uhe) {
-                throw new IllegalArgumentException("Unable to resolve " + host);
-            }
-
-            return uri.toString();
-        } catch (URISyntaxException e) {
-            throw new IllegalArgumentException("Invalid URL " + url);
-        }
-
-    }
 
     @Override
     public boolean canVmRestartOnAnotherServer(long vmId) {

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f5732fe3/server/src/com/cloud/template/HypervisorTemplateAdapter.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/template/HypervisorTemplateAdapter.java b/server/src/com/cloud/template/HypervisorTemplateAdapter.java
index 74bae35..e1d535b 100755
--- a/server/src/com/cloud/template/HypervisorTemplateAdapter.java
+++ b/server/src/com/cloud/template/HypervisorTemplateAdapter.java
@@ -87,36 +87,6 @@ public class HypervisorTemplateAdapter extends TemplateAdapterBase {
         return TemplateAdapterType.Hypervisor.getName();
     }
 
-	private String validateUrl(String url) {
-		try {
-			URI uri = new URI(url);
-			if ((uri.getScheme() == null) || (!uri.getScheme().equalsIgnoreCase("http")
-				&& !uri.getScheme().equalsIgnoreCase("https") && !uri.getScheme().equalsIgnoreCase("file")))
{
-				throw new IllegalArgumentException("Unsupported scheme for url: " + url);
-			}
-
-			int port = uri.getPort();
-			if (!(port == 80 || port == 8080 || port == 443 || port == -1)) {
-				throw new IllegalArgumentException("Only ports 80, 8080 and 443 are allowed");
-			}
-			String host = uri.getHost();
-			try {
-				InetAddress hostAddr = InetAddress.getByName(host);
-				if (hostAddr.isAnyLocalAddress() || hostAddr.isLinkLocalAddress() || hostAddr.isLoopbackAddress()
|| hostAddr.isMulticastAddress()) {
-					throw new IllegalArgumentException("Illegal host specified in url");
-				}
-				if (hostAddr instanceof Inet6Address) {
-					throw new IllegalArgumentException("IPV6 addresses not supported (" + hostAddr.getHostAddress()
+ ")");
-				}
-			} catch (UnknownHostException uhe) {
-				throw new IllegalArgumentException("Unable to resolve " + host);
-			}
-
-			return uri.toString();
-		} catch (URISyntaxException e) {
-			throw new IllegalArgumentException("Invalid URL " + url);
-		}
-	}
 
 	@Override
 	public TemplateProfile prepare(RegisterIsoCmd cmd) throws ResourceAllocationException {
@@ -128,7 +98,8 @@ public class HypervisorTemplateAdapter extends TemplateAdapterBase {
         	throw new InvalidParameterValueException("Please specify a valid iso");
         }
 
-		profile.setUrl(validateUrl(url));
+		UriUtils.validateUrl(url);
+		profile.setUrl(url);
 		// Check that the resource limit for secondary storage won't be exceeded
 		_resourceLimitMgr.checkResourceLimit(_accountMgr.getAccount(cmd.getEntityOwnerId()),
 		        ResourceType.secondary_storage, UriUtils.getRemoteSize(url));
@@ -160,7 +131,8 @@ public class HypervisorTemplateAdapter extends TemplateAdapterBase {
 	        throw new InvalidParameterValueException("Please specify a valid URL. URL:" + url
+ " is an invalid for the format " + cmd.getFormat().toLowerCase());
 		}
 
-		profile.setUrl(validateUrl(url));
+		UriUtils.validateUrl(url);
+		profile.setUrl(url);
 		// Check that the resource limit for secondary storage won't be exceeded
 		_resourceLimitMgr.checkResourceLimit(_accountMgr.getAccount(cmd.getEntityOwnerId()),
 		        ResourceType.secondary_storage, UriUtils.getRemoteSize(url));

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f5732fe3/utils/src/com/cloud/utils/UriUtils.java
----------------------------------------------------------------------
diff --git a/utils/src/com/cloud/utils/UriUtils.java b/utils/src/com/cloud/utils/UriUtils.java
index 2673177..b9d54d5 100644
--- a/utils/src/com/cloud/utils/UriUtils.java
+++ b/utils/src/com/cloud/utils/UriUtils.java
@@ -133,8 +133,9 @@ public class UriUtils {
     public static  Pair<String, Integer> validateUrl(String url) throws IllegalArgumentException
{
         try {
             URI uri = new URI(url);
-            if (!uri.getScheme().equalsIgnoreCase("http") && !uri.getScheme().equalsIgnoreCase("https")
) {
-                throw new IllegalArgumentException("Unsupported scheme for url");
+            if ((uri.getScheme() == null) || (!uri.getScheme().equalsIgnoreCase("http")
+                    && !uri.getScheme().equalsIgnoreCase("https") && !uri.getScheme().equalsIgnoreCase("file")))
{
+                    throw new IllegalArgumentException("Unsupported scheme for url: " + url);
             }
             int port = uri.getPort();
             if (!(port == 80 || port == 8080 || port == 443 || port == -1)) {


Mime
View raw message