Repository: cloudstack
Updated Branches:
  refs/heads/master af3774304 -> e3564658b


CLOUDSTACK-6940, CLOUDSTACK-7312, CLOUDSTACK-5512: Template/ISO/Volume
upload rejects some valid URL formats. Also consolidate URL format check
into one util routine.


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

Branch: refs/heads/master
Commit: e3564658befaa72cbe5fd510bea2a25b40f108f5
Parents: 83bd4d6
Author: Min Chen <min.c...@citrix.com>
Authored: Tue Aug 12 11:42:17 2014 -0700
Committer: Min Chen <min.c...@citrix.com>
Committed: Tue Aug 12 11:43:08 2014 -0700

----------------------------------------------------------------------
 .../template/HttpTemplateDownloader.java        | 10 ++-
 .../com/cloud/storage/VolumeApiServiceImpl.java | 22 +----
 .../template/HypervisorTemplateAdapter.java     | 87 +-------------------
 utils/src/com/cloud/utils/UriUtils.java         | 83 ++++++++++++++++++-
 .../utils/template/TemplateUtils.java           | 28 +++----
 5 files changed, 107 insertions(+), 123 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e3564658/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 5bfa1f7..ed6c9f0 100644
--- a/core/src/com/cloud/storage/template/HttpTemplateDownloader.java
+++ b/core/src/com/cloud/storage/template/HttpTemplateDownloader.java
@@ -24,6 +24,7 @@ import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.RandomAccessFile;
+import java.net.URI;
 import java.net.URISyntaxException;
 import java.util.Date;
 
