#!/bin/sh # This script is written by Martynas Bendorius and DirectAdmin # It is used to convert user to reseller # Official DirectAdmin webpage: http://www.directadmin.com # Usage: # ./user_to_reseller.sh MYUID=`/usr/bin/id -u` if [ "$MYUID" != 0 ]; then echo "You require Root Access to run this script"; exit 0; fi if [ $# != 1 ]; then echo "Usage:"; echo "$0 "; echo "you gave #$#: $0 $1"; exit 0; fi USERNAME=$1 BASEDIR=/usr/local/directadmin/data ADMIN_DATA=${BASEDIR}/users/admin RESELLER_LIST=${BASEDIR}/admin/reseller.list USER_DATA=${BASEDIR}/users/$1 USER_BACKUP_CONF=${USER_DATA}/backup.conf USER_CONF=${USER_DATA}/user.conf USER_USAGE=${USER_DATA}/user.usage 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 $1 ${RESELLER_LIST}`" = "1" ]; then echo "User $1 is already reseller. 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/$1." mkdir -p /home/$1/user_backups mkdir -p /home/$1/domains/default mkdir -p /home/$1/domains/sharedip mkdir -p /home/$1/domains/suspended cp -R ${BASEDIR}/templates/default/* /home/$1/domains/default chown -R $1:$1 /home/$1/user_backups chown -R $1:$1 /home/$1/domains/default chown -R $1:$1 /home/$1/domains/sharedip chown -R $1:$1 /home/$1/domains/suspended SAG=`/usr/local/directadmin/directadmin c | grep secure_access_group | cut -d= -f2` if [ "$SAG" != "" ]; then if [ "$SAG" != '(null)' ]; then #must be set to something, and not null, thus on. chown $1:$1 /home/$1 chmod 711 /home/$1 chown $1:${SAG} /home/$1/domains chmod 750 /home/$1/domains fi fi echo "Re-configuring DirectAdmin files." # Changing usertype perl -pi -e 's/usertype=user/usertype=reseller/' ${USER_CONF} # Creating backup.conf if [ ! -e ${USER_BACKUP_CONF} ]; then echo -n "" > ${USER_BACKUP_CONF} echo "ftp_ip=" >> ${USER_BACKUP_CONF} echo "ftp_password=" >> ${USER_BACKUP_CONF} echo "ftp_path=/" >> ${USER_BACKUP_CONF} echo "ftp_username=" >> ${USER_BACKUP_CONF} echo "local_path=" >> ${USER_BACKUP_CONF} fi # Creating ip.list if [ ! -e ${USER_DATA}/ip.list ]; then grep "ip=" ${USER_DATA}/user.conf | cut -d= -f2 > ${USER_DATA}/ip.list fi # Creating everything else touch ${USER_DATA}/login.hist touch ${USER_DATA}/reseller.history touch ${USER_DATA}/users.list cp -f ${ADMIN_DATA}/u_welcome.txt ${USER_DATA}/u_welcome.txt # Creating packages mkdir -p ${USER_DATA}/packages touch ${USER_DATA}/packages.list # Creating reseller.allocation if [ ! -e ${RESELLER_ALLOC} ]; then echo -n "" > ${RESELLER_ALLOC} grep "bandwidth=" ${USER_CONF} >> ${RESELLER_ALLOC} grep "domainptr=" ${USER_CONF} >> ${RESELLER_ALLOC} grep "ftp=" ${USER_CONF} >> ${RESELLER_ALLOC} grep "mysql=" ${USER_CONF} >> ${RESELLER_ALLOC} grep "nemailf=" ${USER_CONF} >> ${RESELLER_ALLOC} grep "nemailml=" ${USER_CONF} >> ${RESELLER_ALLOC} grep "nemailr=" ${USER_CONF} >> ${RESELLER_ALLOC} grep "nemails=" ${USER_CONF} >> ${RESELLER_ALLOC} grep "nsubdomains=" ${USER_CONF} >> ${RESELLER_ALLOC} echo "nusers=0" >> ${RESELLER_ALLOC} grep "quota=" ${USER_CONF} >> ${RESELLER_ALLOC} grep "vdomains=" ${USER_CONF} >> ${RESELLER_ALLOC} fi # Editing ticket.conf if [ -e ${USER_DATA}/ticket.conf ] && [ "`grep -c 'active=' ${USER_DATA}/ticket.conf`" = "0" ]; then echo "active=yes" >> ${USER_DATA}/ticket.conf echo 'html=Follow this link for a 3rd party ticket system.' >> ${USER_DATA}/ticket.conf echo "newticket=0" >> ${USER_DATA}/ticket.conf fi # Creating reseller.conf if [ ! -e ${RESELLER_CONF} ]; then egrep -v "account=|creator=|date_created=|docsroot=|domain=|email=|ip=|name=|skin=|suspend_at_limit=|suspended=|username=|usertype=|zoom=|language=" ${USER_CONF} > ${RESELLER_CONF} echo "userssh=ON" >> ${RESELLER_CONF} echo "dns=ON" >> ${RESELLER_CONF} echo "ip=shared" >> ${RESELLER_CONF} echo "ips=0" >> ${RESELLER_CONF} echo "oversell=ON" >> ${RESELLER_CONF} echo "serverip=ON" >> ${RESELLER_CONF} echo "subject=Your account for |domain| is now ready for use." >> ${RESELLER_CONF} fi # Creating reseller.usage if [ ! -e ${RESELLER_USAGE} ]; then egrep -v "db_quota=|email_quota=" ${USER_USAGE} > ${RESELLER_USAGE} echo "nusers=1" >> ${RESELLER_USAGE} fi CREATOR=`grep "creator=" ${USER_CONF} | cut -d= -f2` CREATOR_USERSLIST=${BASEDIR}/users/${CREATOR}/users.list echo "Removing user from the other reseller." perl -pi -e "s#$1\n##g" ${CREATOR_USERSLIST} # Setting permissions chmod 600 ${USER_DATA}/backup.conf ${USER_DATA}/reseller.usage ${USER_DATA}/reseller.conf ${USER_DATA}/reseller.allocation ${USER_DATA}/packages.list ${USER_DATA}/login.hist ${USER_DATA}/reseller.history ${USER_DATA}/users.list chmod 700 ${USER_DATA}/packages chmod 644 ${USER_DATA}/u_welcome.txt chown -R diradmin:diradmin ${USER_DATA}/packages ${USER_DATA}/u_welcome.txt ${USER_DATA}/backup.conf ${USER_DATA}/reseller.usage ${USER_DATA}/reseller.conf ${USER_DATA}/reseller.allocation ${USER_DATA}/packages.list ${USER_DATA}/login.hist ${USER_DATA}/reseller.history ${USER_DATA}/users.list echo "Adding reseller to $3 reseller list" echo "$1" >> ${RESELLER_LIST} echo "Changing user owner" perl -pi -e "s/creator=$CREATOR/creator=admin/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 "User $1 has been converted to reseller." exit 0;