121 lines
3.4 KiB
Bash
121 lines
3.4 KiB
Bash
#!/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} ${IPFILE}`
|
|
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;
|