mecano
Version:
Common functions for system deployment.
42 lines (39 loc) • 1.51 kB
JavaScript
// Generated by CoffeeScript 1.9.1
var misc;
module.exports = function(options, callback) {
var cmd_addprinc, cmd_getprinc, k, ktadd_options, v;
if (!options.principal) {
return callback(new Error('Property principal is required'));
}
if (!options.password && !options.randkey) {
return callback(new Error('Password or randkey missing'));
}
if (/.*@.*/.test(options.kadmin_principal)) {
if (options.realm == null) {
options.realm = options.kadmin_principal.split('@')[1];
}
}
if (!/^\S+@\S+$/.test(options.principal)) {
options.principal = options.principal + "@" + options.realm;
}
if (options.password_sync == null) {
options.password_sync = false;
}
cmd_getprinc = misc.kadmin(options, "getprinc " + options.principal);
cmd_addprinc = misc.kadmin(options, options.password ? "addprinc -pw " + options.password + " " + options.principal : "addprinc -randkey " + options.principal);
ktadd_options = {};
for (k in options) {
v = options[k];
ktadd_options[k] = v;
}
ktadd_options["if"] = options.keytab;
return this.execute({
cmd: cmd_addprinc,
not_if_exec: cmd_getprinc + " | grep '" + options.principal + "'"
}).execute({
cmd: misc.kadmin(options, "cpw -pw " + options.password + " " + options.principal),
"if": options.password && options.password_sync,
not_if_exec: "echo " + options.password + " | kinit '" + options.principal + "';"
}).krb5_ktadd(ktadd_options).then(callback);
};
misc = require('./misc');