#!/usr/local/bin/cbsd
#v10.1.3
globalconf="${distdir}/cbsd.conf";
MYARG=""
MYOPTARG="jname display"
MYDESC="Show user list"
ADDHELP="display= list by comma for column. Default: login\n\
full display: login,password,uid,gid,gecos,home,shell\n"

. ${subrdir}/nc.subr
. ${cbsdinit}

[ -z "${display}" ] && display="login"

#defines
_MYDIR=$(dirname `realpath $0`)
SERVICE="userlist"

d_login=0
d_password=0
d_uid=0
d_gid=0
d_gecos=0
d_home=0
d_shell=0

IFS=","
for i in ${display}; do
	export d_$i=1
done
IFS=" "

readconf ${platform}-userlist.conf

check_jaildir()
{
	[ -f ${data}/etc/master.passwd -a -f ${data}/etc/passwd -a -f ${data}/etc/group ] && return 0
	return 1
}

ignore_user()
{
	[ -z "${1}" ] && return 1
	local IFS=" " i

	for i in ${IGNORE_USERS}; do
		[ "${i}" = "${1}" ] && return 1
	done

	return 0
}

show_user()
{
	local IFS=","
	local _out=
	local _showme _val i

	for i in ${display}; do
		_showme=0
		eval _showme=\$d_$i

		[ ${_showme} -eq 0 ] && continue
		eval _val=\$$i

#		_val="${i}"

		if [ -z "${_out}" ]; then
			_out="${_val}"
		else
			_out="${_out}|${_val}"
		fi
	done

	echo "${_out}"
}



if [ -z "${jname}" ]; then
	data=""
	exec_cmd=""
else
	. ${subrdir}/rcconf.subr
	[ $? -eq 1 ] &&  err 1 "${N1_COLOR}No such jail: ${N2_COLOR}${jname}${N0_COLOR}"
	exec_cmd="/usr/sbin/jexec ${jid}"
	check_jaildir

	if [ $? -eq 1 ]; then
		echo "bad data dir"
		exit 1
	fi
fi

IFS=":"
${GREP_CMD} -v ^# ${data}/etc/passwd |while read login password uid gid gecos home shell; do
	ignore_user ${login}
	skip=$?
	[ $skip -eq 1 ] && continue
	show_user
done

exit 0

