Skip to content

Commit f88d606

Browse files
resmoyadvr
authored andcommitted
consoleproxy: Fixes #2733 invalid consoleproxy url after upgrade (#2734)
Ensures we have a valid console proxy domain for protocol http even a * setting is used. See #2733
1 parent 4c66908 commit f88d606

1 file changed

Lines changed: 25 additions & 23 deletions

File tree

core/src/com/cloud/info/ConsoleProxyInfo.java

Lines changed: 25 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -35,38 +35,40 @@ public ConsoleProxyInfo(int proxyUrlPort) {
3535

3636
public ConsoleProxyInfo(boolean sslEnabled, String proxyIpAddress, int port, int proxyUrlPort, String consoleProxyUrlDomain) {
3737
this.sslEnabled = sslEnabled;
38+
this.proxyPort = port;
39+
this.proxyUrlPort = proxyUrlPort;
40+
this.proxyAddress = this.formatProxyAddress(consoleProxyUrlDomain, proxyIpAddress);
3841

3942
if (sslEnabled) {
40-
StringBuffer sb = new StringBuffer();
41-
if (consoleProxyUrlDomain.startsWith("*")) {
42-
sb.append(proxyIpAddress);
43-
for (int i = 0; i < proxyIpAddress.length(); i++)
44-
if (sb.charAt(i) == '.')
45-
sb.setCharAt(i, '-');
46-
sb.append(consoleProxyUrlDomain.substring(1));//skip the *
47-
} else {
48-
//LB address
49-
sb.append(consoleProxyUrlDomain);
50-
}
51-
proxyAddress = sb.toString();
52-
proxyPort = port;
53-
this.proxyUrlPort = proxyUrlPort;
54-
5543
proxyImageUrl = "https://" + proxyAddress;
56-
if (proxyUrlPort != 443)
44+
if (proxyUrlPort != 443) {
5745
proxyImageUrl += ":" + this.proxyUrlPort;
58-
} else {
59-
proxyAddress = proxyIpAddress;
60-
if (StringUtils.isNotBlank(consoleProxyUrlDomain)) {
61-
proxyAddress = consoleProxyUrlDomain;
6246
}
63-
proxyPort = port;
64-
this.proxyUrlPort = proxyUrlPort;
6547

48+
} else {
6649
proxyImageUrl = "http://" + proxyAddress;
67-
if (proxyUrlPort != 80)
50+
if (proxyUrlPort != 80) {
6851
proxyImageUrl += ":" + proxyUrlPort;
52+
}
53+
}
54+
}
55+
56+
private String formatProxyAddress(String consoleProxyUrlDomain, String proxyIpAddress) {
57+
StringBuffer sb = new StringBuffer();
58+
// Domain in format *.example.com, proxy IP is 1.2.3.4 --> 1-2-3-4.example.com
59+
if (consoleProxyUrlDomain.startsWith("*")) {
60+
sb.append(proxyIpAddress.replaceAll("\\.", "-"));
61+
sb.append(consoleProxyUrlDomain.substring(1)); // skip the *
62+
63+
// Otherwise we assume a valid domain if config not blank
64+
} else if (StringUtils.isNotBlank(consoleProxyUrlDomain)) {
65+
sb.append(consoleProxyUrlDomain);
66+
67+
// Blank config, we use the proxy IP
68+
} else {
69+
sb.append(proxyIpAddress);
6970
}
71+
return sb.toString();
7072
}
7173

7274
public String getProxyAddress() {

0 commit comments

Comments
 (0)