diff --git a/agents/MeshCmd-signed.exe b/agents/MeshCmd-signed.exe
index 1876491f..7feb6d10 100644
Binary files a/agents/MeshCmd-signed.exe and b/agents/MeshCmd-signed.exe differ
diff --git a/agents/MeshCmd64-signed.exe b/agents/MeshCmd64-signed.exe
index 2bf9266d..6a83d29f 100644
Binary files a/agents/MeshCmd64-signed.exe and b/agents/MeshCmd64-signed.exe differ
diff --git a/agents/MeshService-signed.exe b/agents/MeshService-signed.exe
index bbd8c9f3..65fdad66 100644
Binary files a/agents/MeshService-signed.exe and b/agents/MeshService-signed.exe differ
diff --git a/agents/MeshService.exe b/agents/MeshService.exe
index 6e75ea80..4d8f147a 100644
Binary files a/agents/MeshService.exe and b/agents/MeshService.exe differ
diff --git a/agents/MeshService64-signed.exe b/agents/MeshService64-signed.exe
index 2727d430..1ebc3bc1 100644
Binary files a/agents/MeshService64-signed.exe and b/agents/MeshService64-signed.exe differ
diff --git a/agents/MeshService64.exe b/agents/MeshService64.exe
index 51fe0421..4f87e207 100644
Binary files a/agents/MeshService64.exe and b/agents/MeshService64.exe differ
diff --git a/agents/meshagent_arm b/agents/meshagent_arm
index e2a30137..bf3a61f4 100644
Binary files a/agents/meshagent_arm and b/agents/meshagent_arm differ
diff --git a/agents/meshagent_arm-linaro b/agents/meshagent_arm-linaro
index a1902a7e..5fa463a7 100644
Binary files a/agents/meshagent_arm-linaro and b/agents/meshagent_arm-linaro differ
diff --git a/agents/meshagent_arm64 b/agents/meshagent_arm64
index 00ab0a12..71c5fc45 100644
Binary files a/agents/meshagent_arm64 and b/agents/meshagent_arm64 differ
diff --git a/agents/meshagent_armhf b/agents/meshagent_armhf
index ee695457..eb4ab97e 100644
Binary files a/agents/meshagent_armhf and b/agents/meshagent_armhf differ
diff --git a/agents/meshagent_freebsd_x86-64 b/agents/meshagent_freebsd_x86-64
index 98081609..9d8a12c4 100644
Binary files a/agents/meshagent_freebsd_x86-64 and b/agents/meshagent_freebsd_x86-64 differ
diff --git a/agents/meshagent_mips b/agents/meshagent_mips
index 05334c4f..5b9929c5 100644
Binary files a/agents/meshagent_mips and b/agents/meshagent_mips differ
diff --git a/agents/meshagent_osx-x86-64 b/agents/meshagent_osx-x86-64
index 429c89c5..72283269 100644
Binary files a/agents/meshagent_osx-x86-64 and b/agents/meshagent_osx-x86-64 differ
diff --git a/agents/meshagent_pogo b/agents/meshagent_pogo
index 5bd1c065..9c47ad03 100644
Binary files a/agents/meshagent_pogo and b/agents/meshagent_pogo differ
diff --git a/agents/meshagent_poky b/agents/meshagent_poky
index 9be7e6b5..a7cdfc6f 100644
Binary files a/agents/meshagent_poky and b/agents/meshagent_poky differ
diff --git a/agents/meshagent_poky64 b/agents/meshagent_poky64
index b086aece..f59f5d12 100644
Binary files a/agents/meshagent_poky64 and b/agents/meshagent_poky64 differ
diff --git a/agents/meshagent_x86 b/agents/meshagent_x86
index a249242b..d7e2d349 100644
Binary files a/agents/meshagent_x86 and b/agents/meshagent_x86 differ
diff --git a/agents/meshagent_x86-64 b/agents/meshagent_x86-64
index ef19fc8a..74977ebe 100644
Binary files a/agents/meshagent_x86-64 and b/agents/meshagent_x86-64 differ
diff --git a/agents/meshagent_x86-64_nokvm b/agents/meshagent_x86-64_nokvm
index d7a909e4..853d53f5 100644
Binary files a/agents/meshagent_x86-64_nokvm and b/agents/meshagent_x86-64_nokvm differ
diff --git a/agents/meshagent_x86_nokvm b/agents/meshagent_x86_nokvm
index 7b49f09b..0a45888b 100644
Binary files a/agents/meshagent_x86_nokvm and b/agents/meshagent_x86_nokvm differ
diff --git a/package.json b/package.json
index 53dae235..1819957e 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "meshcentral",
- "version": "0.5.36",
+ "version": "0.5.37",
"keywords": [
"Remote Management",
"Intel AMT",
diff --git a/translate/translate.json b/translate/translate.json
index d94e8d83..a7898e7c 100644
--- a/translate/translate.json
+++ b/translate/translate.json
@@ -23957,7 +23957,8 @@
"en": "Sign-in using Intel",
"nl": "Log in met Intel",
"xloc": [
- "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->loginpanel->1->authStrategies->auth-intel"
+ "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->loginpanel->1->authStrategies->auth-intel",
+ "login.handlebars->container->column_l->centralTable->1->0->logincell->loginpanel->1->authStrategies->auth-intel"
]
},
{
@@ -31128,4 +31129,4 @@
]
}
]
-}
+}
\ No newline at end of file
diff --git a/views/login.handlebars b/views/login.handlebars
index 33a037bc..9429b188 100644
--- a/views/login.handlebars
+++ b/views/login.handlebars
@@ -78,6 +78,7 @@
+
diff --git a/webserver.js b/webserver.js
index bf9a8aa9..53892400 100644
--- a/webserver.js
+++ b/webserver.js
@@ -2389,7 +2389,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
if ((domain.loginkey != null) && (domain.loginkey.indexOf(req.query.key) == -1)) { res.sendStatus(404); return; } // Check 3FA URL key
if ((obj.userAllowedIp != null) && (checkIpAddressEx(req, res, obj.userAllowedIp, false) === false)) { return; } // Check server-wide IP filter only.
- if (req.query.type == 1) {
+ if ((req.query.type == 1) && (req.query.meshid != null)) {
obj.getCiraConfigurationScript(req.query.meshid, function (script) {
if (script == null) { res.sendStatus(404); } else {
try {
@@ -2408,6 +2408,8 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
res.send(script);
}
});
+ } else {
+ res.sendStatus(404);
}
}
@@ -4248,10 +4250,42 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
}
}
- // JumpCloud
+ // Intel SAML
+ if (typeof domain.authstrategies.intel == 'object') {
+ if ((typeof domain.authstrategies.intel.cert != 'string') || (typeof domain.authstrategies.intel.idpurl != 'string')) {
+ console.log('ERROR: Missing Intel SAML configuration.');
+ } else {
+ var cert = obj.fs.readFileSync(obj.path.join(obj.parent.datapath, domain.authstrategies.intel.cert));
+ if (cert == null) {
+ console.log('ERROR: Unable to read Intel SAML IdP certificate: ' + domain.authstrategies.intel.cert);
+ } else {
+ var options = { path: url + 'auth-intel-callback', entryPoint: domain.authstrategies.intel.idpurl, issuer: 'meshcentral' };
+ if (typeof domain.authstrategies.intel.entityid == 'string') { options.issuer = domain.authstrategies.intel.entityid; }
+ options.cert = cert.toString().split('-----BEGIN CERTIFICATE-----').join('').split('-----END CERTIFICATE-----').join('');
+ const SamlStrategy = require('passport-saml').Strategy;
+ passport.use(new SamlStrategy(options,
+ function (profile, done) {
+ if (typeof profile.nameID != 'string') { return done(); }
+ var user = { id: 'user/' + domain.id + '/~' + profile.issuer + ':' + profile.nameID, name: profile.nameID };
+ if ((typeof profile.firstname == 'string') && (typeof profile.lastname == 'string')) { user.name = profile.firstname + ' ' + profile.lastname; }
+ if (typeof profile.email == 'string') { user.email = profile.email; }
+ return done(null, user);
+ }
+ ));
+ obj.app.get(url + 'auth-intel', function (req, res, next) {
+ domain.passport.authenticate('saml', { failureRedirect: '/', failureFlash: true })(req, res, next);
+ });
+ obj.app.post(url + 'auth-intel-callback', function (req, res, next) {
+ domain.passport.authenticate('saml', { failureRedirect: '/', failureFlash: true })(req, res, next);
+ }, handleStrategyLogin);
+ }
+ }
+ }
+
+ // JumpCloud SAML
if (typeof domain.authstrategies.jumpcloud == 'object') {
if ((typeof domain.authstrategies.jumpcloud.cert != 'string') || (typeof domain.authstrategies.jumpcloud.idpurl != 'string')) {
- console.log('ERROR: Missing JumpCloud configuration.');
+ console.log('ERROR: Missing JumpCloud SAML configuration.');
} else {
var cert = obj.fs.readFileSync(obj.path.join(obj.parent.datapath, domain.authstrategies.jumpcloud.cert));
if (cert == null) {