Fixed root cert link when using multi-domains, #2883.

Ylian Saint-Hilaire committed Jul 10, 2021 at 13:22 UTC 1b9f398a4f666bd02c74e8b3135444a63be4fd28
1 file changed +10 -5
webserver.js
+10 -5
@@ -2874,7 +2874,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
2874 getRenderPage((domain.sitestyle == 2) ? 'login2' : 'login', req, domain),
2875 getRenderArgs({
2876 loginmode: loginmode,
2877 - rootCertLink: getRootCertLink(),
2877 + rootCertLink: getRootCertLink(domain),
2878 newAccount: newAccountsAllowed,
2879 newAccountPass: (((domain.newaccountspass == null) || (domain.newaccountspass == '')) ? 0 : 1),
2880 serverDnsName: obj.getWebServerName(domain),
@@ -2960,9 +2960,14 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
2960 }
2961
2962 // Get the link to the root certificate if needed
2963 - function getRootCertLink() {
2963 + function getRootCertLink(domain) {
2964 // Check if the HTTPS certificate is issued from MeshCentralRoot, if so, add download link to root certificate.
2965 - if ((obj.args.tlsoffload == null) && (obj.parent.config.letsencrypt == null) && (obj.tlsSniCredentials == null) && (obj.certificates.WebIssuer.indexOf('MeshCentralRoot-') == 0) && (obj.certificates.CommonName.indexOf('.') != -1)) { return '<a href=/MeshServerRootCert.cer title="Download the root certificate for this server">Root Certificate</a>'; }
2965 + if (obj.isTrustedCert(domain) == false) {
2966 + // Get the domain suffix
2967 + var xdomain = (domain.dns == null) ? domain.id : '';
2968 + if (xdomain != '') xdomain += '/';
2969 + return '<a href=/' + xdomain + 'MeshServerRootCert.cer title="Download the root certificate for this server">Root Certificate</a>';
2970 + }
2971 return '';
2972 }
2973
@@ -3193,10 +3198,10 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
3198 setContentDispositionHeader(res, 'application/octet-stream', filename, null, 'file.bin');
3199 try { res.sendFile(obj.path.resolve(__dirname, path)); } catch (e) { res.sendStatus(404); }
3200 } else {
3196 - render(req, res, getRenderPage((domain.sitestyle == 2) ? 'download2' : 'download', req, domain), getRenderArgs({ rootCertLink: getRootCertLink(), messageid: 1, fileurl: req.path + '?download=1', filename: filename, filesize: stat.size }, req, domain));
3201 + render(req, res, getRenderPage((domain.sitestyle == 2) ? 'download2' : 'download', req, domain), getRenderArgs({ rootCertLink: getRootCertLink(domain), messageid: 1, fileurl: req.path + '?download=1', filename: filename, filesize: stat.size }, req, domain));
3202 }
3203 } else {
3199 - render(req, res, getRenderPage((domain.sitestyle == 2) ? 'download2' : 'download', req, domain), getRenderArgs({ rootCertLink: getRootCertLink(), messageid: 2 }, req, domain));
3204 + render(req, res, getRenderPage((domain.sitestyle == 2) ? 'download2' : 'download', req, domain), getRenderArgs({ rootCertLink: getRootCertLink(domain), messageid: 2 }, req, domain));
3205 }
3206 }
3207