mirror of
https://github.com/coderaiser/cloudcmd.git
synced 2026-01-23 18:55:26 +00:00
75 lines
2.3 KiB
JavaScript
75 lines
2.3 KiB
JavaScript
(function(object) {
|
|
'use strict';
|
|
|
|
/*
|
|
* users.js'
|
|
* -----------
|
|
* get names from uids on unix from /etc/passwd'
|
|
*/
|
|
|
|
var fs = require('fs'),
|
|
time = require('./time'),
|
|
Util = require('../util'),
|
|
FILE = '/etc/passwd',
|
|
FileTime,
|
|
Names;
|
|
|
|
object.getNames = function(callback) {
|
|
getTime(function(error, names) {
|
|
Util.exec(callback, error, names);
|
|
});
|
|
};
|
|
|
|
function getTime(callback) {
|
|
time.get(FILE, 'raw', function(error, time) {
|
|
if (error)
|
|
callback(error);
|
|
else if (FileTime === time) {
|
|
if (!Names)
|
|
error = 'user: parse error of ' + FILE;
|
|
|
|
callback(error, Names);
|
|
} else {
|
|
FileTime = time;
|
|
read(callback);
|
|
}
|
|
});
|
|
}
|
|
|
|
function read(callback) {
|
|
fs.readFile(FILE, 'utf8', function(error, passwd) {
|
|
if (!error)
|
|
Names = get(passwd);
|
|
|
|
callback(error, Names);
|
|
});
|
|
}
|
|
|
|
|
|
/** Функция парсит uid и имена пользователей
|
|
* из переданного в строке вычитаного файла /etc/passwd
|
|
* и возвращает массив обьектов имён и uid пользователей
|
|
* @param passwd - строка, в которой находиться файл /etc/passwd
|
|
*/
|
|
function get(passwd) {
|
|
var uid, name,
|
|
passwdArray = passwd.split('\n'),
|
|
users = {};
|
|
|
|
passwdArray.forEach(function(line) {
|
|
passwd = Util.rmStr(passwd, line);
|
|
|
|
/* получаем первое слово строки */
|
|
name = line.substr(line, line.indexOf(':'));
|
|
line = Util.rmStr(line, name + ':x:');
|
|
|
|
/* получаем uid */
|
|
uid = line.substr(line, line.indexOf(':'));
|
|
|
|
if (uid)
|
|
users[uid] = name;
|
|
});
|
|
|
|
return users;
|
|
}
|
|
})(this);
|