#!/bin/sh
# This script is written by Martynas Bendorius and DirectAdmin
# It is used to convert reseller to user
# Official DirectAdmin webpage: http://www.directadmin.com
# Usage:
# ./reseller_to_user.sh <user>

if [ $UID != 0 ]; then
        echo "You require Root Access to run this script";
        exit 0;
fi

if [ $# != 2 ]; then
        echo "Usage:";
        echo "  $0 <user> <reseller>";
        echo "you gave #$#: $0 $1 $2";
		echo "where:"
		echo "user: name of the account to downgrade."
		echo "reseller: name of the new creator of the User: eg: admin";
        exit 0;
fi

RESELLER_LIST=${BASEDIR}/admin/reseller.list
BASEDIR=/usr/local/directadmin/data
USR=$1
NEW_CREATOR=$2
NEW_CREATOR_IP_LIST=${BASEDIR}/users/${NEW_CREATOR}/ip.list
RESELLER_LIST=${BASEDIR}/admin/reseller.list
USER_DATA=${BASEDIR}/users/$USR
USER_CONF=${USER_DATA}/user.conf
USER_BACKUP_CONF=${USER_DATA}/backup.conf
RESELLER_ALLOC=${USER_DATA}/reseller.allocation
RESELLER_CONF=${USER_DATA}/reseller.conf
RESELLER_USAGE=${USER_DATA}/reseller.usage

if [ ! -d ${USER_DATA} ]; then
	echo "Directory ${USER_DATA} does not exist. Can not continue."
	exit 1;
fi

if [ "`grep -wc $USR ${RESELLER_LIST}`" = "0" ]; then
	echo "Reseller $USR is already user. Can not continue."
	exit 1;
fi

if [ ! -e /usr/bin/perl ]; then
	echo "/usr/bin/perl does not exist.";
	exit 1;
fi

echo "Re-configuring user directory /home/$USR."
rm -rf /home/$USR/user_backups
rm -rf /home/$USR/domains/default
rm -rf /home/$USR/domains/sharedip
rm -rf /home/$USR/domains/suspended

echo "Re-configuring DirectAdmin files."
# Changing usertype
perl -pi -e 's/usertype=reseller/usertype=user/' ${USER_CONF}

#if any IPs are managed by this Reseller, owernship should go to new creator.
for ip in `cat ${USER_DATA}/ip.list`; do
{
	IPFILE=${BASEDIR}/admin/ips/$ip
	
	C=`grep -c reseller=$USR`
	if [ "$C" -gt 0 ]; then
		#swap reseller to new reseller.
		perl -pi -e "s/^creator=$USR\$/creator=$NEW_CREATOR/" $IPFILE
		
		#and add it to the new resellers list.
		C=`grep -c $ip $NEW_CREATOR_IP_LIST`
		if [ "$C" -eq 0 ]; then
			echo $ip >> $NEW_CREATOR_IP_LIST
		fi
	fi
};
done;


rm -f ${USER_BACKUP_CONF}
rm -f ${USER_DATA}/ip.list
rm -f ${USER_DATA}/login.hist
rm -f ${USER_DATA}/reseller.history
rm -f ${USER_DATA}/users.list
rm -f ${USER_DATA}/u_welcome.txt
rm -rf ${USER_DATA}/packages
rm -f ${USER_DATA}/packages.list
rm -f ${RESELLER_ALLOC}
rm -f ${RESELLER_CONF}
rm -f ${RESELLER_USAGE}
CREATOR=`grep "creator=" ${USER_CONF} | cut -d= -f2`
RESELLER_USERSLIST=${BASEDIR}/users/$NEW_CREATOR/users.list

# Editing ticket.conf
if [ -e ${USER_DATA}/ticket.conf ]; then
	ACTIVE="`grep 'active=' ${USER_DATA}/ticket.conf`"
	HTML="`grep 'html=' ${USER_DATA}/ticket.conf`"
	NEWTICKET="`grep 'newticket=' ${USER_DATA}/ticket.conf`"
	perl -pi -e "s#$ACTIVE\n##g" ${USER_DATA}/ticket.conf
	perl -pi -e "s#$HTML\n##g" ${USER_DATA}/ticket.conf
	perl -pi -e "s#$NEWTICKET\n##g" ${USER_DATA}/ticket.conf
fi

echo "Adding user to the $2 reseller."
echo "$USR" >> ${RESELLER_USERSLIST}

echo "Removing user from the reseller list."
perl -pi -e "s#$USR\n##g" ${RESELLER_LIST}

echo "Changing user owner"
perl -pi -e "s/creator=$CREATOR/creator=$NEW_CREATOR/g" ${USER_CONF}

#this is needed to update "show all users" cache.
echo "action=cache&value=showallusers" >> /usr/local/directadmin/data/task.queue
/usr/local/directadmin/dataskq

echo "Reseller $USR has been converted to user."

exit 0;
