#!/bin/bash

. $CONFIG_DIRECTORY/config
. $MODULES_DIRECTORY/config
. $MODULES_DIRECTORY/functions
. $MODULES_DIRECTORY/deluser.dml

get_user_data()
{
	eval `echo "$DIALOG_get_user_data" | $DML`
	if [ $res -eq 2 ]; then return 0; fi

	ok=0;

	while [ $ok -eq 0 ]; do
	
	ok=1;

	if [ ! "`$GREP -E "^$username:" /etc/passwd`" ]; then
		eval `printf "$DIALOG_user_unknown" "$username" | $DML`
		if [ $res -eq 2 ]; then return 0; fi
		ok=0;
	fi

	load_user_data "$username"

	if [ $ok -eq 1 ] && [ "$PROTECT" != "no" ] && [ "$_uid" -lt 500 ]; then
		eval `printf "$DIALOG_user_protected" "$MODULES_DIRECTORY" | $DML`
		return 0;
	fi
	
	done

	return 1;
}

remove_user()
{
	# USERDEL errorlevels
	# 
	# 1 - PAM error
	# 2 - wrong parameters
	# 6 - no such username
	# 12 - error removing directory (later will be not needed, we will
	#      archive and delete home by hand)
	
	eval `printf "$DIALOG_ask_for_confirmation" "$username" "$_comment" | $DML`

	if [ $res -eq 2 ]; then
		return 0
	fi

	$TAR -zcf $CFG_ARCHIVE/$username-`date -I`.tar.gz $_home &> /dev/null 
	RETVAL=$?

	if [ $RETVAL -gt 0 ]; then
		eval `echo "$DIALOG_archiving_error" | $DML`
		return 0
	fi

	output="`$USERDEL -r $username 2> /dev/null`"
	RETVAL=$?

	if [ $RETVAL -gt 0 ]; then
		case $RETVAL in
			1)
				eval `echo "$DIALOG_pam_error" | $DML`;;
			2)
				eval `echo "$DIALOG_wrong_parameters" | $DML`;;
			6)
				eval `echo "$DIALOG_user_doesnt_exist" | $DML`;;
			12)
				eval `echo "$DIALOG_cant_remove_home" | $DML`;;
		esac
		return 0;
	fi

	log_action "User $username removed from the system"
	eval=`printf "$DIALOG_user_deleted" "$username" | $DML`;

	return 1;
}

get_user_data
RETVAL=$?

if [ $RETVAL -eq 0 ]; then exit; fi

remove_user

