Servicedock: Webgui for Docker Swarm. Manage Docker Swarm a a Service.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

51 lines
1.4 KiB

module.exports = function(config) {
authentication = function (username, password, success, fail) {
if (config) {
const crypto = require('crypto');
if (config.passwords && config.passwords[username]) {
if (crypto.getHashes().indexOf(config.passwords[username][0])>=0) {
if (crypto.createHash(config.passwords[username][0]).update(password, 'utf8').digest('hex') === config.passwords[username][1]) {
success();
return;
} else {
fail();
return;
}
} else {
console.log("**** HASH NOT FOUND ****");
console.log(config.passwords[username][0]);
console.log(crypto.getHashes());
fail();
return;
}
}
if (config.ldap) try {
var LdapAuth = require('ldapauth');
var auth = new LdapAuth(config.ldap);
auth.authenticate(username, password, function(err, usr) {
auth.close(function(err) {})
if (err) {
console.log("**** ERROR: LDAP Authentication failed:", err);
fail();
return;
}
console.log("**** SUCCESS: LDAP Authentication:");
success();
return;
});
return; // need to block here!
} catch (e) {
console.log("**** Error: LDAP failed: ", e, e.stack);
fail();
return;
}
}
fail();
return;
}
return authentication;
}