UNPKG

mecano

Version:

Common functions for system deployment.

51 lines (48 loc) 1.8 kB
// Generated by CoffeeScript 1.11.1 var misc; module.exports = function(options, callback) { var cache_name, 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; } if (options.kadmin_server == null) { options.kadmin_server = options.admin_server; } 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; cache_name = "/tmp/mecano_" + (Math.random()); this.execute({ retry: 3, cmd: cmd_addprinc, unless_exec: cmd_getprinc + " | grep '" + options.principal + "'" }); this.execute({ retry: 3, cmd: misc.kadmin(options, "cpw -pw " + options.password + " " + options.principal), "if": options.password && options.password_sync, unless_exec: "if ! echo " + options.password + " | kinit '" + options.principal + "' -c '" + cache_name + "'; then exit 1; else kdestroy -c '" + cache_name + "'; fi" }); this.krb5.ktadd(ktadd_options); return this.then(callback); }; misc = require('../misc');