From 71929fdeddd6f07936a2c3870c3a19f0ea6b66d8 Mon Sep 17 00:00:00 2001 From: Boris Schrijver Date: Tue, 15 Sep 2015 10:43:41 +0200 Subject: [PATCH] Replaced all occurences of Charset.forName(UTF-8) with StringUtils.getPreferredCharset(). --- .../discoverer/HypervServerDiscoverer.java | 8 +- .../resource/HypervDirectConnectResource.java | 15 ++-- .../network/bigswitch/BigSwitchBcfApi.java | 4 +- .../cloud/network/brocade/BrocadeVcsApi.java | 24 ++---- .../network/manager/NuageVspManagerImpl.java | 5 +- .../org/apache/cloudstack/saml/SAMLUtils.java | 82 ++++++++++--------- .../cloud/utils/ConstantTimeComparator.java | 2 +- .../cloud/utils/storage/QCOW2UtilsTest.java | 5 +- 8 files changed, 67 insertions(+), 78 deletions(-) diff --git a/plugins/hypervisors/hyperv/src/com/cloud/hypervisor/hyperv/discoverer/HypervServerDiscoverer.java b/plugins/hypervisors/hyperv/src/com/cloud/hypervisor/hyperv/discoverer/HypervServerDiscoverer.java index c9281240913..7fb757d72b1 100644 --- a/plugins/hypervisors/hyperv/src/com/cloud/hypervisor/hyperv/discoverer/HypervServerDiscoverer.java +++ b/plugins/hypervisors/hyperv/src/com/cloud/hypervisor/hyperv/discoverer/HypervServerDiscoverer.java @@ -19,7 +19,6 @@ package com.cloud.hypervisor.hyperv.discoverer; import java.net.InetAddress; import java.net.URI; import java.net.UnknownHostException; -import java.nio.charset.Charset; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -43,8 +42,8 @@ import com.cloud.agent.api.SetupAnswer; import com.cloud.agent.api.SetupCommand; import com.cloud.agent.api.StartupCommand; import com.cloud.agent.api.StartupRoutingCommand; -import com.cloud.configuration.Config; import com.cloud.alert.AlertManager; +import com.cloud.configuration.Config; import com.cloud.dc.ClusterVO; import com.cloud.dc.DataCenterVO; import com.cloud.dc.HostPodVO; @@ -66,6 +65,7 @@ import com.cloud.resource.ResourceStateAdapter; import com.cloud.resource.ServerResource; import com.cloud.resource.UnableDeleteHostException; import com.cloud.storage.StorageLayer; +import com.cloud.utils.StringUtils; /** * Methods to discover and managem a Hyper-V agent. Prepares a @@ -256,7 +256,7 @@ public class HypervServerDiscoverer extends DiscovererBase implements Discoverer // pool in the database // This GUID may change. if (cluster.getGuid() == null) { - cluster.setGuid(UUID.nameUUIDFromBytes(String.valueOf(clusterId).getBytes(Charset.forName("UTF-8"))).toString()); + cluster.setGuid(UUID.nameUUIDFromBytes(String.valueOf(clusterId).getBytes(StringUtils.getPreferredCharset())).toString()); _clusterDao.update(clusterId, cluster); } @@ -322,7 +322,7 @@ public class HypervServerDiscoverer extends DiscovererBase implements Discoverer * @return GUID in form of a string. */ public static String calcServerResourceGuid(final String uuidSeed) { - String guid = UUID.nameUUIDFromBytes(uuidSeed.getBytes(Charset.forName("UTF-8"))).toString(); + String guid = UUID.nameUUIDFromBytes(uuidSeed.getBytes(StringUtils.getPreferredCharset())).toString(); return guid; } diff --git a/plugins/hypervisors/hyperv/src/com/cloud/hypervisor/hyperv/resource/HypervDirectConnectResource.java b/plugins/hypervisors/hyperv/src/com/cloud/hypervisor/hyperv/resource/HypervDirectConnectResource.java index 17c5708a322..13586b3840a 100644 --- a/plugins/hypervisors/hyperv/src/com/cloud/hypervisor/hyperv/resource/HypervDirectConnectResource.java +++ b/plugins/hypervisors/hyperv/src/com/cloud/hypervisor/hyperv/resource/HypervDirectConnectResource.java @@ -24,7 +24,6 @@ import java.net.URI; import java.net.URISyntaxException; import java.net.URL; import java.nio.channels.SocketChannel; -import java.nio.charset.Charset; import java.rmi.RemoteException; import java.security.KeyManagementException; import java.security.KeyStoreException; @@ -43,6 +42,7 @@ import javax.ejb.Local; import javax.inject.Inject; import javax.naming.ConfigurationException; +import org.apache.cloudstack.storage.command.CopyCommand; import org.apache.commons.codec.binary.Base64; import org.apache.commons.lang.StringEscapeUtils; import org.apache.http.HttpResponse; @@ -62,11 +62,6 @@ import org.apache.http.impl.conn.BasicClientConnectionManager; import org.apache.http.util.EntityUtils; import org.apache.log4j.Logger; -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; - -import org.apache.cloudstack.storage.command.CopyCommand; - import com.cloud.agent.api.Answer; import com.cloud.agent.api.CheckRouterAnswer; import com.cloud.agent.api.CheckRouterCommand; @@ -156,6 +151,8 @@ import com.cloud.utils.ssh.SshHelper; import com.cloud.vm.VirtualMachine; import com.cloud.vm.VirtualMachine.PowerState; import com.cloud.vm.VirtualMachineName; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; /** @@ -653,7 +650,7 @@ public class HypervDirectConnectResource extends ServerResourceBase implements S public ExecutionResult createFileInVR(String routerIp, String filePath, String fileName, String content) { File keyFile = getSystemVMKeyFile(); try { - SshHelper.scpTo(routerIp, 3922, "root", keyFile, null, filePath, content.getBytes(Charset.forName("UTF-8")), fileName, null); + SshHelper.scpTo(routerIp, 3922, "root", keyFile, null, filePath, content.getBytes(StringUtils.getPreferredCharset()), fileName, null); } catch (Exception e) { s_logger.warn("Fail to create file " + filePath + fileName + " in VR " + routerIp, e); return new ExecutionResult(false, e.getMessage()); @@ -1318,7 +1315,7 @@ public class HypervDirectConnectResource extends ServerResourceBase implements S } try { - SshHelper.scpTo(controlIp, DEFAULT_DOMR_SSHPORT, "root", keyFile, null, "/tmp/", tmpCfgFileContents.toString().getBytes(Charset.forName("UTF-8")), routerIp.replace('.', '_') + + SshHelper.scpTo(controlIp, DEFAULT_DOMR_SSHPORT, "root", keyFile, null, "/tmp/", tmpCfgFileContents.toString().getBytes(StringUtils.getPreferredCharset()), routerIp.replace('.', '_') + ".cfg", null); try { @@ -1515,7 +1512,7 @@ public class HypervDirectConnectResource extends ServerResourceBase implements S String json = new Gson().toJson(data); s_logger.debug("VM data JSON IS:" + json); - json = Base64.encodeBase64String(json.getBytes(Charset.forName("UTF-8"))); + json = Base64.encodeBase64String(json.getBytes(StringUtils.getPreferredCharset())); String args = "-d " + json; diff --git a/plugins/network-elements/bigswitch/src/com/cloud/network/bigswitch/BigSwitchBcfApi.java b/plugins/network-elements/bigswitch/src/com/cloud/network/bigswitch/BigSwitchBcfApi.java index 16cb3f70fc7..82571e39847 100644 --- a/plugins/network-elements/bigswitch/src/com/cloud/network/bigswitch/BigSwitchBcfApi.java +++ b/plugins/network-elements/bigswitch/src/com/cloud/network/bigswitch/BigSwitchBcfApi.java @@ -24,7 +24,6 @@ import java.io.UnsupportedEncodingException; import java.lang.reflect.Type; import java.net.MalformedURLException; import java.net.URL; -import java.nio.charset.Charset; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -49,6 +48,7 @@ import org.apache.commons.httpclient.protocol.Protocol; import org.apache.commons.httpclient.protocol.ProtocolSocketFactory; import org.apache.log4j.Logger; +import com.cloud.utils.StringUtils; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; @@ -301,7 +301,7 @@ public class BigSwitchBcfApi { } String authString = username + ":" + password; - String encodedAuthString = "Basic " + Base64.encodeBase64String(authString.getBytes(Charset.forName("UTF-8"))); + String encodedAuthString = "Basic " + Base64.encodeBase64String(authString.getBytes(StringUtils.getPreferredCharset())); m.setRequestHeader("Authorization", encodedAuthString); } diff --git a/plugins/network-elements/brocade-vcs/src/com/cloud/network/brocade/BrocadeVcsApi.java b/plugins/network-elements/brocade-vcs/src/com/cloud/network/brocade/BrocadeVcsApi.java index dc111fd898a..ec4e85e456a 100644 --- a/plugins/network-elements/brocade-vcs/src/com/cloud/network/brocade/BrocadeVcsApi.java +++ b/plugins/network-elements/brocade-vcs/src/com/cloud/network/brocade/BrocadeVcsApi.java @@ -23,8 +23,8 @@ import java.io.StringReader; import java.io.StringWriter; import java.net.MalformedURLException; import java.net.URL; -import java.nio.charset.Charset; +import javax.persistence.Basic; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; @@ -45,21 +45,9 @@ import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.log4j.Logger; -import com.cloud.network.schema.interfacevlan.InterfaceVlan; -import com.cloud.network.schema.interfacevlan.Interface; -import com.cloud.network.schema.interfacevlan.Vlan; -import com.cloud.network.schema.portprofile.PortProfile; -import com.cloud.network.schema.portprofile.PortProfile.Activate; -import com.cloud.network.schema.portprofile.PortProfile.Static; -import com.cloud.network.schema.portprofile.PortProfileGlobal; -import com.cloud.network.schema.portprofile.VlanProfile; -import com.cloud.network.schema.portprofile.VlanProfile.Switchport; -import com.cloud.network.schema.portprofile.VlanProfile.Switchport.Mode; -import com.cloud.network.schema.portprofile.VlanProfile.Switchport.Trunk; -import com.cloud.network.schema.portprofile.VlanProfile.Switchport.Trunk.Allowed; -import com.cloud.network.schema.portprofile.VlanProfile.SwitchportBasic; -import com.cloud.network.schema.portprofile.VlanProfile.SwitchportBasic.Basic; -import com.cloud.network.schema.showvcs.Output; +import com.cloud.dc.Vlan; +import com.cloud.utils.StringUtils; +import com.cloud.utils.cisco.n1kv.vsm.PortProfile; public class BrocadeVcsApi { private static final Logger s_logger = Logger.getLogger(BrocadeVcsApi.class); @@ -461,7 +449,7 @@ public class BrocadeVcsApi { throw new BrocadeVcsApiException("Failed to retreive status : " + errorMessage); } - try (BufferedReader br = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), Charset.forName("UTF-8")))) { + try (BufferedReader br = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), StringUtils.getPreferredCharset()))) { sb = new StringBuffer(); while (((readLine = br.readLine()) != null)) { @@ -531,7 +519,7 @@ public class BrocadeVcsApi { if ("text/html".equals(response.getEntity().getContentType().getValue())) { - try (BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), Charset.forName("UTF-8")))) { + try (BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), StringUtils.getPreferredCharset()))) { StringBuffer result = new StringBuffer(); String line = ""; diff --git a/plugins/network-elements/nuage-vsp/src/com/cloud/network/manager/NuageVspManagerImpl.java b/plugins/network-elements/nuage-vsp/src/com/cloud/network/manager/NuageVspManagerImpl.java index fed970ede5a..68ca60f128f 100644 --- a/plugins/network-elements/nuage-vsp/src/com/cloud/network/manager/NuageVspManagerImpl.java +++ b/plugins/network-elements/nuage-vsp/src/com/cloud/network/manager/NuageVspManagerImpl.java @@ -19,7 +19,6 @@ package com.cloud.network.manager; -import java.nio.charset.Charset; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -73,6 +72,7 @@ import com.cloud.network.vpc.dao.VpcOfferingServiceMapDao; import com.cloud.resource.ResourceManager; import com.cloud.resource.ResourceState; import com.cloud.resource.ServerResource; +import com.cloud.utils.StringUtils; import com.cloud.utils.component.ManagerBase; import com.cloud.utils.db.Transaction; import com.cloud.utils.db.TransactionCallback; @@ -159,7 +159,7 @@ public class NuageVspManagerImpl extends ManagerBase implements NuageVspManager, params.put("name", "Nuage VSD - " + cmd.getHostName()); params.put("hostname", cmd.getHostName()); params.put("cmsuser", cmd.getUserName()); - String cmsUserPasswordBase64 = org.apache.commons.codec.binary.StringUtils.newStringUtf8(Base64.encodeBase64(cmd.getPassword().getBytes(Charset.forName("UTF-8")))); + String cmsUserPasswordBase64 = org.apache.commons.codec.binary.StringUtils.newStringUtf8(Base64.encodeBase64(cmd.getPassword().getBytes(StringUtils.getPreferredCharset()))); params.put("cmsuserpass", cmsUserPasswordBase64); int port = cmd.getPort(); if (0 == port) { @@ -301,6 +301,7 @@ public class NuageVspManagerImpl extends ManagerBase implements NuageVspManager, if (numOfSyncThreads != null && syncUpIntervalInMinutes != null) { ThreadFactory threadFactory = new ThreadFactory() { + @Override public Thread newThread(Runnable runnable) { Thread thread = new Thread(runnable, "Nuage Vsp sync task"); if (thread.isDaemon()) diff --git a/plugins/user-authenticators/saml2/src/org/apache/cloudstack/saml/SAMLUtils.java b/plugins/user-authenticators/saml2/src/org/apache/cloudstack/saml/SAMLUtils.java index ec6b2c11e5e..42419c82b84 100644 --- a/plugins/user-authenticators/saml2/src/org/apache/cloudstack/saml/SAMLUtils.java +++ b/plugins/user-authenticators/saml2/src/org/apache/cloudstack/saml/SAMLUtils.java @@ -19,7 +19,42 @@ package org.apache.cloudstack.saml; -import com.cloud.utils.HttpUtils; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.StringWriter; +import java.io.UnsupportedEncodingException; +import java.math.BigInteger; +import java.net.URLEncoder; +import java.security.InvalidKeyException; +import java.security.KeyFactory; +import java.security.KeyPair; +import java.security.KeyPairGenerator; +import java.security.NoSuchAlgorithmException; +import java.security.NoSuchProviderException; +import java.security.PrivateKey; +import java.security.PublicKey; +import java.security.SecureRandom; +import java.security.Security; +import java.security.Signature; +import java.security.SignatureException; +import java.security.cert.CertificateEncodingException; +import java.security.cert.X509Certificate; +import java.security.spec.InvalidKeySpecException; +import java.security.spec.PKCS8EncodedKeySpec; +import java.security.spec.X509EncodedKeySpec; +import java.util.List; +import java.util.zip.Deflater; +import java.util.zip.DeflaterOutputStream; + +import javax.security.auth.x500.X500Principal; +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletResponse; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.stream.FactoryConfigurationError; + import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.response.LoginCmdResponse; import org.apache.log4j.Logger; @@ -63,41 +98,8 @@ import org.w3c.dom.Document; import org.w3c.dom.Element; import org.xml.sax.SAXException; -import javax.security.auth.x500.X500Principal; -import javax.servlet.http.Cookie; -import javax.servlet.http.HttpServletResponse; -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.stream.FactoryConfigurationError; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.StringWriter; -import java.io.UnsupportedEncodingException; -import java.math.BigInteger; -import java.net.URLEncoder; -import java.nio.charset.Charset; -import java.security.InvalidKeyException; -import java.security.KeyFactory; -import java.security.KeyPair; -import java.security.KeyPairGenerator; -import java.security.NoSuchAlgorithmException; -import java.security.NoSuchProviderException; -import java.security.PrivateKey; -import java.security.PublicKey; -import java.security.SecureRandom; -import java.security.Security; -import java.security.Signature; -import java.security.SignatureException; -import java.security.cert.CertificateEncodingException; -import java.security.cert.X509Certificate; -import java.security.spec.InvalidKeySpecException; -import java.security.spec.PKCS8EncodedKeySpec; -import java.security.spec.X509EncodedKeySpec; -import java.util.List; -import java.util.zip.Deflater; -import java.util.zip.DeflaterOutputStream; +import com.cloud.utils.HttpUtils; +import com.cloud.utils.StringUtils; public class SAMLUtils { public static final Logger s_logger = Logger.getLogger(SAMLUtils.class); @@ -219,7 +221,7 @@ public class SAMLUtils { Deflater deflater = new Deflater(Deflater.DEFLATED, true); ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); DeflaterOutputStream deflaterOutputStream = new DeflaterOutputStream(byteArrayOutputStream, deflater); - deflaterOutputStream.write(requestMessage.getBytes(Charset.forName("UTF-8"))); + deflaterOutputStream.write(requestMessage.getBytes(StringUtils.getPreferredCharset())); deflaterOutputStream.close(); String encodedRequestMessage = Base64.encodeBytes(byteArrayOutputStream.toByteArray(), Base64.DONT_BREAK_LINES); encodedRequestMessage = URLEncoder.encode(encodedRequestMessage, HttpUtils.UTF_8).trim(); @@ -263,7 +265,7 @@ public class SAMLUtils { String url = urlEncodedString + "&SigAlg=" + URLEncoder.encode(opensamlAlgoIdSignature, HttpUtils.UTF_8); Signature signature = Signature.getInstance(javaSignatureAlgorithmName); signature.initSign(signingKey); - signature.update(url.getBytes(Charset.forName("UTF-8"))); + signature.update(url.getBytes(StringUtils.getPreferredCharset())); String signatureString = Base64.encodeBytes(signature.sign(), Base64.DONT_BREAK_LINES); if (signatureString != null) { return url + "&Signature=" + URLEncoder.encode(signatureString, HttpUtils.UTF_8); @@ -287,7 +289,7 @@ public class SAMLUtils { KeyFactory keyFactory = SAMLUtils.getKeyFactory(); if (keyFactory == null) return null; X509EncodedKeySpec spec = keyFactory.getKeySpec(key, X509EncodedKeySpec.class); - return new String(org.bouncycastle.util.encoders.Base64.encode(spec.getEncoded()), Charset.forName("UTF-8")); + return new String(org.bouncycastle.util.encoders.Base64.encode(spec.getEncoded()), StringUtils.getPreferredCharset()); } catch (InvalidKeySpecException e) { s_logger.error("Unable to create KeyFactory:" + e.getMessage()); } @@ -300,7 +302,7 @@ public class SAMLUtils { if (keyFactory == null) return null; PKCS8EncodedKeySpec spec = keyFactory.getKeySpec(key, PKCS8EncodedKeySpec.class); - return new String(org.bouncycastle.util.encoders.Base64.encode(spec.getEncoded()), Charset.forName("UTF-8")); + return new String(org.bouncycastle.util.encoders.Base64.encode(spec.getEncoded()), StringUtils.getPreferredCharset()); } catch (InvalidKeySpecException e) { s_logger.error("Unable to create KeyFactory:" + e.getMessage()); } diff --git a/utils/src/main/java/com/cloud/utils/ConstantTimeComparator.java b/utils/src/main/java/com/cloud/utils/ConstantTimeComparator.java index baf2bc2738f..f71143aca04 100644 --- a/utils/src/main/java/com/cloud/utils/ConstantTimeComparator.java +++ b/utils/src/main/java/com/cloud/utils/ConstantTimeComparator.java @@ -36,7 +36,7 @@ public class ConstantTimeComparator { } public static boolean compareStrings(String s1, String s2) { - final Charset encoding = Charset.forName("UTF-8"); + final Charset encoding = StringUtils.getPreferredCharset(); return compareBytes(s1.getBytes(encoding), s2.getBytes(encoding)); } } diff --git a/utils/src/test/java/com/cloud/utils/storage/QCOW2UtilsTest.java b/utils/src/test/java/com/cloud/utils/storage/QCOW2UtilsTest.java index 92881a63cda..dfbade25ba2 100644 --- a/utils/src/test/java/com/cloud/utils/storage/QCOW2UtilsTest.java +++ b/utils/src/test/java/com/cloud/utils/storage/QCOW2UtilsTest.java @@ -24,11 +24,12 @@ import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.nio.ByteBuffer; -import java.nio.charset.Charset; import org.junit.Before; import org.junit.Test; +import com.cloud.utils.StringUtils; + public class QCOW2UtilsTest { InputStream inputStream; @@ -67,7 +68,7 @@ public class QCOW2UtilsTest { ByteBuffer byteBuffer = ByteBuffer.allocate(72); // Magic - byteBuffer.put("QFI".getBytes(Charset.forName("UTF-8"))); + byteBuffer.put("QFI".getBytes(StringUtils.getPreferredCharset())); byteBuffer.put((byte)0xfb); // Version