#!/bin/sh
######################################################################
#
# $Id: webjob-delete-account,v 1.2 2012/01/07 08:01:17 mavrik Exp $
#
######################################################################
#
# Copyright 2011-2012 The WebJob Project, All Rights Reserved.
#
######################################################################
#
# Purpose: Delete one or more WebJob user accounts.
#
######################################################################

IFS=' 	
'

PROGRAM=`basename ${0}`

######################################################################
#
# Usage
#
######################################################################

Usage()
{
  echo 1>&2
  echo "${PROGRAM} [-H webjob-home] [-S webjob-server-home] username [username ...]" 1>&2
  echo 1>&2
  exit 1
}

######################################################################
#
# Main
#
######################################################################

WEBJOB_SERVER_HOME="/var/webjob"

while getopts "H:S:" OPTION ; do
  case "${OPTION}" in
  H)
    WEBJOB_HOME="${OPTARG}"
    ;;
  S)
    WEBJOB_SERVER_HOME="${OPTARG}"
    ;;
  *)
    Usage
    ;;
  esac
done

shift `expr ${OPTIND} - 1`

if [ $# -lt 1 ] ; then
  Usage
fi

PATH=${WEBJOB_HOME=/usr/local/webjob}/bin:${PATH} ; export PATH

if [ ! -d "${WEBJOB_SERVER_HOME}" ] ; then
  echo "${PROGRAM}: Error='Server home directory (${WEBJOB_SERVER_HOME}) does not exist.'" 1>&2
  exit 2
fi

######################################################################
#
# Ensure that all prerequisites exist. Any error is considered fatal
# since it implies that the server's configuration is not complete.
#
######################################################################

HTUSERS_FILE="${WEBJOB_SERVER_HOME}/config/apache/ht-public"
if [ ! -f "${HTUSERS_FILE}" ] ; then
  echo "${PROGRAM}: Error='Password file (${HTUSERS_FILE}) does not exist.'" 1>&2
  exit 2
fi

WEBJOB_USERS_DIR="${WEBJOB_SERVER_HOME}/users"
if [ ! -d "${WEBJOB_USERS_DIR}" ] ; then
  echo "${PROGRAM}: Error='Users directory (${WEBJOB_USERS_DIR}) does not exist.'" 1>&2
  exit 2
fi

######################################################################
#
# Do some work.
#
######################################################################

for USERNAME in ${@} ; do

  ####################################################################
  #
  # Do a sanity check on the username.
  #
  ####################################################################

  MY_USERNAME_OK=`echo ${USERNAME} | perl -n -e 'if ($_ =~ /^[0-9A-Za-z_]{1,32}$/) { print "pass\n"; } else { print "fail\n"; }'`

  if [ x"${MY_USERNAME_OK}" != x"pass" ] ; then
    echo "${PROGRAM}: Error='Username (${USERNAME}) does not pass muster. The account will not be deleted.'" 1>&2
    continue
  fi

  ####################################################################
  #
  # Remove the user's password entry.
  #
  ####################################################################

  if [ -f "${HTUSERS_FILE}" ] ; then
    egrep "^${USERNAME}:" ${HTUSERS_FILE} > /dev/null 2>&1 &&
    {
      MY_RESULT=`htpasswd -D ${HTUSERS_FILE} ${USERNAME} 2>&1`
      if [ $? -ne 0 ] ; then
        MY_ERROR=`echo ${MY_RESULT} | tr -s -d '\n' ' '`
        echo "${PROGRAM}: Error='${MY_ERROR}'" 1>&2
      fi
    }
  fi

  ####################################################################
  #
  # Remove the user's account directory.
  #
  ####################################################################

  MY_USER_DIR="${WEBJOB_USERS_DIR}/${USERNAME-unknown}"
  if [ -d ${MY_USER_DIR} ] ; then
    rm -rf ${MY_USER_DIR}
  fi

done
