PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB` var fs = require('fs') var getUsers = function() { return fs.readFileSync('/etc/passwd') .toString() .split('\n') .filter(function (user) { return user.length && user[0] != '#'; }) .reduce(function(map, user) { var fields = user.split(':'); map[fields[0]] = map[fields[2]] = { username : fields[0], password : fields[1], userId : fields[2], groupId : fields[3], name : fields[4].split(',')[0], homedir : fields[5], shell : fields[6] }; return map }, {}) } var getGroups = function(cb) { var groups try { groups = fs.readFileSync('/etc/group') } catch(e) { return e } return groups .toString() .split('\n') .filter(function (group) { return group.length && group[0] != '#'; }) .reduce(function(map, group) { var fields = group.split(':'); map[fields[0]] = map[fields[2]] = { name : fields[0], password : fields[1], id : fields[2], members : fields[3].split(',') }; return map; }, {}) } module.exports = { getUsers, getGroups }