#!/bin/sh
#VERSION=0.0.18
#This script is written by Martynas Bendorius and DirectAdmin
#cPanel->DirectAdmin backup conversion tool

#usage:
# $0 <full path to cpanel backup> [<full path to directadmin backup directory>]

removeLockfile() {
	rm -f ${LOCKFILE}
	trap - INT TERM EXIT
}

do_exit() {
	if [ "$2" != "" ]; then
		>&2 echo "$2"
	fi
	removeLockfile
	exit $1
}

MYUID=`/usr/bin/id -u`
if [ "$MYUID" != 0 ]; then
	echo "You require Root Access to run this script";
	exit 0;
fi

if [ $# -lt 1 ]; then
	echo "Usage:";
	echo "$0 <full path to cpanel backup> [<full path to directadmin backup directory>]";
	echo "you gave #$#: $0 $1 $2";
	exit 0;
fi

EXIT_CODE=0
CPANEL_BACKUP=$1
WORKDIR=`dirname $0`

if echo ${CPANEL_BACKUP} | grep -m1 -q '^/' | grep -m1 -q 'tar\.gz$'; then
	do_exit 99 "${CPANEL_BACKUP} is incorrect FULL path to the backup file. Exiting."
fi

if [ $# != 2 ]; then
	DIRECTADMIN_BACKUPS=`pwd`/directadmin
else
	DIRECTADMIN_BACKUPS=$2
fi

if [ "${DIRECTADMIN_BACKUPS}" = "" ] || [ "${DIRECTADMIN_BACKUPS}" = "/" ]; then
	do_exit 100 "Full path to DA backups cannot be set to ${DIRECTADMIN_BACKUPS}. Exiting..."
fi

getOpt() {
	#$1 is option name
	GET_OPTION="`grep -v \"^$1=$\" ${CPANEL_USER_CONF} | grep -m1 \"^$1=\" | cut -d= -f2`"
	if [ "${GET_OPTION}" = "" ]; then
		GET_OPTION=unlimited
	fi
	echo ${GET_OPTION}
}

getPkgOpt() {
	#$1 is option name, $2 path to package file
	GET_OPTION="`grep -v \"^$1=$\" \"${2}\" | grep -m1 \"^$1=\" | cut -d= -f2`"
	if [ "${GET_OPTION}" = "" ]; then
		GET_OPTION=unlimited
	fi
	echo ${GET_OPTION}
}

USERNAME=`echo "${CPANEL_BACKUP}" | grep -o '[A-Za-z0-9]*.tar.gz' | perl -p0 -e 's|\.tar\.gz||g'`
TAR_GZ=true
if [ "${USERNAME}" = "" ]; then
	USERNAME=`echo "${CPANEL_BACKUP}" | grep -o '[A-Za-z0-9]*.tar' | perl -p0 -e 's|\.tar||g'`
	TAR_GZ=false
fi
if [ "${USERNAME}" = "" ]; then
	do_exit 102 "Unable to extract username from tarball name"
fi

CPANEL_USER_CONF=${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/cp/${USERNAME}

echo "Converting ${USERNAME} (${CPANEL_BACKUP})..."

#Cleanup
if [ -d ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert ]; then
	echo "Found previous ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert. Removing..."
	rm -rf ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert
fi
if [ -d ${DIRECTADMIN_BACKUPS}/${USERNAME} ]; then
	echo "Found previous ${DIRECTADMIN_BACKUPS}/${USERNAME}. Removing..."
	rm -rf ${DIRECTADMIN_BACKUPS}/${USERNAME}
fi

USERNAME_LEN=`echo -n "${USERNAME}" | wc -c`
MAX_USERNAME_LEN=`/usr/local/directadmin/directadmin c | grep -m1 '^max_username_length=' | cut -d= -f2`
if [ ${USERNAME_LEN} -gt ${MAX_USERNAME_LEN} ]; then
	do_exit 101 "Max username length (${MAX_USERNAME_LEN}) is smaller than cPanel username (${USERNAME_LEN})"
fi

NS1="`/usr/local/directadmin/directadmin c | grep -m1 '^ns1=' | cut -d= -f2`"
NS2="`/usr/local/directadmin/directadmin c | grep -m1 '^ns2=' | cut -d= -f2`"

mkdir -p ${DIRECTADMIN_BACKUPS}/${USERNAME}/domains
mkdir -p ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup
if [ -d ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert ]; then
	echo "Found previous instance of ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert, removing..."
	rm -rf ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert
fi
mkdir -p ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert

STRIP_TAR_GZ="--strip=1"
if [ "${jetbackup}" = "yes" ]; then
	STRIP_TAR_GZ=""
fi

if ${TAR_GZ}; then
	tar xzfC ${CPANEL_BACKUP} ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert ${STRIP_TAR_GZ}
else
	tar xfC ${CPANEL_BACKUP} ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert ${STRIP_TAR_GZ}
fi

if [ $? -ne 0 ]; then
	rm -rf ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert
	do_exit 4 "Failed to extract ${CPANEL_BACKUP} to ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert"
fi

if [ ! -s ${CPANEL_USER_CONF} ]; then
	do_exit 3 "Unable to find cPanel user configuration in ${CPANEL_USER_CONF}"
fi

ACCOUNT_SUSPENDED="no"
if grep -m1 -q '^SUSPENDED=1$' "${CPANEL_USER_CONF}"; then
	ACCOUNT_SUSPENDED="yes"
fi

if [ ! -s ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/shadow ]; then
	echo "Unable to find ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/shadow, exiting..."
	echo "Removing ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert..."
	rm -rf ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert
	do_exit 5
fi

if [ -s ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir.tar ]; then
	if [ ! -d ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir ]; then
		echo "Creating empty ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir..."
		mkdir -p ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir
	fi
	echo "Extracting homedir.tar..."
	tar xfC ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir.tar ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir
	if [ $? -ne 0 ]; then
		rm -rf ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert
		do_exit 6 "Failed to extract ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir.tar"
	fi
fi

#Copy the shadow file
cat ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/shadow > ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/.shadow

#Get default domain name
DEFAULT_DOMAIN_NAME=`getOpt DNS`
if [ "${DEFAULT_DOMAIN_NAME}" = "unlimited" ]; then
	do_exit 103 "Unable to get default domain name..."
fi
DEFAULT_IP=`getOpt IP`
if [ "${DEFAULT_IP}" = "unlimited" ]; then
	echo "Unable to get default IP address"
	DEFAULT_IP=127.0.0.1
fi
DEFAULT_CGI=`getOpt CGI`
if [ "${DEFAULT_CGI}" = "unlimited" ]; then
	DEFAULT_CGI=OFF
fi
CPANEL_MAXPARK=`getOpt MAXPARK`
if [ "${CPANEL_MAXPARK}" = "0" ]; then
    CPANEL_MAXPARK="unlimited"
fi
CPANEL_MAXFTP=`getOpt MAXFTP`
CPANEL_MAXSQL=`getOpt MAXSQL`
CPANEL_MAXSUB=`getOpt MAXSUB`
CPANEL_MAXPOP=`getOpt MAXPOP`
CPANEL_MAXLST=`getOpt MAXLST`
CPANEL_MAXADDON=`getOpt MAXADDON`
if [ "${CPANEL_MAXADDON}" = "0" ]; then
    CPANEL_MAXADDON="unlimited"
fi
CPANEL_BWLIMIT=`getOpt BWLIMIT`
if [ "${CPANEL_BWLIMIT}" = "0" ]; then
    CPANEL_BWLIMIT="unlimited"
fi
CPANEL_PLAN=`getOpt PLAN`
CPANEL_PLAN="`echo \"${CPANEL_PLAN}\" | tr ' ' '_'`"
CPANEL_OWNER=`getOpt OWNER`
if [ "${CPANEL_OWNER}" = "root" ]; then
	CPANEL_OWNER="admin"
fi
CPANEL_QUOTA=`cat ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/quota`
if [ "${CPANEL_QUOTA}" = "0" ]; then
    CPANEL_QUOTA="unlimited"
fi
if [ "${CPANEL_BWLIMIT}" != "unlimited" ]; then
	CPANEL_BWLIMIT=`expr ${CPANEL_BWLIMIT} / 1048576`
fi

#Set customer email address
if [ -s ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/.contactemail ]; then
	CUSTOMER_EMAIL="`head -n1 ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/.contactemail`"
else
	CUSTOMER_EMAIL="${USERNAME}@${DEFAULT_DOMAIN_NAME}"
fi

doConvertDomain() {
	CONVERTED_DOMAIN=$1
	DEFAULT_DOMAIN=$2
	ASSOCIATED_SUBDOMAIN=$3
	ALIAS_DOMAIN=$4
	echo "Converting ${CONVERTED_DOMAIN} domain..."
	mkdir -p ${DIRECTADMIN_BACKUPS}/${USERNAME}/domains/${CONVERTED_DOMAIN}
	mkdir -p ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}

    #Local or remote delivery
    CPANEL_MAILDELIVERY=`getOpt MXCHECK-${CONVERTED_DOMAIN}`
    DIRECTADMIN_DOMAIN_LOCALDELIVERY=1
    if ! echo "${CPANEL_MAILDELIVERY}" | grep -m1 -q "0"; then
        DIRECTADMIN_DOMAIN_LOCALDELIVERY=0
    fi
	
	#Create domain.usage
	CONVERTED_DOMAIN_USAGE="${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/domain.usage"
	echo "bandwidth=0" > ${CONVERTED_DOMAIN_USAGE}
	echo "log_quota=0" >> ${CONVERTED_DOMAIN_USAGE}
	echo "quota=0" >> ${CONVERTED_DOMAIN_USAGE}

	#Create domain.ip_list
	echo "${DEFAULT_IP}" > ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/domain.ip_list
	
	#Create domain.conf
	CONVERTED_DOMAIN_CONF="${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/domain.conf"
	echo -n '' >${CONVERTED_DOMAIN_CONF}
	if [ -e ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/userdata/${CONVERTED_DOMAIN}_SSL ] || [ -s ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/apache_tls/${CONVERTED_DOMAIN} ]; then
		echo "SSLCACertificateFile=/usr/local/directadmin/data/users/${USERNAME}/domains/${CONVERTED_DOMAIN}.cacert" >> ${CONVERTED_DOMAIN_CONF}
		echo "SSLCertificateFile=/usr/local/directadmin/data/users/${USERNAME}/domains/${CONVERTED_DOMAIN}.cert" >> ${CONVERTED_DOMAIN_CONF}
		echo "SSLCertificateKeyFile=/usr/local/directadmin/data/users/${USERNAME}/domains/${CONVERTED_DOMAIN}.key" >> ${CONVERTED_DOMAIN_CONF}
	fi
	if [ ! -z "${ALIAS_DOMAIN}" ]; then
		if [ -e ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/userdata/${ALIAS_DOMAIN}_SSL ] || [ -s ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/apache_tls/${ALIAS_DOMAIN} ]; then
			echo "SSLCACertificateFile=/usr/local/directadmin/data/users/${USERNAME}/domains/${CONVERTED_DOMAIN}.cacert" >> ${CONVERTED_DOMAIN_CONF}
			echo "SSLCertificateFile=/usr/local/directadmin/data/users/${USERNAME}/domains/${CONVERTED_DOMAIN}.cert" >> ${CONVERTED_DOMAIN_CONF}
			echo "SSLCertificateKeyFile=/usr/local/directadmin/data/users/${USERNAME}/domains/${CONVERTED_DOMAIN}.key" >> ${CONVERTED_DOMAIN_CONF}
		fi
	fi
	echo "UseCanonicalName=OFF" >> ${CONVERTED_DOMAIN_CONF}
	echo "active=yes" >> ${CONVERTED_DOMAIN_CONF}
	echo "bandwidth=unlimited" >> ${CONVERTED_DOMAIN_CONF}
	if [ "${DEFAULT_CGI}" = "1" ]; then
		echo "cgi=ON" >> ${CONVERTED_DOMAIN_CONF}
	else
		echo "cgi=OFF" >> ${CONVERTED_DOMAIN_CONF}
	fi
	if ${DEFAULT_DOMAIN}; then
		echo "defaultdomain=yes" >> ${CONVERTED_DOMAIN_CONF}
	else
		echo "defaultdomain=no" >> ${CONVERTED_DOMAIN_CONF}
	fi
	echo "domain=${CONVERTED_DOMAIN}" >> ${CONVERTED_DOMAIN_CONF}
	echo "ip=${DEFAULT_IP}" >> ${CONVERTED_DOMAIN_CONF}
	echo "local_domain=${CONVERTED_DOMAIN_CONF}" >> ${CONVERTED_DOMAIN_CONF}
	echo "open_basedir=ON" >> ${CONVERTED_DOMAIN_CONF}
	echo "php=ON" >> ${CONVERTED_DOMAIN_CONF}
	echo "private_html_is_link=1" >> ${CONVERTED_DOMAIN_CONF}
	echo "quota=unlimited" >> ${CONVERTED_DOMAIN_CONF}
	echo "safemode=OFF" >> ${CONVERTED_DOMAIN_CONF}
	echo "ssl=ON" >> ${CONVERTED_DOMAIN_CONF}
	echo "suspended=${ACCOUNT_SUSPENDED}" >> ${CONVERTED_DOMAIN_CONF}
	echo "username=${USERNAME}" >> ${CONVERTED_DOMAIN_CONF}
	if [ ! -z "${ALIAS_DOMAIN}" ]; then
		CONVERTED_DOMAIN_CONFIG=${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/userdata/${ALIAS_DOMAIN}
	else
		CONVERTED_DOMAIN_CONFIG=${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/userdata/${CONVERTED_DOMAIN}
	fi
	if [ -s ${CONVERTED_DOMAIN_CONFIG} ]; then
		if grep -m1 -q '^phpversion:' ${CONVERTED_DOMAIN_CONFIG} && [ -s /usr/local/directadmin/custombuild/options.conf ]; then
			DOMAIN_PHP_VERSION=`grep -m1 '^phpversion:' ${CONVERTED_DOMAIN_CONFIG} | awk '{print $2}' | grep -o '[0-9]*'`
			#Match PHP version to the one used on the system
			if grep 'php._release' /usr/local/directadmin/custombuild/options.conf | tr -d '.' | grep -m1 -q "=${DOMAIN_PHP_VERSION}$"; then
				DOMAIN_PHP_VERSION_IN_OPTIONS=`grep 'php._release' /usr/local/directadmin/custombuild/options.conf | tr -d '.' | grep -m1 "=${DOMAIN_PHP_VERSION}$" | cut -d_ -f1 | grep -o '[0-9]*'`
				echo "Assigning domain PHP${DOMAIN_PHP_VERSION} (php${DOMAIN_PHP_VERSION_IN_OPTIONS}_release)..."
				echo "php1_select=${DOMAIN_PHP_VERSION_IN_OPTIONS}" >> ${CONVERTED_DOMAIN_CONF}
			fi
		fi
	fi

	#Create ftp.conf
	CONVERTED_DOMAIN_FTP="${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/ftp.conf"
	echo "Anonymous=no" > ${CONVERTED_DOMAIN_FTP}
	echo "AnonymousUpload=no" > ${CONVERTED_DOMAIN_FTP}
	echo "AuthUserFile=/usr/local/directadmin/data/users/${USERNAME}/ftp.passwd" > ${CONVERTED_DOMAIN_FTP}
	echo "DefaultRoot=/home/${USERNAME}/domains/${CONVERTED_DOMAIN}/public_ftp" > ${CONVERTED_DOMAIN_FTP}
	echo "ExtendedLog=/var/log/proftpd/${DEFAULT_IP}.bytes" > ${CONVERTED_DOMAIN_FTP}
	echo "MaxClients=10" > ${CONVERTED_DOMAIN_FTP}
	echo "MaxLoginAttempts=3" > ${CONVERTED_DOMAIN_FTP}
	echo "ServerAdmin=${CUSTOMER_EMAIL}" > ${CONVERTED_DOMAIN_FTP}
	echo "ServerName=ProFTPd" > ${CONVERTED_DOMAIN_FTP}
	if ${DEFAULT_DOMAIN}; then
		echo "defaultdomain=yes" > ${CONVERTED_DOMAIN_FTP}
	else
		echo "defaultdomain=no" > ${CONVERTED_DOMAIN_FTP}
	fi
	echo "ip=${DEFAULT_IP}" > ${CONVERTED_DOMAIN_FTP}
	
	#Create ftp.passwd
	CONVERTED_DOMAIN_FTP_PASSWD="${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/ftp.passwd"
	echo -n '' > ${CONVERTED_DOMAIN_FTP_PASSWD}
	CPANEL_FTP_PASSWD=${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/proftpdpasswd
	if [ -s ${CPANEL_FTP_PASSWD} ] && [ -z "${ALIAS_DOMAIN}" ]; then
		for i in `cat ${CPANEL_FTP_PASSWD}`; do {
			FTP_USER="`echo ${i} | cut -d: -f1`"
			FTP_PASS="`echo ${i} | cut -d: -f2`"
			FTP_UID="`echo ${i} | cut -d: -f3`"
			FTP_GID="`echo ${i} | cut -d: -f4`"
			FTP_DIR="`echo ${i} | cut -d: -f6`"
		
			if [ "${FTP_USER}" = "${USERNAME}" ]; then
				echo "${FTP_USER}=passwd=${FTP_PASS}&path=${FTP_DIR}&type=system" >> ${CONVERTED_DOMAIN_FTP_PASSWD}
			else
				if echo ${FTP_USER} | grep -m1 -q '\@'; then
					FTP_USER_AT_DOMAIN=${FTP_USER}
				else
					FTP_USER_AT_DOMAIN="${FTP_USER}@${CONVERTED_DOMAIN}"
				fi
				if ! ${DEFAULT_DOMAIN}; then
					if grep -m1 -q "^documentroot: ${FTP_DIR}$" ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/userdata/${ASSOCIATED_SUBDOMAIN}; then
						echo "${FTP_USER_AT_DOMAIN}=passwd=${FTP_PASS}&path=${FTP_DIR}&type=domain" >> ${CONVERTED_DOMAIN_FTP_PASSWD}
					else
						echo "${FTP_USER_AT_DOMAIN}=passwd=${FTP_PASS}&path=${FTP_DIR}&type=custom" >> ${CONVERTED_DOMAIN_FTP_PASSWD}
					fi
				elif grep -m1 -q "^documentroot: ${FTP_DIR}$" ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/userdata/${CONVERTED_DOMAIN}; then
					echo "${FTP_USER_AT_DOMAIN}=passwd=${FTP_PASS}&path=${FTP_DIR}&type=domain" >> ${CONVERTED_DOMAIN_FTP_PASSWD}
				else
					echo "${FTP_USER_AT_DOMAIN}=passwd=${FTP_PASS}&path=${FTP_DIR}&type=custom" >> ${CONVERTED_DOMAIN_FTP_PASSWD}
				fi
			fi
		}
		done
	fi
	
	#Copy SSL cert/key/cacert
	if [ ! -z "${ALIAS_DOMAIN}" ]; then
		SSL_DOMAIN_CONFIG_PATH=${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/userdata/${ALIAS_DOMAIN}_SSL
	else
		SSL_DOMAIN_CONFIG_PATH=${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/userdata/${CONVERTED_DOMAIN}_SSL
	fi
	if [ -e ${SSL_DOMAIN_CONFIG_PATH} ]; then
		if grep -m1 -q '^sslcacertificatefile: ' ${SSL_DOMAIN_CONFIG_PATH}; then
			CACERT_NAME="`grep -m1 '^sslcacertificatefile: ' ${SSL_DOMAIN_CONFIG_PATH} | grep -o '[^/]*\.cabundle'`"
			if [ -s ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/sslcerts/${CACERT_NAME} ]; then
				echo "Copying ${CACERT_NAME} CA root certificate..."
				mv ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/sslcerts/${CACERT_NAME} ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/domain.cacert
			else
				#No CA Bundle in backup, likely Comodo bundle
				cat <<< "-----BEGIN CERTIFICATE-----
MIIGCDCCA/CgAwIBAgIQKy5u6tl1NmwUim7bo3yMBzANBgkqhkiG9w0BAQwFADCB
hTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNV
BAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTQwMjEy
MDAwMDAwWhcNMjkwMjExMjM1OTU5WjCBkDELMAkGA1UEBhMCR0IxGzAZBgNVBAgT
EkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR
Q09NT0RPIENBIExpbWl0ZWQxNjA0BgNVBAMTLUNPTU9ETyBSU0EgRG9tYWluIFZh
bGlkYXRpb24gU2VjdXJlIFNlcnZlciBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP
ADCCAQoCggEBAI7CAhnhoFmk6zg1jSz9AdDTScBkxwtiBUUWOqigwAwCfx3M28Sh
bXcDow+G+eMGnD4LgYqbSRutA776S9uMIO3Vzl5ljj4Nr0zCsLdFXlIvNN5IJGS0
Qa4Al/e+Z96e0HqnU4A7fK31llVvl0cKfIWLIpeNs4TgllfQcBhglo/uLQeTnaG6
ytHNe+nEKpooIZFNb5JPJaXyejXdJtxGpdCsWTWM/06RQ1A/WZMebFEh7lgUq/51
UHg+TLAchhP6a5i84DuUHoVS3AOTJBhuyydRReZw3iVDpA3hSqXttn7IzW3uLh0n
c13cRTCAquOyQQuvvUSH2rnlG51/ruWFgqUCAwEAAaOCAWUwggFhMB8GA1UdIwQY
MBaAFLuvfgI9+qbxPISOre44mOzZMjLUMB0GA1UdDgQWBBSQr2o6lFoL2JDqElZz
30O0Oija5zAOBgNVHQ8BAf8EBAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNV
HSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwGwYDVR0gBBQwEjAGBgRVHSAAMAgG
BmeBDAECATBMBgNVHR8ERTBDMEGgP6A9hjtodHRwOi8vY3JsLmNvbW9kb2NhLmNv
bS9DT01PRE9SU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDBxBggrBgEFBQcB
AQRlMGMwOwYIKwYBBQUHMAKGL2h0dHA6Ly9jcnQuY29tb2RvY2EuY29tL0NPTU9E
T1JTQUFkZFRydXN0Q0EuY3J0MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5jb21v
ZG9jYS5jb20wDQYJKoZIhvcNAQEMBQADggIBAE4rdk+SHGI2ibp3wScF9BzWRJ2p
mj6q1WZmAT7qSeaiNbz69t2Vjpk1mA42GHWx3d1Qcnyu3HeIzg/3kCDKo2cuH1Z/
e+FE6kKVxF0NAVBGFfKBiVlsit2M8RKhjTpCipj4SzR7JzsItG8kO3KdY3RYPBps
P0/HEZrIqPW1N+8QRcZs2eBelSaz662jue5/DJpmNXMyYE7l3YphLG5SEXdoltMY
dVEVABt0iN3hxzgEQyjpFv3ZBdRdRydg1vs4O2xyopT4Qhrf7W8GjEXCBgCq5Ojc
2bXhc3js9iPc0d1sjhqPpepUfJa3w/5Vjo1JXvxku88+vZbrac2/4EjxYoIQ5QxG
V/Iz2tDIY+3GH5QFlkoakdH368+PUq4NCNk+qKBR6cGHdNXJ93SrLlP7u3r7l+L4
HyaPs9Kg4DdbKDsx5Q5XLVq4rXmsXiBmGqW5prU5wfWYQ//u+aen/e7KJD2AFsQX
j4rBYKEMrltDR5FL1ZoXX/nUh8HCjLfn4g8wGTeGrODcQgPmlKidrv0PJFGUzpII
0fxQ8ANAe4hZ7Q7drNJ3gjTcBpUC2JD5Leo31Rpg0Gcg19hCC0Wvgmje3WYkN5Ap
lBlGGSW4gNfL1IYoakRwJiNiqZ+Gb7+6kHDSVneFeO/qJakXzlByjAA6quPbYzSf
+AZxAeKCINT+b72x
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFdDCCBFygAwIBAgIQJ2buVutJ846r13Ci/ITeIjANBgkqhkiG9w0BAQwFADBv
MQswCQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFk
ZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBF
eHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFow
gYUxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAO
BgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVkMSswKQYD
VQQDEyJDT01PRE8gUlNBIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkq
hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAkehUktIKVrGsDSTdxc9EZ3SZKzejfSNw
AHG8U9/E+ioSj0t/EFa9n3Byt2F/yUsPF6c947AEYe7/EZfH9IY+Cvo+XPmT5jR6
2RRr55yzhaCCenavcZDX7P0N+pxs+t+wgvQUfvm+xKYvT3+Zf7X8Z0NyvQwA1onr
ayzT7Y+YHBSrfuXjbvzYqOSSJNpDa2K4Vf3qwbxstovzDo2a5JtsaZn4eEgwRdWt
4Q08RWD8MpZRJ7xnw8outmvqRsfHIKCxH2XeSAi6pE6p8oNGN4Tr6MyBSENnTnIq
m1y9TBsoilwie7SrmNnu4FGDwwlGTm0+mfqVF9p8M1dBPI1R7Qu2XK8sYxrfV8g/
vOldxJuvRZnio1oktLqpVj3Pb6r/SVi+8Kj/9Lit6Tf7urj0Czr56ENCHonYhMsT
8dm74YlguIwoVqwUHZwK53Hrzw7dPamWoUi9PPevtQ0iTMARgexWO/bTouJbt7IE
IlKVgJNp6I5MZfGRAy1wdALqi2cVKWlSArvX31BqVUa/oKMoYX9w0MOiqiwhqkfO
KJwGRXa/ghgntNWutMtQ5mv0TIZxMOmm3xaG4Nj/QN370EKIf6MzOi5cHkERgWPO
GHFrK+ymircxXDpqR+DDeVnWIBqv8mqYqnK8V0rSS527EPywTEHl7R09XiidnMy/
s1Hap0flhFMCAwEAAaOB9DCB8TAfBgNVHSMEGDAWgBStvZh6NLQm9/rEJlTvA73g
JMtUGjAdBgNVHQ4EFgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQD
AgGGMA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0gBAowCDAGBgRVHSAAMEQGA1UdHwQ9
MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9BZGRUcnVzdEV4dGVy
bmFsQ0FSb290LmNybDA1BggrBgEFBQcBAQQpMCcwJQYIKwYBBQUHMAGGGWh0dHA6
Ly9vY3NwLnVzZXJ0cnVzdC5jb20wDQYJKoZIhvcNAQEMBQADggEBAGS/g/FfmoXQ
zbihKVcN6Fr30ek+8nYEbvFScLsePP9NDXRqzIGCJdPDoCpdTPW6i6FtxFQJdcfj
Jw5dhHk3QBN39bSsHNA7qxcS1u80GH4r6XnTq1dFDK8o+tDb5VCViLvfhVdpfZLY
Uspzgb8c8+a4bmYRBbMelC1/kZWSWfFMzqORcUx8Rww7Cxn2obFshj5cqsQugsv5
B5a6SE2Q8pTIqXOi6wZ7I53eovNNVZ96YUWYGGjHXkBrI/V5eu+MtWuLt29G9Hvx
PUsE2JOAWVrgQSQdso8VYFhH2+9uRv0V9dlfmrPb2LjkQLPNlzmuhbsdjrzch5vR
pu/xO28QOG8=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU
MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs
IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290
MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux
FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h
bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v
dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt
H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9
uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX
mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX
a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN
E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0
WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD
VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0
Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU
cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx
IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN
AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH
YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5
6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC
Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX
c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a
mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=
-----END CERTIFICATE-----" > ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/domain.cacert
			fi
		fi
		if grep -m1 -q '^sslcertificatefile: ' ${SSL_DOMAIN_CONFIG_PATH}; then
			CERT_NAME="`grep -m1 '^sslcertificatefile: ' ${SSL_DOMAIN_CONFIG_PATH} | grep -o '[^/]*\.crt'`"
			if [ -s ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/sslcerts/${CERT_NAME} ]; then
				echo "Copying ${CERT_NAME} SSL certificate..."
				mv ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/sslcerts/${CERT_NAME} ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/domain.cert
			fi
		fi
		if grep -m1 -q '^sslcacertificatefile: ' ${SSL_DOMAIN_CONFIG_PATH}; then
			KEY_NAME="`grep -m1 '^sslcertificatekeyfile: ' ${SSL_DOMAIN_CONFIG_PATH} | grep -o '[^/]*\.key'`"
			if [ -s ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/sslkeys/${KEY_NAME} ]; then
				echo "Copying ${CERT_NAME} SSL private key..."
				mv ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/sslkeys/${KEY_NAME} ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/domain.key
			fi
		fi
	fi
	#We get it from apache_tls
	if [ ! -z "${ALIAS_DOMAIN}" ]; then
		APACHE_TLS_PATH=${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/apache_tls/${ALIAS_DOMAIN}
	else
		APACHE_TLS_PATH=${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/apache_tls/${CONVERTED_DOMAIN}
	fi
	#if [ -s ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/ssl/ssl.db ]; then
	if [ -s ${APACHE_TLS_PATH} ]; then
		openssl x509 -in ${APACHE_TLS_PATH} -out ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/domain.cert 2>&1
		openssl rsa -in ${APACHE_TLS_PATH} -out ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/domain.key 2>&1
		awk '/----BEGIN CERTIFICATE----/ { flag = 1; ++ctr } flag && ctr >= 2 { print } /-----END CERTIFICATE-----/ { flag = 0 }' ${APACHE_TLS_PATH} > ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/domain.cacert
		if [ ! -s ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/domain.cacert ]; then
			rm -f ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/domain.cacert
		fi
		if openssl x509 -issuer -in ${APACHE_TLS_PATH} -noout | grep -m1 -q "Let's Encrypt"; then
			CERT_DATE="`openssl x509 -startdate -in ${APACHE_TLS_PATH} -noout | cut -d= -f 2`"
			TIMESTAMP="`date --date=\"${CERT_DATE}\" +%s`"
			TIMESTAMP_LENGTH="`echo \"${TIMESTAMP}\" | wc -c`"
			if [ ${TIMESTAMP_LENGTH} -gt 10 ]; then
				echo "${TIMESTAMP}" > ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/domain.cert.creation_time
			else
				echo 0 > ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/domain.cert.creation_time
			fi
			SAN_CN="`openssl x509 -noout -subject -in ${APACHE_TLS_PATH} | cut -d= -f3`"
			SAN_NAMES="`openssl x509 -noout -text -in ${APACHE_TLS_PATH} | grep -m1 -A1 'Subject Alternative Name' | grep -o 'DNS:.*'`"
			cat <<< "
[ req ]
default_bits		= 4096
default_keyfile		= keyfile.pem
distinguished_name	= req_distinguished_name
attributes		= req_attributes
output_password		= bogus

[ req_distinguished_name ]
CN			= ${SAN_CN}
[ req_attributes ]
[ SAN ]
subjectAltName=${SAN_NAMES}" > ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/domain.san_config
		fi
	fi
	
	#Create subdomains.list and make sure subdomain path is correct
	CONVERTED_DOMAIN_SUBDOMAINS="${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/subdomain.list"
	echo -n '' > ${CONVERTED_DOMAIN_SUBDOMAINS}
	for i in `cat ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/sds | grep ${CONVERTED_DOMAIN}`; do {
		if grep -m1 -q "=${i}$" ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/addons; then
			echo "Skipping ${i} as subdomain, because it's an add-on domain..."
			continue
		fi
		SUBDOMAIN_PART=`echo ${i} | cut -d= -f2 | cut -d_ -f1`
		DOMAIN_PART=`echo ${i} | cut -d_ -f2`
		SUBDOCROOT="`grep \"^${SUBDOMAIN_PART}_${DOMAIN_PART}=\" ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/sds2 | cut -d= -f2`"
		if ! echo "${SUBDOCROOT}" | grep -m1 -q "public_html/${SUBDOMAIN_PART}$" && [ -d "${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/${SUBDOCROOT}" ]; then
			>&2 echo "WARNING! ${SUBDOMAIN_PART}.${DOMAIN_PART} path was set to custom in cPanel: ${SUBDOCROOT}"
			if ${DEFAULT_DOMAIN}; then
				if [ ! -d "${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/public_html/${SUBDOMAIN_PART}" ]; then
					echo "Renaming ${SUBDOCROOT} to public_html/${SUBDOMAIN_PART}"
					mv "${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/${SUBDOCROOT}" "${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/public_html/${SUBDOMAIN_PART}"
				else
					>&2 echo "WARNING! Not moving custom ${SUBDOMAIN_PART}.${DOMAIN_PART} path ${SUBDOCROOT} to DirectAdmin location, because public_html/${SUBDOMAIN_PART} folder also exists in public_html."
				fi
			else
				if [ ! -d "${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/public_html/${CONVERTED_DOMAIN}/${SUBDOMAIN_PART}" ] && [ -d "${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/public_html/${CONVERTED_DOMAIN}" ]; then
					echo "Renaming ${SUBDOCROOT} to public_html/${CONVERTED_DOMAIN}/${SUBDOMAIN_PART}"
					mv "${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/${SUBDOCROOT}" "${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/public_html/${CONVERTED_DOMAIN}/${SUBDOMAIN_PART}"
				else
					>&2 echo "WARNING! Not moving custom ${SUBDOMAIN_PART}.${DOMAIN_PART} path ${SUBDOCROOT} to DirectAdmin location, because public_html/${CONVERTED_DOMAIN}/${SUBDOMAIN_PART} folder also exists in public_html."
				fi
			fi
		elif ! ${DEFAULT_DOMAIN}; then
			if [ ! -d "${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/public_html/${CONVERTED_DOMAIN}/${SUBDOMAIN_PART}" ] && [ -d "${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/public_html/${CONVERTED_DOMAIN}" ] && [ -d "${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/public_html/${SUBDOMAIN_PART}" ]; then
				echo "Renaming public_html/${SUBDOMAIN_PART} to public_html/${CONVERTED_DOMAIN}/${SUBDOMAIN_PART}"
				mv "${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/public_html/${SUBDOMAIN_PART}" "${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/public_html/${CONVERTED_DOMAIN}/${SUBDOMAIN_PART}"
			fi
		fi
		
		if [ "${DOMAIN_PART}" = "${CONVERTED_DOMAIN}" ]; then
			echo "Converting subdomain ${SUBDOMAIN_PART}.${DOMAIN_PART}..."
			echo "${SUBDOMAIN_PART}" >> ${CONVERTED_DOMAIN_SUBDOMAINS}
		fi
	}
	done
	
	#Create DNS zone
	CONVERTED_DOMAIN_DNS="${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/${CONVERTED_DOMAIN}.db" 
	CPANEL_DNS_DATA=${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/dnszones/${CONVERTED_DOMAIN}.db
	if [ -s ${CPANEL_DNS_DATA} ]; then
		cp -f ${CPANEL_DNS_DATA} ${CONVERTED_DOMAIN_DNS}
		perl -pi -e "s|${CONVERTED_DOMAIN}.*IN.SOA|@\tIN\tSOA|g" ${CONVERTED_DOMAIN_DNS}
		# Change DKIM records to have quoted strings
		#for i in `grep DKIM1 ${CONVERTED_DOMAIN_DNS} | grep -o '" [a-zA-Z0-9+]*$' | awk '{print $2}'`; do { REPLACE=`echo "${i}" | perl -p0 -e 's|\+|\\\\+|g' | perl -p0 -e 's|\/|\\\\/|g'`; perl -pi -e "s|${REPLACE}|\"${i}\"|g" ${CONVERTED_DOMAIN_DNS}; }; done
		sed -i '/DKIM1/d' ${CONVERTED_DOMAIN_DNS}
		perl -pi -e 's|^;.*||g' ${CONVERTED_DOMAIN_DNS}
	else
		cat <<< "\$TTL 14400
@       IN      SOA     ${NS1}.      hostmaster.${CONVERTED_DOMAIN}. (
												2003120200
												14400
												3600
												1209600
												86400 )

${CONVERTED_DOMAIN}.     14400   IN      NS      ${NS1}.
${CONVERTED_DOMAIN}.     14400   IN      NS      ${NS2}.

ftp     14400   IN      A       ${DEFAULT_IP}
${CONVERTED_DOMAIN}.     14400   IN      A       ${DEFAULT_IP}
mail    14400   IN      A       ${DEFAULT_IP}
pop    14400   IN      A       ${DEFAULT_IP}
smtp    14400   IN      A       ${DEFAULT_IP}
www     14400   IN      A       ${DEFAULT_IP}" > ${CONVERTED_DOMAIN_DNS}
	
		#Subdomain DNS records
		for i in `cat ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/sds | grep ${CONVERTED_DOMAIN}`; do {
			SUBDOMAIN_PART=`echo ${i} | cut -d= -f2 | cut -d_ -f1`
			#Create temporary DNS records list
			echo "${SUBDOMAIN_PART}     14400   IN      A       ${DEFAULT_IP}" >> ${CONVERTED_DOMAIN_DNS}
		}
		done
	
		# Copy MX records
		if [ -s ${CPANEL_DNS_DATA} ]; then
			grep 'IN.*MX' ${CPANEL_DNS_DATA} >> ${CONVERTED_DOMAIN_DNS}
		fi
	fi
	
	#Create empty email data directory
	mkdir -p ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/email/data
	
	#Move data for non-default domains
	if ! ${DEFAULT_DOMAIN}; then
		if [ -z "${ALIAS_DOMAIN}" ]; then
			echo "Moving add-on domains data"
			PATH_TO_FILES=`grep '^documentroot: ' ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/userdata/${ASSOCIATED_SUBDOMAIN} | awk '{print $2}' | perl -p0 -e "s|/home/${USERNAME}/||g"`
			if [ "${PATH_TO_FILES}" != "public_html" ]; then
				if [ -d ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/${PATH_TO_FILES} ]; then
					mv ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/${PATH_TO_FILES} ${DIRECTADMIN_BACKUPS}/${USERNAME}/domains/${CONVERTED_DOMAIN}/public_html
				else
					mkdir -p ${DIRECTADMIN_BACKUPS}/${USERNAME}/domains/${CONVERTED_DOMAIN}/public_html
				fi
			else
				echo "|?DOCROOT=/home/${USERNAME}/${PATH_TO_FILES}|" > ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/domain.cust_httpd
			fi
		fi
	fi
	
	if [ ! -z "${ALIAS_DOMAIN}" ]; then
		echo "|?DOCROOT=/home/${USERNAME}/domains/${ALIAS_DOMAIN}/public_html|" > ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/domain.cust_httpd
	fi

	#Create dependencies
	touch ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/email/autoresponder.conf
	echo 'catchall=:fail:' > ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/email/email.conf
	touch ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/email/vacation.conf
	
	#Copy email aliases
	echo "${USERNAME}:${USERNAME}" > ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/email/aliases
	if [ -s ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/va/${CONVERTED_DOMAIN} ]; then
			echo "Copying email aliases..."
			grep -v '^*:' ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/va/${CONVERTED_DOMAIN} | grep -v "${USERNAME}: " | perl -p0 -e "s|\@${CONVERTED_DOMAIN}:|:|g" | perl -p0 -e 's|: |:|g' >> ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/email/aliases
			for autoresponder in `grep '/usr/local/cpanel/bin/autorespond' ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/email/aliases | cut -d: -f1`; do {
				AUTORESPONDER_FILE=`grep "^${autoresponder}:" ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/email/aliases | grep -o "/usr/local/cpanel/bin/autorespond [^ ]*" | head -n1 | awk '{print $2}'`
				if [ -s "${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/.autorespond/${AUTORESPONDER_FILE}" ]; then
					CURRENT_TIMESTAMP=`date +%s`
					if [ -e "${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/.autorespond/${AUTORESPONDER_FILE}.json" ]; then
						BACKUP_AUTORESPONDER=false
						STOP_TIMESTAMP=`grep -o 'stop":[0-9]*' "${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/.autorespond/${AUTORESPONDER_FILE}.json" | cut -d: -f2`
						if [ ${CURRENT_TIMESTAMP} -lt ${STOP_TIMESTAMP} ]; then
							BACKUP_AUTORESPONDER=true
						fi
					fi
					if ${BACKUP_AUTORESPONDER}; then
						echo "Creating ${autoresponder}@${CONVERTED_DOMAIN} autoresponder..."
						echo "${autoresponder}:" >> ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/email/autoresponder.conf
						if [ ! -d ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/email/reply ]; then
							mkdir -p ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/email/reply
						fi
						awk -v 'RS=\n\n' '1;{exit}' "${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/.autorespond/${AUTORESPONDER_FILE}" > ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/email/reply/${autoresponder}.headers
						perl -pi -e 's|utf-8|UTF-8|g' ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/email/reply/${autoresponder}.headers
						perl -pi -e 's|Content-type:|Content-Type:|g' ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/email/reply/${autoresponder}.headers
						if grep -m1 -q '^Subject: ' ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/email/reply/${autoresponder}.headers; then
							grep -m1 '^Subject: ' ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/email/reply/${autoresponder}.headers | perl -p0 -e 's|Subject: ||g' | tr -cd 'a-zA-Z0-9 ' > ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/email/reply/${autoresponder}.subject
							perl -ni -e "print unless /^Subject:/" ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/email/reply/${autoresponder}.headers
						else
							echo 'Vacation' > ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/email/reply/${autoresponder}.subject
						fi
						echo -n '2d' > ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/email/reply/${autoresponder}.once_time
						HEADER_LINES=`cat ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/email/reply/${autoresponder}.headers | wc -l`
						HEADER_LINES=`expr ${HEADER_LINES} + 1`
						tail -n +${HEADER_LINES} "${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/.autorespond/${AUTORESPONDER_FILE}" > ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/email/reply/${autoresponder}.msg
						perl -ni -e "print unless /^${autoresponder}:/" ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/email/aliases
					fi
				fi
			}
			done
	fi
	
	#Convert RoundCube data
	if [ -s ${WORKDIR}/php_sql_parser/PHPSQLParser.php ] && [ -e ${WORKDIR} ] && [ -s ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/mysql/roundcube.sql ]; then
		NO_OF_LINES=`head -n2 ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/mysql/roundcube.sql | wc -l`
		if [ ${NO_OF_LINES} -gt 1 ]; then
			echo "Generating roundcube.xml..."
			if ${DEFAULT_DOMAIN}; then
				SCRIPT_ARG="is_maindomain=1"
			else
				SCRIPT_ARG="is_maindomain=0"
			fi
			/usr/local/bin/php ${WORKDIR}/cpanel_da_roundcube.php ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/mysql/roundcube.sql ${CONVERTED_DOMAIN} ${SCRIPT_ARG} ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup 2>&1
		fi
	fi
	
	#Convert RoundCube data from sqlite
	if [ -s ${WORKDIR}/cpanel_sqlite_da_roundcube.php ] && [ -e ${WORKDIR} ]; then
		/usr/local/bin/php ${WORKDIR}/cpanel_sqlite_da_roundcube.php --output=${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/email/data/roundcube.xml --pattern=${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/etc/${CONVERTED_DOMAIN}/*.rcube.db >/dev/null
	fi

	#Transfer emails
	if [ ! -s ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/email/passwd ]; then
		echo -n '' > ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/email/passwd
	fi

	if [ -s ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/etc/${CONVERTED_DOMAIN}/shadow ]; then
		for i in `cat ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/etc/${CONVERTED_DOMAIN}/shadow`; do {
			EMAIL_USER="`echo \"${i}\" | cut -d: -f1`"
			EMAIL_PASSWORD="`echo \"${i}\" | cut -d: -f2 | perl -pi -e 's|\*LOCKED\*||g'`"
			echo "${EMAIL_USER}:${EMAIL_PASSWORD}" >> ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/email/passwd
			mkdir -p ${DIRECTADMIN_BACKUPS}/${USERNAME}/imap/${CONVERTED_DOMAIN}/${EMAIL_USER}
			echo "Moving email data of ${EMAIL_USER}@${CONVERTED_DOMAIN}"
			MAILBOX_FORMAT=maildir
			if [ -s ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/mail/mailbox_format.cpanel ]; then
				if grep -m1 -q mdbox ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/mail/mailbox_format.cpanel; then
					MAILBOX_FORMAT=mdbox
				fi
			fi
			if [ "${MAILBOX_FORMAT}" != "mdbox" ]; then
				if [ -d ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/mail/${CONVERTED_DOMAIN}/${EMAIL_USER} ]; then
					mv ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/mail/${CONVERTED_DOMAIN}/${EMAIL_USER} ${DIRECTADMIN_BACKUPS}/${USERNAME}/imap/${CONVERTED_DOMAIN}/${EMAIL_USER}/Maildir
				else
					echo "Not moving ${EMAIL_USER}@${CONVERTED_DOMAIN}, as it was likely moved already to the parent (main) domain."
				fi
			else
				if [ -x /usr/bin/doveadm ]; then
					echo "Converting mdbox email data to maildir format..."
					mkdir -p ${DIRECTADMIN_BACKUPS}/${USERNAME}/imap/${CONVERTED_DOMAIN}/${EMAIL_USER}/Maildir
					chown mail. ${DIRECTADMIN_BACKUPS}/${USERNAME}/imap/${CONVERTED_DOMAIN}/${EMAIL_USER}/Maildir
					# we don't have any real user yet (not restored), so, as we use mail user as "-u" for doveadm, we need to give it privileges to read the files
					chown -R mail. ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/mail/${CONVERTED_DOMAIN}/${EMAIL_USER}
					doveadm -o first_valid_uid=1 -o namespace=inbox -o namespace/inbox/inbox=yes -o namespace/inbox/separator=. -o mail_location=mdbox:${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/mail/${CONVERTED_DOMAIN}/${EMAIL_USER} backup -u mail maildir:${DIRECTADMIN_BACKUPS}/${USERNAME}/imap/${CONVERTED_DOMAIN}/${EMAIL_USER}/Maildir
				else
					>&2 echo "WARNING! Unable to find /usr/bin/doveadm, skipping conversion of mdbox to maildir."
					EXIT_CODE=2
				fi
			fi
			if [ -s ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/email/data/imap/${EMAIL_USER}/Maildir/courierimapsubscribed ]; then
				mv ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/email/data/imap/${EMAIL_USER}/Maildir/courierimapsubscribed ${DIRECTADMIN_BACKUPS}/${USERNAME}/imap/${CONVERTED_DOMAIN}/${EMAIL_USER}/.mailboxlist
			fi
		}
		done
		mkdir -p ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/email/data/imap
		touch ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/email/data/imap/.direct_imap_backup
	else
		echo "No emails to transfer for ${CONVERTED_DOMAIN}."
	fi
	rm -rf ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/mail/${CONVERTED_DOMAIN}
}

#Creating domain pointers
echo "Adding domain aliases..."
for i in `ls ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/vad`; do {
	if [ "${i}" = "${DEFAULT_DOMAIN_NAME}" ]; then
		continue
	fi
	if cat ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/sds | tr '_' '.' | grep -m1 -q "^${i}$"; then
		continue
	fi
	FORWARDER_PARENT_DOMAIN="`awk '{print $2}' ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/vad/${i}`"
	if [ "${FORWARDER_PARENT_DOMAIN}" = "" ]; then
		FORWARDER_PARENT_DOMAIN=${DEFAULT_DOMAIN_NAME}
	fi
	if [ -s ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/etc/${i}/shadow ] && [ -s ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/etc/${FORWARDER_PARENT_DOMAIN}/shadow ]; then
		DUPLICATE_EMAIL=false
		for i in `cat ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/etc/${FORWARDER_PARENT_DOMAIN}/shadow`; do {
			EMAIL_USER="`echo \"${i}\" | cut -d: -f1`"
			if grep -m1 -q "^${EMAIL_USER}:" ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/etc/${i}/shadow; then 
				DUPLICATE_EMAIL=true
			fi
		}
		done
		if ${DUPLICATE_EMAIL}; then
			>&2 echo "WARNING! Creating ${i} as a regular domain, not a domain alias of ${FORWARDER_PARENT_DOMAIN}, because it contains email accounts. Docroot will be set to one of ${FORWARDER_PARENT_DOMAIN} using Custom HTTPd Configuration."
			EXIT_CODE=2
			doConvertDomain ${i} false '' ${FORWARDER_PARENT_DOMAIN}
			continue
		fi
	fi
	mkdir -p ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${FORWARDER_PARENT_DOMAIN}
	touch ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${FORWARDER_PARENT_DOMAIN}/domain.pointers

	#Transfer emails
	if [ -s ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/etc/${i}/shadow ]; then
		if [ ! -s ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${FORWARDER_PARENT_DOMAIN}/email/passwd ]; then
			if [ ! -d ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${FORWARDER_PARENT_DOMAIN}/email ]; then
				mkdir -p ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${FORWARDER_PARENT_DOMAIN}/email
			fi
			echo -n '' > ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${FORWARDER_PARENT_DOMAIN}/email/passwd
		fi
		for e in `cat ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/etc/${i}/shadow`; do {
			EMAIL_USER="`echo \"${e}\" | cut -d: -f1`"
			EMAIL_PASSWORD="`echo \"${e}\" | cut -d: -f2 | perl -pi -e 's|\*LOCKED\*||g'`"
			if ! grep -m1 -q "^${EMAIL_USER}:" ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${FORWARDER_PARENT_DOMAIN}/email/passwd; then
				echo "${EMAIL_USER}:${EMAIL_PASSWORD}" >> ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${FORWARDER_PARENT_DOMAIN}/email/passwd
				mkdir -p ${DIRECTADMIN_BACKUPS}/${USERNAME}/imap/${FORWARDER_PARENT_DOMAIN}/${EMAIL_USER}
				echo "Moving email data of ${EMAIL_USER}@${FORWARDER_PARENT_DOMAIN}"
				MAILBOX_FORMAT=maildir
				if [ -s ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/mail/mailbox_format.cpanel ]; then
					if grep -m1 -q mdbox ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/mail/mailbox_format.cpanel; then
						MAILBOX_FORMAT=mdbox
					fi
				fi
				if [ "${MAILBOX_FORMAT}" != "mdbox" ]; then
					if [ -d ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/mail/${FORWARDER_PARENT_DOMAIN}/${i}/${EMAIL_USER} ]; then
						mv ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/mail/${FORWARDER_PARENT_DOMAIN}/${i}/${EMAIL_USER} ${DIRECTADMIN_BACKUPS}/${USERNAME}/imap/${FORWARDER_PARENT_DOMAIN}/${EMAIL_USER}/Maildir
					else
						mv ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/mail/${i}/${EMAIL_USER} ${DIRECTADMIN_BACKUPS}/${USERNAME}/imap/${FORWARDER_PARENT_DOMAIN}/${EMAIL_USER}/Maildir
					fi
				else
					if [ -x /usr/bin/doveadm ]; then
						echo "Converting mdbox email data to maildir format..."
						mkdir -p ${DIRECTADMIN_BACKUPS}/${USERNAME}/imap/${FORWARDER_PARENT_DOMAIN}/${EMAIL_USER}/Maildir
						chown mail. ${DIRECTADMIN_BACKUPS}/${USERNAME}/imap/${FORWARDER_PARENT_DOMAIN}/${EMAIL_USER}/Maildir
						# we don't have any real user yet (not restored), so, as we use mail user as "-u" for doveadm, we need to give it privileges to read the files
						if [ -d ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/mail/${FORWARDER_PARENT_DOMAIN}/${i}/${EMAIL_USER} ]; then
							chown -R mail. ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/mail/${FORWARDER_PARENT_DOMAIN}/${i}/${EMAIL_USER}
							doveadm -o first_valid_uid=1 -o namespace=inbox -o namespace/inbox/inbox=yes -o namespace/inbox/separator=. -o mail_location=mdbox:${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/mail/${FORWARDER_PARENT_DOMAIN}/${i}/${EMAIL_USER} backup -u mail maildir:${DIRECTADMIN_BACKUPS}/${USERNAME}/imap/${FORWARDER_PARENT_DOMAIN}/${EMAIL_USER}/Maildir
						else
							chown -R mail. ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/mail/${i}/${EMAIL_USER}
							doveadm -o first_valid_uid=1 -o namespace=inbox -o namespace/inbox/inbox=yes -o namespace/inbox/separator=. -o mail_location=mdbox:${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/mail/${i}/${EMAIL_USER} backup -u mail maildir:${DIRECTADMIN_BACKUPS}/${USERNAME}/imap/${FORWARDER_PARENT_DOMAIN}/${EMAIL_USER}/Maildir
						fi
					else
						>&2 echo "WARNING! Unable to find /usr/bin/doveadm, skipping conversion of mdbox to maildir."
						EXIT_CODE=2
					fi
				fi
				if [ -s ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${i}/email/data/imap/${EMAIL_USER}/Maildir/courierimapsubscribed ]; then
					cat ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${i}/email/data/imap/${EMAIL_USER}/Maildir/courierimapsubscribed >> ${DIRECTADMIN_BACKUPS}/${USERNAME}/imap/${FORWARDER_PARENT_DOMAIN}/${EMAIL_USER}/.mailboxlist
				fi
			else
				>&2 echo "WARNING! Skipping ${EMAIL_USER}@${i}, because ${i} is a domain alias of ${FORWARDER_PARENT_DOMAIN}, and ${EMAIL_USER}@${FORWARDER_PARENT_DOMAIN} already exists"
				EXIT_CODE=2
			fi
		}
		done
		mkdir -p ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${FORWARDER_PARENT_DOMAIN}/email/data/imap
		touch ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${FORWARDER_PARENT_DOMAIN}/email/data/imap/.direct_imap_backup
	else
		echo "No emails to transfer for ${i}."
	fi

	echo "${i}=alias" >> ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${FORWARDER_PARENT_DOMAIN}/domain.pointers
	#Create DNS zone
	CPANEL_POINTER_DNS_DATA=${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/dnszones/${i}.db
	CONVERTED_POINTER_DNS="${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${FORWARDER_PARENT_DOMAIN}/${i}.db"
	if [ -s ${CPANEL_POINTER_DNS_DATA} ]; then
		cp -f ${CPANEL_POINTER_DNS_DATA} ${CONVERTED_POINTER_DNS}
		perl -pi -e "s|${i}.*IN.SOA|@\tIN\tSOA|g" ${CONVERTED_POINTER_DNS}
		#for i in `grep DKIM1 ${CONVERTED_POINTER_DNS} | grep -o '" [a-zA-Z0-9+]*$' | awk '{print $2}'`; do { REPLACE=`echo "${i}" | perl -p0 -e 's|\+|\\\\+|g' | perl -p0 -e 's|\/|\\\\/|g'`; perl -pi -e "s|${REPLACE}|\"${i}\"|g" ${CONVERTED_POINTER_DNS}; }; done
		sed -i '/DKIM1/d' ${CONVERTED_POINTER_DNS}
		perl -pi -e 's|^;.*||g' ${CONVERTED_POINTER_DNS}
	else
		cat <<< "\$TTL 14400
@       IN      SOA     ${NS1}.      hostmaster.${i}. (
												2003120200
												14400
												3600
												1209600
												86400 )

${i}.     14400   IN      NS      ${NS1}.
${i}.     14400   IN      NS      ${NS2}.

ftp     14400   IN      A       ${DEFAULT_IP}
${i}.     14400   IN      A       ${DEFAULT_IP}
mail    14400   IN      A       ${DEFAULT_IP}
pop    14400   IN      A       ${DEFAULT_IP}
smtp    14400   IN      A       ${DEFAULT_IP}
www     14400   IN      A       ${DEFAULT_IP}" > ${CONVERTED_POINTER_DNS}
		# Copy MX records
		if [ -s ${CPANEL_POINTER_DNS_DATA} ]; then
			grep 'IN.*MX' ${CPANEL_POINTER_DNS_DATA} >> ${CONVERTED_POINTER_DNS}
		fi
	fi
}
done

#Convert default domain
doConvertDomain ${DEFAULT_DOMAIN_NAME} true

# Convert addon domains
for i in `cat ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/addons | grep '='`; do {
	ADDON_DOMAIN=`echo ${i} | cut -d= -f1`
	ASSOCIATED_SUBDOMAIN=`echo ${i} | cut -d= -f2 | tr '_' '.'`
	doConvertDomain ${ADDON_DOMAIN} false ${ASSOCIATED_SUBDOMAIN}
}
done

#Move squirrelmail data
if [ -e ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/.sqmaildata ]; then
	echo "Moving squirrelmail data"
	if [ ! -d ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/email_data ]; then
		mkdir -p ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/email_data
	fi
	mv ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/.sqmaildata ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/email_data/squirrelmail
fi

#Move main domain
echo "Moving default domain ${DEFAULT_DOMAIN_NAME} data..."
if [ -d ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/public_html ]; then
	mv ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/public_html ${DIRECTADMIN_BACKUPS}/${USERNAME}/domains/${DEFAULT_DOMAIN_NAME}/public_html
else
	mkdir -p ${DIRECTADMIN_BACKUPS}/${USERNAME}/domains/${DEFAULT_DOMAIN_NAME}/public_html
fi

#Move user emails
echo "Moving main email account..."
MAILBOX_FORMAT=maildir
if [ -s ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/mail/mailbox_format.cpanel ]; then
	if grep -m1 -q mdbox ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/mail/mailbox_format.cpanel; then
		MAILBOX_FORMAT=mdbox
	fi
fi
if [ "${MAILBOX_FORMAT}" != "mdbox" ]; then
	mv ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/mail ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/Maildir
else
	if [ -x /usr/bin/doveadm ]; then
		echo "Converting mdbox email data to maildir format..."
		mkdir -p ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/Maildir
		chown mail. ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/Maildir
		# we don't have any real user yet (not restored), so, as we use mail user as "-u" for doveadm, we need to give it privileges to read the files
		chown -R mail. ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/mail
		doveadm -o first_valid_uid=1 -o namespace=inbox -o namespace/inbox/inbox=yes -o namespace/inbox/separator=. -o mail_location=mdbox:${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/mail backup -u mail maildir:${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/Maildir
	else
		>&2 echo "WARNING! Unable to find /usr/bin/doveadm, skipping conversion of mdbox to maildir."
		EXIT_CODE=2
	fi
fi

echo "Removing symlinks from main email account and home folder:"
find ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/Maildir -maxdepth 1 -name '.*' -type l -delete -print
find ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir -maxdepth 1 -type l -delete -print
find ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir -maxdepth 3 -name 'public_html' -type l -delete -print
if [ -d ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/mail ]; then
	echo "Renaming mail/ folder (in case something missing is still there), all converted to imap/"
	mv ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/mail ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/.mail_unused_folder_from_cpanel
fi
tar czfp ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/home.tar.gz -C ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir . --exclude=cpbackup-exclude.conf --exclude=.cphorde --exclude=.gemrc --exclude=.contactemail --exclude=.lastlogin --exclude=.cpanel --exclude=tmp --exclude=ssl --exclude=logs --exclude=.zshrc --exclude=.cpaddons --exclude=cpanel3-skel

#Create dependencies
touch ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/bandwidth.tally
touch ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/user.usage

#Convert cronjobs
if [ -s ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/cron/${USERNAME} ]; then
	NUMBER=0
	echo -n '' > ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/crontab.conf
	echo "Converting cronjobs..."
	grep '^[0-9*]' ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/cron/${USERNAME} > ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/cron/${USERNAME}_cronlines
	while read i; do NUMBER=`expr $NUMBER + 1`; echo "${NUMBER}=${i}" >> ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/crontab.conf; done < ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/cron/${USERNAME}_cronlines
	#Fix softaculous cronjobs
	perl -pi -e 's|/usr/local/cpanel/3rdparty/bin/php|/usr/local/bin/php|g' ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/crontab.conf
	perl -pi -e 's|/usr/local/cpanel/whostmgr/docroot/cgi/softaculous|/usr/local/directadmin/plugins/softaculous|g' ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/crontab.conf
fi
	
#Generate user.conf
DA_USER_CONF=${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/user.conf
cat <<< "account=ON
additional_bandwidth=0
aftp=ON
api_with_password=yes
bandwidth=${CPANEL_BWLIMIT}
catchall=ON
cgi=ON
creator=${CPANEL_OWNER}
cron=ON
dnscontrol=ON
docsroot=./data/skins/evolution
domain=${DEFAULT_DOMAIN_NAME}
domainptr=${CPANEL_MAXPARK}
email=${CUSTOMER_EMAIL}
ftp=${CPANEL_MAXFTP}
inode=unlimited
ip=${DEFAULT_IP}
language=en
login_keys=OFF
mysql=${CPANEL_MAXSQL}
name=${USERNAME}
nemailf=${CPANEL_MAXPOP}
nemailml=${CPANEL_MAXLST}
nemailr=unlimited
nemails=unlimited
notify_on_all_question_failures=yes
notify_on_all_twostep_auth_failures=yes
ns1=${NS1}
ns2=${NS2}
nsubdomains=${CPANEL_MAXSUB}
package=${CPANEL_PLAN}
php=ON
quota=${CPANEL_QUOTA}
security_questions=no
sentwarning=no
skin=evolution
spam=ON
ssh=ON
ssl=ON
suspend_at_limit=ON
suspended=${ACCOUNT_SUSPENDED}
sysinfo=ON
twostep_auth=no
username=${USERNAME}
usertype=user
vdomains=${CPANEL_MAXADDON}
zoom=100" > ${DA_USER_CONF}

#Generate user_ip.list
if [ ! -e ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/user_ip.list ]; then
	if grep -m1 -q "^ip=" ${DA_USER_CONF}; then
		grep "^ip=" ${DA_USER_CONF} | cut -d= -f2 > ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/user_ip.list
	fi
fi

#Create MySQL databases/users
CPANEL_SQL_FILE=${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/mysql.sql
for i in `grep -o 'ON \`.*' ${CPANEL_SQL_FILE} | awk '{print $2}' | cut -d\\\` -f2 | sort | uniq | tr -d '\\\'`; do {
	if [ "${i}" = "${USERNAME}_%" ]; then
		echo "Skipping ${USERNAME}_%..."
		continue
	fi
	if [ ! -e ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/mysql/${i}.sql ]; then
		echo "Skipping ${i}, because database file not found in cPanel backup..."
		continue
	fi
	
	DA_DATABASE_CONF="${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${i}.conf"
	DATABASE_NAME="${i}"
	if echo "${i}" | grep -m1 -q '_'; then
		DA_DATABASE_FIRST_PART="`echo \"${i}\" | cut -d_ -f1`"
		DA_DATABASE_WITHOUT_FIRST_PART="`echo \"${i}\" | perl -p0 -e \"s|^${DA_DATABASE_FIRST_PART}_||g\"`"
		if [ "${DA_DATABASE_FIRST_PART}" != "${USERNAME}" ]; then
			>&2 echo "WARNING! ${DA_DATABASE_FIRST_PART}_${DA_DATABASE_WITHOUT_FIRST_PART} cannot be owned by ${USERNAME}, renaming database user to ${USERNAME}_${DA_DATABASE_WITHOUT_FIRST_PART}"
			EXIT_CODE=2
			DA_DATABASE_CONF="${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${USERNAME}_${DA_DATABASE_WITHOUT_FIRST_PART}.conf"
			DATABASE_NAME="${USERNAME}_${DA_DATABASE_WITHOUT_FIRST_PART}"
		fi
	fi
	echo -n '' > ${DA_DATABASE_CONF}
	ACCESSHOSTS_STRING="accesshosts"
	COUNTER=0
	ESCAPED_DB_NAME=`echo "${i}" | perl -p0 -e 's|\_|\\\\\\\\_|g'`
	echo -n '' > ${DA_DATABASE_CONF}.tmp
	USERNAMES_REPLACED=":"
	for u in `grep -o "ON \\\`${ESCAPED_DB_NAME}\\\`.*TO '[^ ]*" ${CPANEL_SQL_FILE} | awk '{print $4}' | tr -d ';'`; do {
		COLLATION=""
		if [ -s ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/mysql/${i}.create ]; then
			COLLATION="`grep -o 'DEFAULT CHARACTER SET [^ ]*' ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/mysql/${i}.create | awk '{print $4}'`"
		fi
		if [ "${COLLATION}" = "" ]; then
			COLLATION="latin1"
		fi
		if ! grep -m1 -q "^db_collation=" ${DA_DATABASE_CONF}.tmp; then
			echo "db_collation=CATALOG_NAME=def&DEFAULT_CHARACTER_SET_NAME=${COLLATION}&DEFAULT_COLLATION_NAME=latin1_swedish_ci&SCHEMA_NAME=${DATABASE_NAME}&SQL_PATH=" >> ${DA_DATABASE_CONF}.tmp
		fi
		PASSWORD="`grep 'IDENTIFIED BY PASSWORD' ${CPANEL_SQL_FILE} | grep \"TO ${u}[^ ]*\" | grep -m1 -o \"IDENTIFIED BY PASSWORD '\*[^ ]*\" | cut -d\' -f2 | perl -p0 -e 's|^-|*|g'`"
		if [ "${PASSWORD}" = "" ]; then
			>&2 echo "WARNING: unable to find database user password for ${u}"
			EXIT_CODE=2
		fi
		USERNAME_PART="`echo \"${u}\" | cut -d\@ -f1 | cut -d\' -f2`"
		if echo "${USERNAME_PART}" | grep -m1 -q '_'; then
			USERNAME_FIRST_PART="`echo \"${USERNAME_PART}\" | cut -d_ -f1`"
			USERNAME_WITHOUT_FIRST_PART="`echo \"${USERNAME_PART}\" | perl -p0 -e \"s|^${USERNAME_FIRST_PART}_||g\"`"
			if [ "${USERNAME_FIRST_PART}" != "${USERNAME}" ] && ! echo "${USERNAMES_REPLACED}" | grep -m1 -q ":${USERNAME_FIRST_PART}_${USERNAME_WITHOUT_FIRST_PART}:"; then
				>&2 echo "WARNING! ${USERNAME_FIRST_PART}_${USERNAME_WITHOUT_FIRST_PART} username cannot be set to ${USERNAME}, renaming database user to ${USERNAME}_${USERNAME_WITHOUT_FIRST_PART}"
				EXIT_CODE=2
				USERNAME_PART="${USERNAME}_${USERNAME_WITHOUT_FIRST_PART}"
				#Auto-find and replace old MySQL username with new one, with making a copy of the file before that, max 3 levels depth for efficiency
				if [ "${USERNAME_FIRST_PART}" != "" ]; then
					>&2 echo "Trying to find files in public_html to rename ${USERNAME_FIRST_PART}_${USERNAME_WITHOUT_FIRST_PART} to ${USERNAME_PART}. A copy of the file will have '.cpanel_backup_copy.php' appended at the end."
					>&2 find ${DIRECTADMIN_BACKUPS}/${USERNAME}/domains/*/public_html -maxdepth 3 \( -name "*.php" -o -name '.env' \) ! -name '*.cpanel_backup_copy.php' -exec grep -m1 -l "${USERNAME_FIRST_PART}_${USERNAME_WITHOUT_FIRST_PART}" {} \; -exec cp -pf {} "{}.cpanel_backup_copy.php" \; -exec perl -pi -e "s|${USERNAME_FIRST_PART}_${USERNAME_WITHOUT_FIRST_PART}|${USERNAME_PART}|g" {} \;
				fi
				USERNAMES_REPLACED="${USERNAMES_REPLACED}${USERNAME_FIRST_PART}_${USERNAME_WITHOUT_FIRST_PART}:"
			fi
		fi
		ACCESSHOST_PART="`echo \"${u}\" | cut -d\@ -f2 | cut -d\' -f2`"
		if ! echo "${ACCESSHOSTS_STRING}" | grep -m1 -q "=${ACCESSHOST_PART}$"; then
			if ! echo "${ACCESSHOSTS_STRING}" | grep -m1 -q "=${ACCESSHOST_PART}&"; then
				if [ ${COUNTER} -eq 0 ]; then
					ACCESSHOSTS_STRING="${ACCESSHOSTS_STRING}=${COUNTER}=${ACCESSHOST_PART}"
				else
					ACCESSHOSTS_STRING="${ACCESSHOSTS_STRING}&${COUNTER}=${ACCESSHOST_PART}"
				fi
				COUNTER=`expr ${COUNTER} + 1`
			fi
		fi
		if ! grep -m1 -q "^${USERNAME_PART}=" ${DA_DATABASE_CONF}.tmp; then
			echo "Creating database user ${USERNAME_PART} for database ${i}..."
			echo "${USERNAME_PART}=alter_priv=Y&alter_routine_priv=Y&create_priv=Y&create_routine_priv=Y&create_tmp_table_priv=Y&create_view_priv=Y&delete_priv=Y&drop_priv=Y&event_priv=Y&execute_priv=Y&grant_priv=N&index_priv=Y&insert_priv=Y&lock_tables_priv=Y&passwd=${PASSWORD}&references_priv=Y&select_priv=Y&show_view_priv=Y&trigger_priv=Y&update_priv=Y" >> ${DA_DATABASE_CONF}.tmp
		fi
		if ! grep -m1 -q "^${USERNAME}=" ${DA_DATABASE_CONF}.tmp; then
			PASSWORD="`grep 'IDENTIFIED BY PASSWORD' ${CPANEL_SQL_FILE} | grep \"TO '${USERNAME}'[^ ]*\" | grep -m1 -o \"IDENTIFIED BY PASSWORD '\*[^ ]*\" | cut -d\' -f2 | perl -p0 -e 's|^-|*|g'`"
			if [ "${PASSWORD}" != "" ]; then
				echo "Creating database user ${USERNAME} for database ${i}..."
				echo "${USERNAME}=alter_priv=Y&alter_routine_priv=Y&create_priv=Y&create_routine_priv=Y&create_tmp_table_priv=Y&create_view_priv=Y&delete_priv=Y&drop_priv=Y&event_priv=Y&execute_priv=Y&grant_priv=N&index_priv=Y&insert_priv=Y&lock_tables_priv=Y&passwd=${PASSWORD}&references_priv=Y&select_priv=Y&show_view_priv=Y&trigger_priv=Y&update_priv=Y" >> ${DA_DATABASE_CONF}.tmp
			fi
		fi

	}
	done
	echo ${ACCESSHOSTS_STRING} > ${DA_DATABASE_CONF}
	cat ${DA_DATABASE_CONF}.tmp >> ${DA_DATABASE_CONF}
	rm -f ${DA_DATABASE_CONF}.tmp
	if [ -e ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/mysql/${i}.sql ]; then
		echo "Moving database ${i} files..."
		mv ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/mysql/${i}.sql ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${DATABASE_NAME}.sql
	fi
}
done

if [ -d ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/psql ]; then
	NUMBER_OF_FILES=`ls ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/psql/ | wc -l`
	if [ ${NUMBER_OF_FILES} -gt 0 ]; then
		>&2 echo "WARNING! PostgreSQL databases detected in pgsql/, these will not be restored:"
		>&2 ls ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/psql/
		EXIT_CODE=2
	fi
fi

if [ -d ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/mma/priv ]; then
	NUMBER_OF_FILES=`ls ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/mma/priv/ | wc -l`
	if [ ${NUMBER_OF_FILES} -gt 0 ]; then
		>&2 echo "WARNING! Mailman files detected in mma/priv/, these will not be restored:"
		>&2 ls ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/mma/priv/
		EXIT_CODE=2
	fi
fi

if [ -d ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/mma/pub ]; then
	NUMBER_OF_FILES=`ls ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/mma/pub/ | wc -l`
	if [ ${NUMBER_OF_FILES} -gt 0 ]; then
		>&2 echo "WARNING! Mailman files detected in mma/pub/, these will not be restored:"
		>&2 ls ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/mma/pub/
		EXIT_CODE=2
	fi
fi

if [ -d ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/mm ]; then
	NUMBER_OF_FILES=`ls ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/mm/ | wc -l`
	if [ ${NUMBER_OF_FILES} -gt 0 ]; then
		>&2 echo "WARNING! Mailman files detected in mm/, these will not be restored:"
		>&2 ls ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/mm/
		EXIT_CODE=2
	fi
fi

RESELLER=0
if [ -s ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/resellerconfig/resellers ]; then
	if grep -m1 -q "^${USERNAME}:" ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/resellerconfig/resellers; then
		RESELLER=1
	fi
fi

if [ ${RESELLER} -gt 0 ]; then
	if [ -d ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/cpanel3-skel/public_html ]; then
		mv ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/cpanel3-skel/public_html ${DIRECTADMIN_BACKUPS}/${USERNAME}/domains/default
	fi
	if [ ! -d ${DIRECTADMIN_BACKUPS}/${USERNAME}/domains/suspended ] && [ -d /usr/local/directadmin/data/templates/suspended ]; then
		cp -R /usr/local/directadmin/data/templates/suspended ${DIRECTADMIN_BACKUPS}/${USERNAME}/domains/suspended
	fi
	perl -pi -e 's/usertype=user/usertype=reseller/' ${DA_USER_CONF}
	# Creating backup.conf
	USER_BACKUP_CONF=${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/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 reseller.conf
cat <<< "additional_bandwidth=0
aftp=OFF
api_with_password=yes
bandwidth=${CPANEL_BWLIMIT}
catchall=OFF
cgi=ON
cron=OFF
dnscontrol=OFF
domainptr=${CPANEL_MAXPARK}
ftp=${CPANEL_MAXFTP}
inode=unlimited
login_keys=OFF
mysql=${CPANEL_MAXSQL}
nemailf=${CPANEL_MAXPOP}
nemailml=${CPANEL_MAXLST}
nemailr=unlimited
nemails=unlimited
notify_on_all_question_failures=yes
notify_on_all_twostep_auth_failures=yes
ns1=${NS1}
ns2=${NS2}
nsubdomains=${CPANEL_MAXSUB}
package=${CPANEL_PLAN}
php=ON
quota=${CPANEL_QUOTA}
security_questions=no
sentwarning=no
spam=OFF
ssh=OFF
ssl=ON
sysinfo=OFF
twostep_auth=no
vdomains=${CPANEL_MAXADDON}
userssh=ON
dns=ON
ip=shared
ips=0
oversell=ON
serverip=ON
subject=Your account for |domain| is now ready for use." > ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/reseller.conf

	# Creating ip.list
	if [ ! -e ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/ip.list ]; then
		grep "ip=" ${USER_BACKUP_CONF} | cut -d= -f2 > ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/ip.list
	fi

	# Creating everything else
	touch ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/login.hist
	touch ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/reseller.history
	touch ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/users.list
	if [ -e /usr/local/directadmin/data/users/admin/u_welcome.txt ]; then
		cp -f /usr/local/directadmin/data/users/admin/u_welcome.txt ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/u_welcome.txt
	fi
	
	# Creating empty packages
	mkdir -p ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/packages
	echo -n '' > ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/packages.list
	
	# Transfer packages
	find ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/resellerpackages -print0 | while read -d $'\0' file
	do
		PACKAGEFILE="${file}"
		if [ "${PACKAGEFILE}" != "${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/resellerpackages" ]; then
			PACKAGENAME="`basename \"${PACKAGEFILE}\"`"
			if [ "${PACKAGENAME}" != "" ] && [ -s "${PACKAGEFILE}" ]; then
				echo "Converting package ${PACKAGENAME}..."
				PACKAGENAME="`echo \"${PACKAGENAME}\" | tr ' ' '_'`"
				PACKAGE_TO_WRITE="${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/packages/${PACKAGENAME}.pkg"
				#Get default domain name
				PKGCPANEL_CGI=`getPkgOpt CGI "${PACKAGEFILE}"`
				if [ "${PKGCPANEL_CGI}" = "y" ]; then
					PKGCPANEL_CGI="ON"
				else
					PKGCPANEL_CGI="OFF"
				fi
				PKGCPANEL_HASSHELL=`getPkgOpt HASSHELL "${PACKAGEFILE}"`
				if [ "${PKGCPANEL_HASSHELL}" = "y" ]; then
					PKGCPANEL_HASSHELL="ON"
				else
					PKGCPANEL_HASSHELL="OFF"
				fi
				PKGCPANEL_MAXPARK=`getPkgOpt MAXPARK "${PACKAGEFILE}"`
				[[ ${PKGCPANEL_MAXPARK} -eq 0 ]] && PKGCPANEL_MAXPARK="unlimited"
				PKGCPANEL_MAXFTP=`getPkgOpt MAXFTP "${PACKAGEFILE}"`
				PKGCPANEL_MAXSQL=`getPkgOpt MAXSQL "${PACKAGEFILE}"`
				PKGCPANEL_MAXSUB=`getPkgOpt MAXSUB "${PACKAGEFILE}"`
				PKGCPANEL_MAXPOP=`getPkgOpt MAXPOP "${PACKAGEFILE}"`
				PKGCPANEL_MAXLST=`getPkgOpt MAXLST "${PACKAGEFILE}"`
				PKGCPANEL_MAXADDON=`getPkgOpt MAXADDON "${PACKAGEFILE}"`
				[[ ${PKGCPANEL_MAXADDON} -eq 0 ]] && PKGCPANEL_MAXADDON="unlimited"
				PKGCPANEL_BWLIMIT=`getPkgOpt BWLIMIT "${PACKAGEFILE}"`
				PKGCPANEL_QUOTA=`getPkgOpt QUOTA "${PACKAGEFILE}"`
				echo "${PACKAGENAME}" >> ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/packages.list
cat <<< "aftp=OFF
bandwidth=${PKGCPANEL_BWLIMIT}
catchall=OFF
cgi=${PKGCPANEL_CGI}
cron=ON
dnscontrol=ON
domainptr=${PKGCPANEL_MAXPARK}
ftp=${PKGCPANEL_MAXFTP}
inode=unlimited
language=en
login_keys=OFF
mysql=${PKGCPANEL_MAXSQL}
nemailf=${PKGCPANEL_MAXPOP}
nemailml=${PKGCPANEL_MAXLST}
nemailr=unlimited
nemails=unlimited
nsubdomains=${PKGCPANEL_MAXSUB}
php=ON
quota=${PKGCPANEL_QUOTA}
skin=evolution
spam=ON
ssh=${PKGCPANEL_HASSHELL}
ssl=ON
suspend_at_limit=ON
sysinfo=ON
vdomains=${PKGCPANEL_MAXADDON}" > "${PACKAGE_TO_WRITE}"
			else
				echo "Unable to convert ${PACKAGEFILE}..."
			fi
		fi
	done
fi

echo "Creating DirectAdmin tarball..."

if ${TAR_GZ}; then
	TAR_ENDING="tar.gz"
	TAR_FLAGS="czfp"
else
	TAR_ENDING="tar"
	TAR_FLAGS="cfp"
fi
if [ ${RESELLER} -eq 0 ]; then
	TARBALL_NAME=user.${CPANEL_OWNER}.${USERNAME}.${TAR_ENDING}
else
	TARBALL_NAME=reseller.${CPANEL_OWNER}.${USERNAME}.${TAR_ENDING}
fi
if [ ! -d ${DIRECTADMIN_BACKUPS}/${USERNAME}/imap ]; then
	mkdir -p ${DIRECTADMIN_BACKUPS}/${USERNAME}/imap
fi
tar ${TAR_FLAGS} ${DIRECTADMIN_BACKUPS}/${TARBALL_NAME} -C ${DIRECTADMIN_BACKUPS}/${USERNAME} domains backup imap
if [ $? -ne 0 ]; then
	rm -rf ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert
	do_exit 7 "Unable to create DirectAdmin backup ${DIRECTADMIN_BACKUPS}/${TARBALL_NAME}. Exiting..."
fi

echo "Cleaning up..."
rm -rf ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert
rm -rf ${DIRECTADMIN_BACKUPS}/${USERNAME}

echo "Done! ${DIRECTADMIN_BACKUPS}/${TARBALL_NAME} is ready."
exit ${EXIT_CODE}