mecano
Version:
Common functions for system deployment.
61 lines (60 loc) • 1.9 kB
JavaScript
// Generated by CoffeeScript 1.11.1
module.exports = function(options, callback) {
var _, binddn, entry, i, j, k, ldif, len, len1, modified, passwd, ref, ref1, uri, v, vv;
binddn = options.binddn ? "-D " + options.binddn : '';
passwd = options.passwd ? "-w " + options.passwd : '';
if (options.url) {
console.log("Mecano: option 'options.url' is deprecated, use 'options.uri'");
if (options.uri == null) {
options.uri = options.url;
}
}
if (options.uri === true) {
options.uri = 'ldapi:///';
}
uri = options.uri ? "-H " + options.uri : '';
if (!options.entry) {
return callback(Error("Mecano `ldap.add`: required property 'entry'"));
}
if (!Array.isArray(options.entry)) {
options.entry = [options.entry];
}
ldif = '';
ref = options.entry;
for (i = 0, len = ref.length; i < len; i++) {
entry = ref[i];
if (!entry.dn) {
return callback(Error("Mecano `ldap.add`: required property 'dn'"));
}
ldif += '\n';
ldif += "dn: " + entry.dn + "\n";
ref1 = /^(.*?)=(.+?),.*$/.exec(entry.dn), _ = ref1[0], k = ref1[1], v = ref1[2];
ldif += k + ": " + v + "\n";
for (k in entry) {
v = entry[k];
if (k === 'dn') {
continue;
}
if (!Array.isArray(v)) {
v = [v];
}
for (j = 0, len1 = v.length; j < len1; j++) {
vv = v[j];
ldif += k + ": " + vv + "\n";
}
}
}
modified = false;
return this.execute({
cmd: "ldapadd -c " + binddn + " " + passwd + " " + uri + " <<-EOF\n" + ldif + "\nEOF",
code_skipped: 68
}, function(err, executed, stdout, stderr) {
var added, ref2;
if (err) {
return callback(err);
}
modified = ((ref2 = stderr.match(/Already exists/g)) != null ? ref2.length : void 0) !== stdout.match(/adding new entry/g).length;
added = modified;
return callback(err, modified, added);
});
};