From 86895ec13c11bdf4dc1feab0a3dfa003e02fde12 Mon Sep 17 00:00:00 2001 From: amoghvk Date: Wed, 26 Nov 2014 14:45:50 -0800 Subject: [PATCH] Add validation for domain names passed via global pamaremets --- .../src/com/cloud/configuration/Config.java | 21 ++++++++++--------- .../ConfigurationManagerImpl.java | 9 ++++++++ 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/server/src/com/cloud/configuration/Config.java b/server/src/com/cloud/configuration/Config.java index 0ef0e252cbe..a1dd882cd66 100644 --- a/server/src/com/cloud/configuration/Config.java +++ b/server/src/com/cloud/configuration/Config.java @@ -16,6 +16,15 @@ // under the License. package com.cloud.configuration; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.StringTokenizer; + +import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService; +import org.apache.cloudstack.engine.subsystem.api.storage.StoragePoolAllocator; +import org.apache.cloudstack.framework.config.ConfigKey; + import com.cloud.agent.AgentManager; import com.cloud.consoleproxy.ConsoleProxyManager; import com.cloud.ha.HighAvailabilityManager; @@ -29,14 +38,6 @@ import com.cloud.storage.snapshot.SnapshotManager; import com.cloud.template.TemplateManager; import com.cloud.vm.UserVmManager; import com.cloud.vm.snapshot.VMSnapshotManager; -import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService; -import org.apache.cloudstack.engine.subsystem.api.storage.StoragePoolAllocator; -import org.apache.cloudstack.framework.config.ConfigKey; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.StringTokenizer; public enum Config { @@ -438,7 +439,7 @@ public enum Config { "Console proxy command port that is used to communicate with management server", null), ConsoleProxyRestart("Console Proxy", AgentManager.class, Boolean.class, "consoleproxy.restart", "true", "Console proxy restart flag, defaulted to true", null), - ConsoleProxyUrlDomain("Console Proxy", AgentManager.class, String.class, "consoleproxy.url.domain", "", "Console proxy url domain", null), + ConsoleProxyUrlDomain("Console Proxy", AgentManager.class, String.class, "consoleproxy.url.domain", "", "Console proxy url domain", "domainName"), ConsoleProxyLoadscanInterval( "Console Proxy", AgentManager.class, @@ -774,7 +775,7 @@ public enum Config { "secstorage.ssl.cert.domain", "", "SSL certificate used to encrypt copy traffic between zones", - null), + "domainName"), SecStorageCapacityStandby( "Advanced", AgentManager.class, diff --git a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java index 57b50e672b3..9d25b30efce 100644 --- a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java +++ b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java @@ -327,6 +327,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati private int _maxVolumeSizeInGb = Integer.parseInt(Config.MaxVolumeSize.getDefaultValue()); private long _defaultPageSize = Long.parseLong(Config.DefaultPageSize.getDefaultValue()); + private static final String DOMAIN_NAME_PATTERN = "^((?!-)[A-Za-z0-9-]{1,63}(? configValuesForValidation; private Set weightBasedParametersForValidation; private Set overprovisioningFactorsForValidation; @@ -838,6 +839,14 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati if (!NetUtils.verifyInstanceName(value)) { return "Instance name can not contain hyphen, space or plus sign"; } + } else if (range.equalsIgnoreCase("domainName")) { + String domainName = value; + if (value.startsWith("*")) { + domainName = value.substring(2); //skip the "*." + } + if (!domainName.matches(DOMAIN_NAME_PATTERN)) { + return "Please enter a valid string for domain name, prefixed with '*.' if applicable"; + } } else if (range.equals("routes")) { String[] routes = value.split(","); for (String route : routes) {