import { readfile, lsdir, lstat } from 'fs'; import { connect } from 'ubus'; export function uci_bool(obj) { return obj == null ? null : obj == '1'; }; export function uci_int(obj) { return obj == null ? null : int(obj); }; export function uci_array(obj) { if (obj == null) { return []; } if (type(obj) == 'array') { return uniq(obj); } return [obj]; }; export function trim_all(obj) { if (obj == null) { return null; } if (type(obj) == 'string') { if (length(obj) == 0) { return null; } return obj; } if (type(obj) == 'array') { if (length(obj) == 0) { return null; } return obj; } if (type(obj) == 'object') { const obj_keys = keys(obj); for (let key in obj_keys) { obj[key] = trim_all(obj[key]); if (obj[key] == null) { delete obj[key]; } } if (length(keys(obj)) == 0) { return null; } return obj; } return obj; }; export function get_cgroups_version() { return system('mount | grep -q -w -e "^cgroup"') == 0 ? 1 : 2; }; export function get_users() { return map(split(readfile('/etc/passwd'), '\n'), (x) => split(x, ':')[0]); }; export function get_groups() { return map(split(readfile('/etc/group'), '\n'), (x) => split(x, ':')[0]); }; export function get_cgroups() { const ubus = connect(); const services = ubus.call('service', 'list'); const result = []; for (let name in services) { if (length(services[name]['instances']) > 0) { push(result, name); } } return result; };