@@ -251,7 +252,14 @@ public class HttpTemplateDownloader extends 
ManagedContextRunnable implements Te
                     out.seek(offset);
                     totalBytes += bytes;
                         if (!verifiedFormat && (offset >= 1048576 || offset >= 
remoteSize)) { //let's check format after we get 1MB or full file
-                            String unsupportedFormat = 
TemplateUtils.checkTemplateFormat(file.getAbsolutePath(), getDownloadUrl());
+                        String uripath = null;
+                        try {
+                            URI str = new URI(getDownloadUrl());
+                            uripath = str.getPath();
+                        } catch (URISyntaxException e) {
+                            s_logger.warn("Invalid download url: " + 
getDownloadUrl() + ", This should not happen since we have validated the url 
before!!");
+                        }
+                        String unsupportedFormat = 
TemplateUtils.checkTemplateFormat(file.getAbsolutePath(), uripath);
                             if (unsupportedFormat == null || 
!unsupportedFormat.isEmpty()) {
                                  try {
                                      request.abort();

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e3564658/server/src/com/cloud/storage/VolumeApiServiceImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/storage/VolumeApiServiceImpl.java 
b/server/src/com/cloud/storage/VolumeApiServiceImpl.java
index 5a83ac9..8d83225 100644
--- a/server/src/com/cloud/storage/VolumeApiServiceImpl.java
+++ b/server/src/com/cloud/storage/VolumeApiServiceImpl.java
@@ -295,26 +295,8 @@ public class VolumeApiServiceImpl extends ManagerBase 
implements VolumeApiServic
         if (userSpecifiedName == null) {
             userSpecifiedName = getRandomVolumeName();
         }
-        if ((!url.toLowerCase().endsWith("vhd")) && 
(!url.toLowerCase().endsWith("vhd.zip")) && 
(!url.toLowerCase().endsWith("vhd.bz2")) && 
(!url.toLowerCase().endsWith("vhdx"))
-                && (!url.toLowerCase().endsWith("vhdx.zip")) && 
(!url.toLowerCase().endsWith("vhdx.gz")) && 
(!url.toLowerCase().endsWith("vhdx.bz2"))
-                && (!url.toLowerCase().endsWith("vhd.gz")) && 
(!url.toLowerCase().endsWith("qcow2")) && 
(!url.toLowerCase().endsWith("qcow2.zip"))
-                && (!url.toLowerCase().endsWith("qcow2.bz2")) && 
(!url.toLowerCase().endsWith("qcow2.gz")) && 
(!url.toLowerCase().endsWith("ova"))
-                && (!url.toLowerCase().endsWith("ova.zip")) && 
(!url.toLowerCase().endsWith("ova.bz2")) && 
(!url.toLowerCase().endsWith("ova.gz"))
-                && (!url.toLowerCase().endsWith("img")) && 
(!url.toLowerCase().endsWith("raw"))) {
-            throw new InvalidParameterValueException("Please specify a valid " 
+ format.toLowerCase());
-        }
-
-        if ((format.equalsIgnoreCase("vhd") && 
(!url.toLowerCase().endsWith(".vhd") && !url.toLowerCase().endsWith("vhd.zip") 
&& !url.toLowerCase().endsWith("vhd.bz2") && !url
-                .toLowerCase().endsWith("vhd.gz")))
-                || (format.equalsIgnoreCase("vhdx") && 
(!url.toLowerCase().endsWith(".vhdx") && 
!url.toLowerCase().endsWith("vhdx.zip") && 
!url.toLowerCase().endsWith("vhdx.bz2") && !url
-                        .toLowerCase().endsWith("vhdx.gz")))
-                        || (format.equalsIgnoreCase("qcow2") && 
(!url.toLowerCase().endsWith(".qcow2") && 
!url.toLowerCase().endsWith("qcow2.zip")
-                                && !url.toLowerCase().endsWith("qcow2.bz2") && 
!url.toLowerCase().endsWith("qcow2.gz")))
-                                || (format.equalsIgnoreCase("ova") && 
(!url.toLowerCase().endsWith(".ova") && !url.toLowerCase().endsWith("ova.zip") 
&& !url.toLowerCase().endsWith("ova.bz2") && !url
-                                        .toLowerCase().endsWith("ova.gz"))) || 
(format.equalsIgnoreCase("raw") && (!url.toLowerCase().endsWith(".img") && 
!url.toLowerCase().endsWith("raw")))) {
-            throw new InvalidParameterValueException("Please specify a valid 
URL. URL:" + url + " is an invalid for the format " + format.toLowerCase());
-        }
-        UriUtils.validateUrl(url);
+
+        UriUtils.validateUrl(format, url);
 
 
         // Check that the resource limit for secondary storage won't be 
exceeded

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e3564658/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 51dedf7..72aaff5 100755
--- a/server/src/com/cloud/template/HypervisorTemplateAdapter.java
+++ b/server/src/com/cloud/template/HypervisorTemplateAdapter.java
@@ -16,8 +16,6 @@
 // under the License.
 package com.cloud.template;
 
-import java.net.MalformedURLException;
-import java.net.URL;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
@@ -113,13 +111,7 @@ public class HypervisorTemplateAdapter extends 
TemplateAdapterBase {
     public TemplateProfile prepare(RegisterIsoCmd cmd) throws 
ResourceAllocationException {
         TemplateProfile profile = super.prepare(cmd);
         String url = profile.getUrl();
-
-        if ((!url.toLowerCase().endsWith("iso")) && 
(!url.toLowerCase().endsWith("iso.zip")) && 
(!url.toLowerCase().endsWith("iso.bz2")) &&
-            (!url.toLowerCase().endsWith("iso.gz"))) {
-            throw new InvalidParameterValueException("Please specify a valid 
iso");
-        }
-
-        UriUtils.validateUrl(url);
+        UriUtils.validateUrl(ImageFormat.ISO.getFileExtension(), 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));
@@ -130,88 +122,13 @@ public class HypervisorTemplateAdapter extends 
TemplateAdapterBase {
     public TemplateProfile prepare(RegisterTemplateCmd cmd) throws 
ResourceAllocationException {
         TemplateProfile profile = super.prepare(cmd);
         String url = profile.getUrl();
-        String path = null;
-        try {
-            URL str = new URL(url);
-            path = str.getPath();
-        } catch (MalformedURLException ex) {
-            throw new InvalidParameterValueException("Please specify a valid 
URL. URL:" + url + " is invalid");
-        }
-
-        try {
-            checkFormat(cmd.getFormat(), url);
-        } catch (InvalidParameterValueException ex) {
-            checkFormat(cmd.getFormat(), path);
-        }
-
-        UriUtils.validateUrl(url);
+        UriUtils.validateUrl(cmd.getFormat(), 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));
         return profile;
     }
 
-    private void checkFormat(String format, String url) {
-        if ((!url.toLowerCase().endsWith("vhd")) && 
(!url.toLowerCase().endsWith("vhd.zip")) && 
(!url.toLowerCase().endsWith("vhd.bz2")) &&
-            (!url.toLowerCase().endsWith("vhdx")) && 
(!url.toLowerCase().endsWith("vhdx.gz")) &&
-            (!url.toLowerCase().endsWith("vhdx.bz2")) && 
(!url.toLowerCase().endsWith("vhdx.zip")) &&
-            (!url.toLowerCase().endsWith("vhd.gz")) && 
(!url.toLowerCase().endsWith("qcow2")) && 
(!url.toLowerCase().endsWith("qcow2.zip")) &&
-            (!url.toLowerCase().endsWith("qcow2.bz2")) && 
(!url.toLowerCase().endsWith("qcow2.gz")) && 
(!url.toLowerCase().endsWith("ova")) &&
-            (!url.toLowerCase().endsWith("ova.zip")) && 
(!url.toLowerCase().endsWith("ova.bz2")) && 
(!url.toLowerCase().endsWith("ova.gz")) &&
-            (!url.toLowerCase().endsWith("tar")) && 
(!url.toLowerCase().endsWith("tar.zip")) && 
(!url.toLowerCase().endsWith("tar.bz2")) &&
-            (!url.toLowerCase().endsWith("tar.gz")) && 
(!url.toLowerCase().endsWith("vmdk")) && 
(!url.toLowerCase().endsWith("vmdk.gz")) &&
-            (!url.toLowerCase().endsWith("vmdk.zip")) && 
(!url.toLowerCase().endsWith("vmdk.bz2")) && 
(!url.toLowerCase().endsWith("img")) &&
-            (!url.toLowerCase().endsWith("img.gz")) && 
(!url.toLowerCase().endsWith("img.zip")) && 
(!url.toLowerCase().endsWith("img.bz2")) &&
-            (!url.toLowerCase().endsWith("raw")) && 
(!url.toLowerCase().endsWith("raw.gz")) && 
(!url.toLowerCase().endsWith("raw.bz2")) &&
-            (!url.toLowerCase().endsWith("raw.zip"))) {
-            throw new InvalidParameterValueException("Please specify a valid " 
+ format.toLowerCase());
-        }
-
-        if ((format.equalsIgnoreCase("vhd")
-                 && (!url.toLowerCase().endsWith("vhd")
-                         && !url.toLowerCase().endsWith("vhd.zip")
-                         && !url.toLowerCase().endsWith("vhd.bz2")
-                         && !url.toLowerCase().endsWith("vhd.gz")))
-            || (format.equalsIgnoreCase("vhdx")
-                 && (!url.toLowerCase().endsWith("vhdx")
-                         && !url.toLowerCase().endsWith("vhdx.zip")
-                         && !url.toLowerCase().endsWith("vhdx.bz2")
-                         && !url.toLowerCase().endsWith("vhdx.gz")))
-            || (format.equalsIgnoreCase("qcow2")
-                 && (!url.toLowerCase().endsWith("qcow2")
-                         && !url.toLowerCase().endsWith("qcow2.zip")
-                         && !url.toLowerCase().endsWith("qcow2.bz2")
-                         && !url.toLowerCase().endsWith("qcow2.gz")))
-            || (format.equalsIgnoreCase("ova")
-                 && (!url.toLowerCase().endsWith("ova")
-                         && !url.toLowerCase().endsWith("ova.zip")
-                         && !url.toLowerCase().endsWith("ova.bz2")
-                         && !url.toLowerCase().endsWith("ova.gz")))
-            || (format.equalsIgnoreCase("tar")
-                 && (!url.toLowerCase().endsWith("tar")
-                         && !url.toLowerCase().endsWith("tar.zip")
-                         && !url.toLowerCase().endsWith("tar.bz2")
-                         && !url.toLowerCase().endsWith("tar.gz")))
-            || (format.equalsIgnoreCase("raw")
-                 && (!url.toLowerCase().endsWith("img")
-                         && !url.toLowerCase().endsWith("img.zip")
-                         && !url.toLowerCase().endsWith("img.bz2")
-                         && !url.toLowerCase().endsWith("img.gz")
-                         && !url.toLowerCase().endsWith("raw")
-                         && !url.toLowerCase().endsWith("raw.bz2")
-                         && !url.toLowerCase().endsWith("raw.zip")
-                         && !url.toLowerCase().endsWith("raw.gz")))
-            || (format.equalsIgnoreCase("vmdk")
-                 && (!url.toLowerCase().endsWith("vmdk")
-                         && !url.toLowerCase().endsWith("vmdk.zip")
-                         && !url.toLowerCase().endsWith("vmdk.bz2")
-                         && !url.toLowerCase().endsWith("vmdk.gz")))
-           ) {
-            throw new InvalidParameterValueException("Please specify a valid 
URL. URL:" + url + " is an invalid for the format " + format.toLowerCase());
-        }
-
-    }
-
     @Override
     public VMTemplateVO create(TemplateProfile profile) {
         // persist entry in vm_template, vm_template_details and 
template_zone_ref tables, not that entry at template_store_ref is not created 
here, and created in createTemplateAsync.

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e3564658/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 6b28afb..0657c74 100644
--- a/utils/src/com/cloud/utils/UriUtils.java
+++ b/utils/src/com/cloud/utils/UriUtils.java
@@ -45,9 +45,9 @@ import org.apache.commons.httpclient.auth.AuthScope;
 import org.apache.commons.httpclient.methods.GetMethod;
 import org.apache.commons.httpclient.util.URIUtil;
 import org.apache.http.NameValuePair;
-import org.apache.http.message.BasicNameValuePair;
 import org.apache.http.client.utils.URIBuilder;
 import org.apache.http.client.utils.URLEncodedUtils;
+import org.apache.http.message.BasicNameValuePair;
 import org.apache.log4j.Logger;
 
 import com.cloud.utils.crypt.DBEncryptionUtil;
@@ -233,10 +233,14 @@ public class UriUtils {
     }
 
     public static Pair<String, Integer> validateUrl(String url) throws 
IllegalArgumentException {
+        return validateUrl(null, url);
+    }
+
+    public static Pair<String, Integer> validateUrl(String format, String url) 
throws IllegalArgumentException {
         try {
             URI uri = new URI(url);
             if ((uri.getScheme() == null) ||
-                (!uri.getScheme().equalsIgnoreCase("http") && 
!uri.getScheme().equalsIgnoreCase("https") && 
!uri.getScheme().equalsIgnoreCase("file"))) {
+                    (!uri.getScheme().equalsIgnoreCase("http") && 
!uri.getScheme().equalsIgnoreCase("https") && 
!uri.getScheme().equalsIgnoreCase("file"))) {
                 throw new IllegalArgumentException("Unsupported scheme for 
url: " + url);
             }
             int port = uri.getPort();
@@ -259,15 +263,88 @@ public class UriUtils {
                 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);
             }
+
+            // verify format
+            if (format != null) {
+                String uripath = uri.getPath();
+                checkFormat(format, uripath);
+            }
+            return new Pair<String, Integer>(host, port);
+
         } catch (URISyntaxException use) {
             throw new IllegalArgumentException("Invalid URL: " + url);
         }
     }
 
+    // verify if a URI path is compliance with the file format given
+    private static void checkFormat(String format, String uripath) {
+        if ((!uripath.toLowerCase().endsWith("vhd")) && 
(!uripath.toLowerCase().endsWith("vhd.zip")) && 
(!uripath.toLowerCase().endsWith("vhd.bz2")) &&
+                (!uripath.toLowerCase().endsWith("vhdx")) && 
(!uripath.toLowerCase().endsWith("vhdx.gz")) &&
+                (!uripath.toLowerCase().endsWith("vhdx.bz2")) && 
(!uripath.toLowerCase().endsWith("vhdx.zip")) &&
+                (!uripath.toLowerCase().endsWith("vhd.gz")) && 
(!uripath.toLowerCase().endsWith("qcow2")) && 
(!uripath.toLowerCase().endsWith("qcow2.zip")) &&
+                (!uripath.toLowerCase().endsWith("qcow2.bz2")) && 
(!uripath.toLowerCase().endsWith("qcow2.gz")) && 
(!uripath.toLowerCase().endsWith("ova")) &&
+                (!uripath.toLowerCase().endsWith("ova.zip")) && 
(!uripath.toLowerCase().endsWith("ova.bz2")) && 
(!uripath.toLowerCase().endsWith("ova.gz")) &&
+                (!uripath.toLowerCase().endsWith("tar")) && 
(!uripath.toLowerCase().endsWith("tar.zip")) && 
(!uripath.toLowerCase().endsWith("tar.bz2")) &&
+                (!uripath.toLowerCase().endsWith("tar.gz")) && 
(!uripath.toLowerCase().endsWith("vmdk")) && 
(!uripath.toLowerCase().endsWith("vmdk.gz")) &&
+                (!uripath.toLowerCase().endsWith("vmdk.zip")) && 
(!uripath.toLowerCase().endsWith("vmdk.bz2")) && 
(!uripath.toLowerCase().endsWith("img")) &&
+                (!uripath.toLowerCase().endsWith("img.gz")) && 
(!uripath.toLowerCase().endsWith("img.zip")) && 
(!uripath.toLowerCase().endsWith("img.bz2")) &&
+                (!uripath.toLowerCase().endsWith("raw")) && 
(!uripath.toLowerCase().endsWith("raw.gz")) && 
(!uripath.toLowerCase().endsWith("raw.bz2")) &&
+                (!uripath.toLowerCase().endsWith("raw.zip")) && 
(!uripath.toLowerCase().endsWith("iso")) && 
(!uripath.toLowerCase().endsWith("iso.zip"))
+                && (!uripath.toLowerCase().endsWith("iso.bz2")) && 
(!uripath.toLowerCase().endsWith("iso.gz"))) {
+            throw new IllegalArgumentException("Please specify a valid " + 
format.toLowerCase());
+        }
+
+        if ((format.equalsIgnoreCase("vhd")
+                && (!uripath.toLowerCase().endsWith("vhd")
+                && !uripath.toLowerCase().endsWith("vhd.zip")
+                && !uripath.toLowerCase().endsWith("vhd.bz2")
+                && !uripath.toLowerCase().endsWith("vhd.gz")))
+                || (format.equalsIgnoreCase("vhdx")
+                && (!uripath.toLowerCase().endsWith("vhdx")
+                        && !uripath.toLowerCase().endsWith("vhdx.zip")
+                        && !uripath.toLowerCase().endsWith("vhdx.bz2")
+                        && !uripath.toLowerCase().endsWith("vhdx.gz")))
+                || (format.equalsIgnoreCase("qcow2")
+                && (!uripath.toLowerCase().endsWith("qcow2")
+                        && !uripath.toLowerCase().endsWith("qcow2.zip")
+                        && !uripath.toLowerCase().endsWith("qcow2.bz2")
+                        && !uripath.toLowerCase().endsWith("qcow2.gz")))
+                || (format.equalsIgnoreCase("ova")
+                && (!uripath.toLowerCase().endsWith("ova")
+                        && !uripath.toLowerCase().endsWith("ova.zip")
+                        && !uripath.toLowerCase().endsWith("ova.bz2")
+                        && !uripath.toLowerCase().endsWith("ova.gz")))
+                || (format.equalsIgnoreCase("tar")
+                && (!uripath.toLowerCase().endsWith("tar")
+                        && !uripath.toLowerCase().endsWith("tar.zip")
+                        && !uripath.toLowerCase().endsWith("tar.bz2")
+                        && !uripath.toLowerCase().endsWith("tar.gz")))
+                || (format.equalsIgnoreCase("raw")
+                && (!uripath.toLowerCase().endsWith("img")
+                        && !uripath.toLowerCase().endsWith("img.zip")
+                        && !uripath.toLowerCase().endsWith("img.bz2")
+                        && !uripath.toLowerCase().endsWith("img.gz")
+                        && !uripath.toLowerCase().endsWith("raw")
+                        && !uripath.toLowerCase().endsWith("raw.bz2")
+                        && !uripath.toLowerCase().endsWith("raw.zip")
+                        && !uripath.toLowerCase().endsWith("raw.gz")))
+                || (format.equalsIgnoreCase("vmdk")
+                && (!uripath.toLowerCase().endsWith("vmdk")
+                        && !uripath.toLowerCase().endsWith("vmdk.zip")
+                        && !uripath.toLowerCase().endsWith("vmdk.bz2")
+                        && !uripath.toLowerCase().endsWith("vmdk.gz")))
+                || (format.equalsIgnoreCase("iso")
+                && (!uripath.toLowerCase().endsWith("iso.zip")
+                        && !uripath.toLowerCase().endsWith("iso.bz2")
+                        && !uripath.toLowerCase().endsWith("iso.gz")))) {
+            throw new IllegalArgumentException("Please specify a valid URL. 
URL:" + uripath + " is an invalid for the format " + format.toLowerCase());
+        }
+
+    }
+
     public static InputStream getInputStreamFromUrl(String url, String user, 
String password) {
 
         try {

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e3564658/utils/src/org/apache/cloudstack/utils/template/TemplateUtils.java
----------------------------------------------------------------------
diff --git a/utils/src/org/apache/cloudstack/utils/template/TemplateUtils.java 
b/utils/src/org/apache/cloudstack/utils/template/TemplateUtils.java
index cf1e177..53aa911 100644
--- a/utils/src/org/apache/cloudstack/utils/template/TemplateUtils.java
+++ b/utils/src/org/apache/cloudstack/utils/template/TemplateUtils.java
@@ -28,58 +28,58 @@ public class TemplateUtils {
 
     // given a path, returns empty if path is supported image, and the file 
type if unsupported
     // this is meant to catch things like accidental upload of ASCII text 
.vmdk descriptor
-    public static String checkTemplateFormat(String path, String url) {
+    public static String checkTemplateFormat(String path, String uripath) {
         // note 'path' was generated by us so it should be safe on the 
cmdline, be wary of 'url'
         String command = "file ";
-        if (isCompressedExtension(url)) {
+        if (isCompressedExtension(uripath)) {
             command = "file -z ";
         }
         String output = Script.runSimpleBashScript(command + path + " | cut 
-d: -f2", 60000);
 
         // vmdk
-        if ((output.contains("VMware") || output.contains("data")) && 
isCorrectExtension(url, "vmdk")) {
+        if ((output.contains("VMware") || output.contains("data")) && 
isCorrectExtension(uripath, "vmdk")) {
             s_logger.debug("File at path " + path + " looks like a vmware 
image :" + output);
             return "";
         }
         // raw
-        if ((output.contains("x86 boot") || output.contains("data")) && 
(isCorrectExtension(url, "raw") || isCorrectExtension(url, "img"))) {
+        if ((output.contains("x86 boot") || output.contains("data")) && 
(isCorrectExtension(uripath, "raw") || isCorrectExtension(uripath, "img"))) {
             s_logger.debug("File at path " + path + " looks like a raw image 
:" + output);
             return "";
         }
         // qcow2
-        if (output.contains("QEMU QCOW") && isCorrectExtension(url, "qcow2")) {
+        if (output.contains("QEMU QCOW") && isCorrectExtension(uripath, 
"qcow2")) {
             s_logger.debug("File at path " + path + " looks like QCOW2 : " + 
output);
             return "";
         }
         // vhd
-        if (output.contains("Microsoft Disk Image") && 
(isCorrectExtension(url, "vhd") || isCorrectExtension(url, "vhdx"))) {
+        if (output.contains("Microsoft Disk Image") && 
(isCorrectExtension(uripath, "vhd") || isCorrectExtension(uripath, "vhdx"))) {
             s_logger.debug("File at path " + path + " looks like vhd : " + 
output);
             return "";
         }
         // ova
-        if (output.contains("POSIX tar") && isCorrectExtension(url, "ova")) {
+        if (output.contains("POSIX tar") && isCorrectExtension(uripath, 
"ova")) {
             s_logger.debug("File at path " + path + " looks like ova : " + 
output);
             return "";
         }
 
         //lxc
-        if (output.contains("POSIX tar") && isCorrectExtension(url, "tar")) {
+        if (output.contains("POSIX tar") && isCorrectExtension(uripath, 
"tar")) {
             s_logger.debug("File at path " + path + " looks like just tar : " 
+ output);
             return "";
         }
 
-        if (output.contains("ISO 9660") && isCorrectExtension(url, "iso")) {
+        if (output.contains("ISO 9660") && isCorrectExtension(uripath, "iso")) 
{
             s_logger.debug("File at path " + path + " looks like an iso : " + 
output);
             return "";
         }
         return output;
     }
 
-    public static boolean isCorrectExtension(String url, String ext) {
-        if (url.toLowerCase().endsWith(ext)
-            || url.toLowerCase().endsWith(ext + ".gz")
-            || url.toLowerCase().endsWith(ext + ".bz2")
-            || url.toLowerCase().endsWith(ext + ".zip")) {
+    public static boolean isCorrectExtension(String path, String ext) {
+        if (path.toLowerCase().endsWith(ext)
+            || path.toLowerCase().endsWith(ext + ".gz")
+            || path.toLowerCase().endsWith(ext + ".bz2")
+            || path.toLowerCase().endsWith(ext + ".zip")) {
             return true;
         }
         return false;

Reply via email to