#!/bin/sh #VERSION=0.0.9 #This script is written by Martynas Bendorius and DirectAdmin #cPanel->DirectAdmin backup conversion tool #usage: # $0 [] removeLockfile() { rm -f ${LOCKFILE} trap - INT TERM EXIT } do_exit() { if [ "$2" != "" ]; then 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 []"; echo "you gave #$#: $0 $1 $2"; exit 0; fi CPANEL_BACKUP=$1 WORKDIR=`pwd` if echo ${CPANEL_BACKUP} | grep -m1 -q '^/' | grep -m1 -q 'tar\.gz$'; then do_exit 1 "${CPANEL_BACKUP} is incorrect FULL path to the backup file. Exiting." fi if [ $# != 2 ]; then DIRECTADMIN_BACKUPS=${WORKDIR}/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 2 "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 if ${TAR_GZ}; then tar xzfC ${CPANEL_BACKUP} ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert --strip=1 else tar xfC ${CPANEL_BACKUP} ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert --strip=1 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 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 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.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 ]; 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 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=no" >> ${CONVERTED_DOMAIN_CONF} echo "username=${USERNAME}" >> ${CONVERTED_DOMAIN_CONF} #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 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 #Copy SSL cert/key/cacert if [ -e ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/userdata/${CONVERTED_DOMAIN}_SSL ]; then if grep -m1 -q '^sslcacertificatefile: ' ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/userdata/${CONVERTED_DOMAIN}_SSL; then CACERT_NAME="`grep -m1 '^sslcacertificatefile: ' ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/userdata/${CONVERTED_DOMAIN}_SSL | 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: ' ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/userdata/${CONVERTED_DOMAIN}_SSL; then CERT_NAME="`grep -m1 '^sslcertificatefile: ' ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/userdata/${CONVERTED_DOMAIN}_SSL | 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: ' ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/userdata/${CONVERTED_DOMAIN}_SSL; then KEY_NAME="`grep -m1 '^sslcertificatekeyfile: ' ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/userdata/${CONVERTED_DOMAIN}_SSL | 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 #Create subdomains.list 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 { SUBDOMAIN_PART=`echo ${i} | cut -d= -f2 | cut -d_ -f1` DOMAIN_PART=`echo ${i} | cut -d_ -f2` 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 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 #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 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 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}/backup/${CONVERTED_DOMAIN}/email/data/imap/${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 mv ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/mail/${CONVERTED_DOMAIN}/${EMAIL_USER} ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/email/data/imap/${EMAIL_USER}/Maildir else if [ -x /usr/bin/doveadm ]; then echo "Converting mdbox email data to maildir format..." mkdir -p ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/email/data/imap/${EMAIL_USER}/Maildir chown mail. ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${CONVERTED_DOMAIN}/email/data/imap/${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}/backup/${CONVERTED_DOMAIN}/email/data/imap/${EMAIL_USER}/Maildir else echo "WARNING! Unable to find /usr/bin/doveadm, skipping conversion of mdbox to maildir." 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}/backup/${CONVERTED_DOMAIN}/email/data/imap/${EMAIL_USER}/.mailboxlist fi } done 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 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 mkdir -p ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${FORWARDER_PARENT_DOMAIN} touch ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${FORWARDER_PARENT_DOMAIN}/domain.pointers #Check for email accounts in domain pointers and transfer them #Convert RoundCube data #Commented out, because it roundcube PHP script auto-creates alias domain dir, and DA treats it as domain then ($xml_path = $directadmin_backup_directory . '/' . $domain.'/email/data';) # if [ -s ${WORKDIR}/php_sql_parser/PHPSQLParser.php ] && [ -e ${WORKDIR} ] && [ -s ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/mysql/roundcube.sql ]; then # echo "Generating roundcube.xml..." # /usr/local/bin/php ${WORKDIR}/cpanel_da_roundcube.php ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/mysql/roundcube.sql ${i} is_maindomain=0 ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup # fi #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}/backup/${FORWARDER_PARENT_DOMAIN}/email/data/imap/${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}/backup/${FORWARDER_PARENT_DOMAIN}/email/data/imap/${EMAIL_USER}/Maildir else mv ${DIRECTADMIN_BACKUPS}/${USERNAME}_cpanel_to_convert/homedir/mail/${i}/${EMAIL_USER} ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${FORWARDER_PARENT_DOMAIN}/email/data/imap/${EMAIL_USER}/Maildir fi else if [ -x /usr/bin/doveadm ]; then echo "Converting mdbox email data to maildir format..." mkdir -p ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${FORWARDER_PARENT_DOMAIN}/email/data/imap/${EMAIL_USER}/Maildir chown mail. ${DIRECTADMIN_BACKUPS}/${USERNAME}/backup/${FORWARDER_PARENT_DOMAIN}/email/data/imap/${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}/backup/${FORWARDER_PARENT_DOMAIN}/email/data/imap/${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}/backup/${FORWARDER_PARENT_DOMAIN}/email/data/imap/${EMAIL_USER}/Maildir fi else echo "WARNING! Unable to find /usr/bin/doveadm, skipping conversion of mdbox to maildir." 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}/backup/${FORWARDER_PARENT_DOMAIN}/email/data/imap/${EMAIL_USER}/.mailboxlist fi else echo "Skipping ${EMAIL_USER}@${i}, because ${i} is a domain alias of ${FORWARDER_PARENT_DOMAIN}, and ${EMAIL_USER}@${FORWARDER_PARENT_DOMAIN} already exists" fi } done 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 echo "WARNING! Unable to find /usr/bin/doveadm, skipping conversion of mdbox to maildir." 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 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=no sysinfo=ON twostep_auth=no username=${USERNAME} usertype=user vdomains=${CPANEL_MAXADDON} zoom=100" > ${DA_USER_CONF} #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 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}" 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 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 echo "WARNING: unable to find database user password for ${u}" 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}" ]; then echo "WARNING! ${USERNAME_FIRST_PART}_${USERNAME_WITHOUT_FIRST_PART} username cannot be set to ${USERNAME}, renaming database user to ${USERNAME}_${USERNAME_WITHOUT_FIRST_PART}" USERNAME_PART="${USERNAME}_${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 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 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 [ ${RESELLER} -eq 0 ]; then TARBALL_NAME=user.${CPANEL_OWNER}.${USERNAME}.tar.gz else TARBALL_NAME=reseller.${CPANEL_OWNER}.${USERNAME}.tar.gz fi tar czfp ${DIRECTADMIN_BACKUPS}/${TARBALL_NAME} -C ${DIRECTADMIN_BACKUPS}/${USERNAME} domains backup 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 0