Skip to content

Commit 025d214

Browse files
committed
Add enum LoadBalancerConfig.SSLConfiguration
1 parent ab3a6a7 commit 025d214

File tree

4 files changed

+50
-4
lines changed

4 files changed

+50
-4
lines changed

api/src/main/java/com/cloud/network/rules/LoadBalancerConfig.java

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,47 @@
1616
// under the License.
1717
package com.cloud.network.rules;
1818

19+
import java.util.ArrayList;
1920
import java.util.Date;
21+
import java.util.List;
2022

2123
import org.apache.cloudstack.api.Identity;
2224
import org.apache.cloudstack.api.InternalIdentity;
2325

2426
public interface LoadBalancerConfig extends Identity, InternalIdentity {
2527

28+
public enum SSLConfiguration {
29+
NONE("none"), OLD("old"), INTERMEDIATE("intermediate");
30+
31+
String _config;
32+
33+
SSLConfiguration(String config) {
34+
_config = config;
35+
}
36+
37+
@Override
38+
public String toString() {
39+
return _config;
40+
}
41+
42+
public static boolean validate(String value) {
43+
for (SSLConfiguration config : SSLConfiguration.values()) {
44+
if (config.toString().equals(value)) {
45+
return true;
46+
}
47+
}
48+
return false;
49+
}
50+
51+
public static List<String> getValues() {
52+
ArrayList values = new ArrayList<String>();
53+
for (SSLConfiguration config : SSLConfiguration.values()) {
54+
values.add(config.toString());
55+
}
56+
return values;
57+
}
58+
}
59+
2660
public enum Scope {
2761
Network, Vpc, LoadBalancerRule;
2862
}

api/src/main/java/org/apache/cloudstack/network/lb/LoadBalancerConfigKey.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import java.util.LinkedHashMap;
2121
import java.util.Map;
2222

23+
import com.cloud.network.rules.LoadBalancerConfig.SSLConfiguration;
2324
import com.cloud.network.rules.LoadBalancerConfig.Scope;
2425
import com.cloud.utils.Pair;
2526

@@ -201,8 +202,8 @@ public static Pair<LoadBalancerConfigKey, String> validate(Scope scope, String k
201202
}
202203

203204
if (LbSslConfiguration.key().equals(key)) {
204-
if (! "none".equalsIgnoreCase(value) && ! "old".equalsIgnoreCase(value) && ! "intermediate".equalsIgnoreCase(value)) {
205-
return new Pair<>(null, "Please enter either 'none', 'old' or 'intermediate' for parameter " + key);
205+
if (value == null || ! SSLConfiguration.validate(value.toLowerCase())) {
206+
return new Pair<>(null, "Please enter valid value in " + String.join(",", SSLConfiguration.getValues()) + " for parameter " + key);
206207
}
207208
}
208209

core/src/main/java/com/cloud/network/HAProxyConfigurator.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import com.cloud.agent.api.to.LoadBalancerTO.StickinessPolicyTO;
3939
import com.cloud.agent.api.to.PortForwardingRuleTO;
4040
import com.cloud.agent.resource.virtualnetwork.model.LoadBalancerRule.SslCertEntry;
41+
import com.cloud.network.rules.LoadBalancerConfig.SSLConfiguration;
4142
import com.cloud.network.lb.LoadBalancingRule.LbSslCert;
4243
import com.cloud.network.rules.LbStickinessMethod.StickinessMethodType;
4344
import com.cloud.utils.Pair;
@@ -488,9 +489,9 @@ private String getCustomizedSslConfigs(HashMap<String, String> lbConfigsMap, fin
488489
if (lbSslConfiguration == null) {
489490
lbSslConfiguration = lbCmd.lbSslConfiguration;
490491
}
491-
if ("old".equalsIgnoreCase(lbSslConfiguration)) {
492+
if (SSLConfiguration.OLD.toString().equalsIgnoreCase(lbSslConfiguration)) {
492493
return sslConfigurationOld;
493-
} else if ("intermediate".equalsIgnoreCase(lbSslConfiguration)) {
494+
} else if (SSLConfiguration.INTERMEDIATE.toString().equalsIgnoreCase(lbSslConfiguration)) {
494495
return sslConfigurationIntermediate;
495496
}
496497
return "";

server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,8 @@
181181
import com.cloud.network.dao.PhysicalNetworkTrafficTypeDao;
182182
import com.cloud.network.dao.PhysicalNetworkTrafficTypeVO;
183183
import com.cloud.network.dao.PhysicalNetworkVO;
184+
import com.cloud.network.lb.LoadBalancerConfigManager;
185+
import com.cloud.network.rules.LoadBalancerConfig.SSLConfiguration;
184186
import com.cloud.network.rules.LoadBalancerContainer.Scheme;
185187
import com.cloud.network.vpc.VpcManager;
186188
import com.cloud.offering.DiskOffering;
@@ -862,6 +864,14 @@ private String validateConfigurationValue(final String name, String value, final
862864
return errMsg;
863865
}
864866

867+
if (LoadBalancerConfigManager.DefaultLbSSLConfiguration.key().equalsIgnoreCase(name)) {
868+
if (org.apache.commons.lang3.StringUtils.isBlank(value) || ! SSLConfiguration.validate(value.toLowerCase())) {
869+
final String msg = "Please enter valid value in " + String.join(",", SSLConfiguration.getValues());
870+
s_logger.error(msg);
871+
throw new InvalidParameterValueException(msg);
872+
}
873+
}
874+
865875
if (value == null) {
866876
if (type.equals(Boolean.class)) {
867877
return "Please enter either 'true' or 'false'.";

0 commit comments

Comments
 (0)