UNPKG

mecano

Version:

Common functions for system deployment.

61 lines (60 loc) 1.9 kB
// 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); }); };