mirror of
https://github.com/Ylianst/MeshCentral.git
synced 2025-10-29 15:25:01 -04:00
allow system variables in footer, loginfooter, welcometext, title2 #6634
Signed-off-by: si458 <simonsmith5521@gmail.com>
This commit is contained in:
parent
5fcffcd608
commit
89238303cb
16
common.js
16
common.js
@ -419,4 +419,20 @@ module.exports.uniqueArray = function (a) {
|
||||
}
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
// Replace placeholders in a string with values from an object or a function
|
||||
module.exports.replacePlaceholders = function (template, values) {
|
||||
return template.replace(/\{(\w+)\}/g, (match, key) => {
|
||||
console.log('match', match, 'key', key, 'values', values);
|
||||
if (typeof values === 'function') {
|
||||
return values(key);
|
||||
}
|
||||
else if (values && typeof values === 'object') {
|
||||
return values[key] !== undefined ? values[key] : match;
|
||||
}
|
||||
else {
|
||||
return values !== undefined ? values : match;
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -162,7 +162,19 @@ module.exports.CreateMeshScanner = function (parent) {
|
||||
try {
|
||||
if ((typeof obj.parent.config.domains[''].title == 'string') && (obj.parent.config.domains[''].title.length > 0)) {
|
||||
name = obj.parent.config.domains[''].title; info = '';
|
||||
try { if ((typeof obj.parent.config.domains[''].title2 == 'string') && (obj.parent.config.domains[''].title2.length > 0)) { info = obj.parent.config.domains[''].title2; } } catch (ex) { }
|
||||
try {
|
||||
if ((typeof obj.parent.config.domains[''].title2 == 'string') && (obj.parent.config.domains[''].title2.length > 0)) {
|
||||
info = obj.common.replacePlaceholders(obj.parent.config.domains[''].title2, {
|
||||
'serverversion': obj.parent.currentVer,
|
||||
'servername': obj.getWebServerName(domain, req),
|
||||
'agentsessions': Object.keys(parent.webserver.wsagents).length,
|
||||
'connectedusers': Object.keys(parent.webserver.wssessions).length,
|
||||
'userssessions': Object.keys(parent.webserver.wssessions2).length,
|
||||
'relaysessions': parent.webserver.relaySessionCount,
|
||||
'relaycount': Object.keys(parent.webserver.wsrelays).length
|
||||
});
|
||||
}
|
||||
} catch (ex) { }
|
||||
}
|
||||
} catch (ex) { }
|
||||
try {
|
||||
|
||||
40
webserver.js
40
webserver.js
@ -3217,7 +3217,15 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF
|
||||
passRequirements: passRequirements,
|
||||
customui: customui,
|
||||
webcerthash: Buffer.from(obj.webCertificateFullHashs[domain.id], 'binary').toString('base64').replace(/\+/g, '@').replace(/\//g, '$'),
|
||||
footer: (domain.footer == null) ? '' : domain.footer,
|
||||
footer: (domain.footer == null) ? '' : obj.common.replacePlaceholders(domain.footer, {
|
||||
'serverversion': obj.parent.currentVer,
|
||||
'servername': obj.getWebServerName(domain, req),
|
||||
'agentsessions': Object.keys(parent.webserver.wsagents).length,
|
||||
'connectedusers': Object.keys(parent.webserver.wssessions).length,
|
||||
'userssessions': Object.keys(parent.webserver.wssessions2).length,
|
||||
'relaysessions': parent.webserver.relaySessionCount,
|
||||
'relaycount': Object.keys(parent.webserver.wsrelays).length
|
||||
}),
|
||||
webstate: encodeURIComponent(webstate).replace(/'/g, '%27'),
|
||||
amtscanoptions: amtscanoptions,
|
||||
pluginHandler: (parent.pluginHandler == null) ? 'null' : parent.pluginHandler.prepExports(),
|
||||
@ -3462,12 +3470,29 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF
|
||||
sessiontime: (args.sessiontime) ? args.sessiontime : 60, // Session time in minutes, 60 minutes is the default
|
||||
passRequirements: passRequirements,
|
||||
customui: customui,
|
||||
footer: (domain.loginfooter == null) ? '' : domain.loginfooter,
|
||||
footer: (domain.loginfooter == null) ? '' : obj.common.replacePlaceholders(domain.loginfooter, {
|
||||
'serverversion': obj.parent.currentVer,
|
||||
'servername': obj.getWebServerName(domain, req),
|
||||
'agentsessions': Object.keys(parent.webserver.wsagents).length,
|
||||
'connectedusers': Object.keys(parent.webserver.wssessions).length,
|
||||
'userssessions': Object.keys(parent.webserver.wssessions2).length,
|
||||
'relaysessions': parent.webserver.relaySessionCount,
|
||||
'relaycount': Object.keys(parent.webserver.wsrelays).length
|
||||
}),
|
||||
hkey: encodeURIComponent(hardwareKeyChallenge).replace(/'/g, '%27'),
|
||||
messageid: msgid,
|
||||
flashErrors: JSON.stringify(flashErrors),
|
||||
passhint: passhint,
|
||||
welcometext: domain.welcometext ? encodeURIComponent(domain.welcometext).split('\'').join('\\\'') : null,
|
||||
|
||||
welcometext: domain.welcometext ? encodeURIComponent(obj.common.replacePlaceholders(domain.welcometext, {
|
||||
'serverversion': obj.parent.currentVer,
|
||||
'servername': obj.getWebServerName(domain, req),
|
||||
'agentsessions': Object.keys(parent.webserver.wsagents).length,
|
||||
'connectedusers': Object.keys(parent.webserver.wssessions).length,
|
||||
'userssessions': Object.keys(parent.webserver.wssessions2).length,
|
||||
'relaysessions': parent.webserver.relaySessionCount,
|
||||
'relaycount': Object.keys(parent.webserver.wsrelays).length
|
||||
})).split('\'').join('\\\'') : null,
|
||||
welcomePictureFullScreen: ((typeof domain.welcomepicturefullscreen == 'boolean') ? domain.welcomepicturefullscreen : false),
|
||||
hwstate: hwstate,
|
||||
otpemail: otpemail,
|
||||
@ -9360,6 +9385,15 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF
|
||||
xargs.title1 = domain.title1 ? domain.title1 : '';
|
||||
xargs.title2 = (domain.title1 && domain.title2) ? domain.title2 : '';
|
||||
}
|
||||
xargs.title2 = obj.common.replacePlaceholders(xargs.title2, {
|
||||
'serverversion': obj.parent.currentVer,
|
||||
'servername': obj.getWebServerName(domain, req),
|
||||
'agentsessions': Object.keys(parent.webserver.wsagents).length,
|
||||
'connectedusers': Object.keys(parent.webserver.wssessions).length,
|
||||
'userssessions': Object.keys(parent.webserver.wssessions2).length,
|
||||
'relaysessions': parent.webserver.relaySessionCount,
|
||||
'relaycount': Object.keys(parent.webserver.wsrelays).length
|
||||
});
|
||||
xargs.extitle = encodeURIComponent(xargs.title).split('\'').join('\\\'');
|
||||
xargs.domainurl = domain.url;
|
||||
xargs.autocomplete = (domain.autocomplete === false) ? 'autocomplete=off x' : 'autocomplete'; // This option allows autocomplete to be turned off on the login page.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user