UNPKG

mecano

Version:

Common functions for system deployment.

42 lines (39 loc) 1.51 kB
// 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');