#!/bin/bash
#
# closes prospect user in zimbra
#

. /etc/clouddirectory/provisioner.cf

die() {
	echo "$*" >&2
	exit 1
}

error() {
	echo "ERROR: $*" >&2
}

debug() {
	if [ "$PROVISIONER_LOGLEVEL" == "DEBUG" ] || [ "$PROVISIONER_LOGLEVEL" == "INFO" ]; then
		echo "DEBUG: $*" 2>&2
	fi
}

info() {
	if [ "$PROVISIONER_LOGLEVEL" == "INFO" ]; then
		echo "INFO: $*" 2>&2
	fi
}

if [ ! "$PROVISIONER_LOGLEVEL" ]; then
	info "loglevel not set. assuming INFO"
	export PROVISIONER_LOGLEVEL=INFO
fi

[ "$PROVISIONER_MAILBOX_HOST" ] || die "missing config: PROVISIONER_MAILBOX_HOST"
[ "$PROVISIONER_MAILBOX_IP"   ] || die "missing config: PROVISIONER_MAILBOX_IP"
[ "$PROVISIONER_MAILBOX_USER" ] || die "missing config: PROVISIONER_MAILBOX_USER"

process_output() {
	while read line ; do
		echo "PROV: $line"
	done
}

call_zmprov() {
	debug "Calling remote zmprov on $PROVISIONER_MAILBOX_IP: $*"
	BASENAME=`basename "$1"`

	if ssh $PROVISIONER_MAILBOX_USER@$PROVISIONER_MAILBOX_IP zmprov "$@" 2>&1 ; then
		debug "DONE"
		return 0
	else
		error "Remote zmprov call failed"
		return 1
	fi
}

rec_username="$1"

if [ ! "$rec_username" ]; then
	echo "$0 <username>" >&2
	exit 1
fi

if call_zmprov modifyAccount "\"$rec_username\"" zimbraAccountStatus closed ; then
	debug "Decommissioning OKAY: $rec_username"
	exit 0
else
	error "Decommissioning failed: $rec_username"
	exit 1
fi
