From 5cf163d888a01a303fffd24a49fe5b53a615eb02 Mon Sep 17 00:00:00 2001 From: Nicolas Vazquez Date: Sun, 21 Oct 2018 14:03:04 -0300 Subject: [PATCH 1/2] server: Unify templates/ISOs checksum API output (#2911) Unify checksum API output for templates and ISOs: not list the checksum algorithm on: KVM direct downloads On in progress normal template downloads. The algorithm is shown on the listtemplates API, but after it is downloaded it is not shown anymore. --- .../api/query/dao/TemplateJoinDaoImpl.java | 5 +-- .../utils/security/DigestHelper.java | 15 +++++++++ .../utils/security/DigestHelperTest.java | 31 +++++++++++++++++-- 3 files changed, 46 insertions(+), 5 deletions(-) diff --git a/server/src/com/cloud/api/query/dao/TemplateJoinDaoImpl.java b/server/src/com/cloud/api/query/dao/TemplateJoinDaoImpl.java index 4f1984257ed..c0d57d7e4af 100644 --- a/server/src/com/cloud/api/query/dao/TemplateJoinDaoImpl.java +++ b/server/src/com/cloud/api/query/dao/TemplateJoinDaoImpl.java @@ -25,6 +25,7 @@ import java.util.Set; import javax.inject.Inject; +import org.apache.cloudstack.utils.security.DigestHelper; import org.apache.log4j.Logger; import org.springframework.stereotype.Component; @@ -188,7 +189,7 @@ public class TemplateJoinDaoImpl extends GenericDaoBaseWithTagInformation checksum.indexOf("{"); + } + + /** + * Returns the checksum HASH from the checksum value which can have the following formats: {ALG}HASH or HASH + */ + public static String getHashValueFromChecksumValue(String checksum) { + return isAlgorithmPresent(checksum) ? new ChecksumValue(checksum).getChecksum() : checksum; + } } diff --git a/utils/src/test/java/org/apache/cloudstack/utils/security/DigestHelperTest.java b/utils/src/test/java/org/apache/cloudstack/utils/security/DigestHelperTest.java index 4a6e3f7960a..eac234ef2fc 100644 --- a/utils/src/test/java/org/apache/cloudstack/utils/security/DigestHelperTest.java +++ b/utils/src/test/java/org/apache/cloudstack/utils/security/DigestHelperTest.java @@ -26,6 +26,9 @@ import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + public class DigestHelperTest { private final static String INPUT_STRING = "01234567890123456789012345678901234567890123456789012345678901234567890123456789\n"; @@ -46,17 +49,17 @@ public class DigestHelperTest { @Test public void check_SHA256() throws Exception { - Assert.assertTrue(DigestHelper.check(SHA256_CHECKSUM, inputStream)); + assertTrue(DigestHelper.check(SHA256_CHECKSUM, inputStream)); } @Test public void check_SHA1() throws Exception { - Assert.assertTrue(DigestHelper.check(SHA1_CHECKSUM, inputStream)); + assertTrue(DigestHelper.check(SHA1_CHECKSUM, inputStream)); } @Test public void check_MD5() throws Exception { - Assert.assertTrue(DigestHelper.check(MD5_CHECKSUM, inputStream)); + assertTrue(DigestHelper.check(MD5_CHECKSUM, inputStream)); } @Test @@ -127,6 +130,28 @@ public class DigestHelperTest { String checksum = SHA256_CHECKSUM + "XXXXX"; DigestHelper.validateChecksumString(checksum); } + + @Test + public void testIsAlgorithmPresentPositiveCase() { + assertTrue(DigestHelper.isAlgorithmSupported(SHA256_CHECKSUM)); + } + + @Test + public void testIsAlgorithmPresentnegativeCase() { + assertTrue(DigestHelper.isAlgorithmSupported(SHA256_NO_PREFIX_CHECKSUM)); + } + + @Test + public void testGetHashValueFromChecksumValuePrefixPresent() { + String checksum = DigestHelper.getHashValueFromChecksumValue(SHA256_CHECKSUM); + assertEquals(SHA256_NO_PREFIX_CHECKSUM, checksum); + } + + @Test + public void testGetHashValueFromChecksumValueNoPrefixPresent() { + String checksum = DigestHelper.getHashValueFromChecksumValue(SHA256_NO_PREFIX_CHECKSUM); + assertEquals(SHA256_NO_PREFIX_CHECKSUM, checksum); + } } //Generated with love by TestMe :) Please report issues and submit feature requests at: http://weirddev.com/forum#!/testme \ No newline at end of file From 47c9c1cb58dc81a2ed3270edcbf62007ed176ec5 Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Mon, 22 Oct 2018 20:00:51 +0530 Subject: [PATCH 2/2] client: mgmt server listen default to 0.0.0.0 (#2907) This makes the management server listen on all interfaces by default. Signed-off-by: Rohit Yadav --- client/conf/server.properties.in | 3 ++- client/src/org/apache/cloudstack/ServerDaemon.java | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/client/conf/server.properties.in b/client/conf/server.properties.in index f255128555c..6cb56922b48 100644 --- a/client/conf/server.properties.in +++ b/client/conf/server.properties.in @@ -16,7 +16,8 @@ # under the License. # The binding interface for the management server -bind.interface=:: +# The management server will listen on all interfaces by default +# bind.interface=:: # The service context path where URL requests should be served context.path=/client diff --git a/client/src/org/apache/cloudstack/ServerDaemon.java b/client/src/org/apache/cloudstack/ServerDaemon.java index 985b67b755a..6d273834e4b 100644 --- a/client/src/org/apache/cloudstack/ServerDaemon.java +++ b/client/src/org/apache/cloudstack/ServerDaemon.java @@ -85,7 +85,7 @@ public class ServerDaemon implements Daemon { private int sessionTimeout = 30; private boolean httpsEnable = false; private String accessLogFile = "access.log"; - private String bindInterface = ""; + private String bindInterface = null; private String contextPath = "/client"; private String keystoreFile; private String keystorePassword; @@ -117,7 +117,7 @@ public class ServerDaemon implements Daemon { if (properties == null) { return; } - setBindInterface(properties.getProperty(BIND_INTERFACE, "")); + setBindInterface(properties.getProperty(BIND_INTERFACE, null)); setContextPath(properties.getProperty(CONTEXT_PATH, "/client")); setHttpPort(Integer.valueOf(properties.getProperty(HTTP_PORT, "8080"))); setHttpsEnable(Boolean.valueOf(properties.getProperty(HTTPS_ENABLE, "false")));