This is an automated email from the ASF dual-hosted git repository.
dahn pushed a commit to branch 4.11
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/4.11 by this push:
new 123c20d CLOUDSTACK-10146 checksum in java instead of script (#2405)
123c20d is described below
commit 123c20dc57d809f89bc1b012303e71b6892c8729
Author: dahn <[email protected]>
AuthorDate: Wed Feb 7 10:48:51 2018 +0100
CLOUDSTACK-10146 checksum in java instead of script (#2405)
* CLOUDSTACK-10146 checksum in java instead of script
* root cause passing
---
.../download/DirectTemplateDownloaderImpl.java | 39 ++++++----------------
1 file changed, 11 insertions(+), 28 deletions(-)
diff --git
a/agent/src/com/cloud/agent/direct/download/DirectTemplateDownloaderImpl.java
b/agent/src/com/cloud/agent/direct/download/DirectTemplateDownloaderImpl.java
index 3b6bc9a..e120d84 100644
---
a/agent/src/com/cloud/agent/direct/download/DirectTemplateDownloaderImpl.java
+++
b/agent/src/com/cloud/agent/direct/download/DirectTemplateDownloaderImpl.java
@@ -20,10 +20,13 @@ package com.cloud.agent.direct.download;
import com.cloud.utils.exception.CloudRuntimeException;
import com.cloud.utils.script.Script;
-import org.apache.cloudstack.utils.security.ChecksumValue;
+import org.apache.cloudstack.utils.security.DigestHelper;
import org.apache.commons.lang.StringUtils;
import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.security.NoSuchAlgorithmException;
import java.util.UUID;
public abstract class DirectTemplateDownloaderImpl implements
DirectTemplateDownloader {
@@ -149,36 +152,16 @@ public abstract class DirectTemplateDownloaderImpl
implements DirectTemplateDown
return new DirectTemplateInformation(installPath, size, checksum);
}
- /**
- * Return checksum command from algorithm
- */
- private String getChecksumCommandFromAlgorithm(String algorithm) {
- if (algorithm.equalsIgnoreCase("MD5")) {
- return "md5sum";
- } else if (algorithm.equalsIgnoreCase("SHA-1")) {
- return "sha1sum";
- } else if (algorithm.equalsIgnoreCase("SHA-224")) {
- return "sha224sum";
- } else if (algorithm.equalsIgnoreCase("SHA-256")) {
- return "sha256sum";
- } else if (algorithm.equalsIgnoreCase("SHA-384")) {
- return "sha384sum";
- } else if (algorithm.equalsIgnoreCase("SHA-512")) {
- return "sha512sum";
- } else {
- throw new CloudRuntimeException("Unknown checksum algorithm: " +
algorithm);
- }
- }
-
@Override
public boolean validateChecksum() {
if (StringUtils.isNotBlank(checksum)) {
- ChecksumValue providedChecksum = new ChecksumValue(checksum);
- String algorithm = providedChecksum.getAlgorithm();
- String checksumCommand = "echo '%s %s' | %s -c --quiet";
- String cmd = String.format(checksumCommand,
providedChecksum.getChecksum(), downloadedFilePath,
getChecksumCommandFromAlgorithm(algorithm));
- int result = Script.runSimpleBashScriptForExitValue(cmd);
- return result == 0;
+ try {
+ return DigestHelper.check(checksum, new
FileInputStream(downloadedFilePath));
+ } catch (IOException e) {
+ throw new CloudRuntimeException("could not check sum for file:
" + downloadedFilePath,e);
+ } catch (NoSuchAlgorithmException e) {
+ throw new CloudRuntimeException("Unknown checksum algorithm: "
+ checksum, e);
+ }
}
return true;
}
--
To stop receiving notification emails like this one, please contact
[email protected].