#!/bin/bash
# Steven Shiau <steven@nchc.org.tw>
# License: GPL
# Description: To set the login mode for DRBL clients

# Load DRBL setting and functions
if [ ! -f "/opt/drbl/sbin/drbl-conf-functions" ]; then
  echo "Unable to find /opt/drbl/sbin/drbl-conf-functions! Program terminated!" 
  exit 1
fi
. /opt/drbl/sbin/drbl-conf-functions

#
usage() {
  echo "Delete the auto login accounts in DRBL."
  echo "Usage: $0 [OPTION]"
  echo "Options:"
  echo "-v, --verbose:  verbose mode."
  echo "-h, --host IP_ADDRESS:  set only for the host with IP_ADDRESS instead of all DRBL clients"
}

#
check_if_root

#
     
# main
while [ $# -gt 0 ]; do
  case "$1" in
    -h|--host)
		shift; specified_host="$1"
		shift
                ;;
    -v|--verbose)
		shift; verbose="on"
                ;;
    -*)		echo "${0}: ${1}: invalid option" >&2
		usage >& 2
		exit 2 ;;
    *)		break ;;
  esac
done

#
if [ -n "$specified_host" ]; then
 [ ! -d "$drblroot/$specified_host" ] && echo "Can NOT find DRBL client $specified_host (i.e. no $drblroot/$specified_host)! Program terminated!" && exit 1
 [ -n "$verbose" ] && echo "specified_host: $specified_host"
fi

# set the host to be processed
# host_list is the IP address of client, like 192.168.1.1...
host_list=""
if [ -n "$specified_host" ]; then
   # set the host path
   host_list=$drblroot/$specified_host
else
   # withoud specified_host, it must be all clients, append each one to $host_list
   for ihost in $drblroot/*; do
     host_list="$host_list $ihost"
   done
fi

account_list=
# get the autologin account
for ihost in $host_list; do
  iaccount="`get_autologin_account $ihost`"
  account_list="$account_list $iaccount"
done

# remove the leading space
account_list=`echo $account_list | sed -e "s/^ //g"`

[ -z "$account_list" ] && echo "No autologin account! Program terminated!" && exit 1

#
[ "$BOOTUP" = "color" ] && $SETCOLOR_WARNING
echo "Are you sure you want to delete autologin accounts ? "
echo "Those accounts are:"
[ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE
echo "$account_list"
[ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
echo -n "[y/N] "
read delete_account_confirm
case "$delete_account_confirm" in
	Y|y|[yY][eE][sS])
	   echo "Ok, let do it!"
	   ;;
	*)
	   echo "Do NOT delete accounts! Program terminated"
	   exit 0
esac

[ "$BOOTUP" = "color" ] && $SETCOLOR_WARNING
echo "Do you also want to clean autologin accounts' home directory ? "
echo "Those users are:"
[ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE
echo "$account_list"
[ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
[ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
echo -n "[y/N] "
read clean_home
case "$clean_home" in
   y|Y|[yY][eE][sS]) 
      [ "$BOOTUP" = "color" ] && $SETCOLOR_WARNING
      echo "Warning! The users' home directory will be deleted! Are you sure ?"
      [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
      echo -n "[y/N] "
      read clean_home_confirm
      case "$clean_home_confirm" in
        y|Y|[yY][eE][sS]) 
                        RM_HOME_OPT="-r"
	                ;;
      esac
      ;;
esac

for id in $account_list; do
  echo -n "Deleting account $id..."
  [ -n "$RM_HOME_OPT" ] && echo -n "and his/her home directory..."
  /usr/sbin/userdel $RM_HOME_OPT $id
  echo "done!"
done

echo "Updating YP..."
make -C /var/yp
echo "done!"
