#!/bin/sh

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

if [ $# -lt 2 ]; then
	echo "Usage:";
	echo "$0 <server_ip> <port>";
	echo "you gave #$#: $0 $1 $2";
	exit 0;
fi

SERVER_IP="${1}"
if [ -z "${2}" ]; then
        SERVER_PORT="22"
else
        SERVER_PORT="${2}"
fi

read -s -p "Enter SSH password of ${SERVER_IP}, if ssh-key is setup - just leave it empty: "  password

if [ ! -x /usr/bin/sshpass ] && [ ! -x /usr/local/bin/sshpass ]; then
        OS=`uname`
        if [ "${OS}" = "FreeBSD" ]; then
                pkg install -y sshpass
        elif [ -e /etc/debian_version ]; then
                apt-get -y install sshpass
        else
                yum -y install sshpass
        fi
fi

# Transfer packages
ROOT_PACKAGES="/var/cpanel/packages"

PACKAGES_LIST="/usr/local/directadmin/data/users/admin/packages.list"
PACKAGES_DIR="/usr/local/directadmin/data/users/admin/packages"

# Emulate ${!variable}
eval_var() {
        var=${1}
        if [ -z ${var} ]; then
                echo ""
        else
                eval newval="\$${var}"
                echo $newval
        fi
}

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}
}

sshpass -p "${password}" ssh -n -o StrictHostKeyChecking=no -p${SERVER_PORT} root@${SERVER_IP} "find ${ROOT_PACKAGES} -maxdepth 1 -type f -print0" | while read -d $'\0' file
do
    PACKAGE_FILE="${file}"
    PACKAGE_NAME="`basename \"${PACKAGE_FILE}\"`"
    TMP_FILENAME="/tmp/da_converted_package.txt"
    sshpass -p "${password}" ssh -n -o StrictHostKeyChecking=no -p${SERVER_PORT} root@${SERVER_IP} "cat \"${file}\"" > ${TMP_FILENAME}
    
    echo "Converting package ${PACKAGE_NAME}..."
    PACKAGE_NAME="`echo \"${PACKAGE_NAME}\" | tr ' ' '_'`"
    PACKAGE_TO_WRITE="${PACKAGES_DIR}/${PACKAGE_NAME}.pkg"
    if [ -s "${PACKAGE_TO_WRITE}" ]; then
        echo "${PACKAGE_TO_WRITE} already exists, skipping..."
        continue
    fi
    #Get default domain name
    PKGCPANEL_CGI=`getPkgOpt CGI "${TMP_FILENAME}"`
    if [ "${PKGCPANEL_CGI}" = "y" ]; then
            PKGCPANEL_CGI="ON"
    else
            PKGCPANEL_CGI="OFF"
    fi
    PKGCPANEL_HASSHELL=`getPkgOpt HASSHELL "${TMP_FILENAME}"`
    if [ "${PKGCPANEL_HASSHELL}" = "y" ]; then
            PKGCPANEL_HASSHELL="ON"
    else
            PKGCPANEL_HASSHELL="OFF"
    fi
    PKGCPANEL_MAXPARK=`getPkgOpt MAXPARK "${TMP_FILENAME}"`
    PKGCPANEL_MAXFTP=`getPkgOpt MAXFTP "${TMP_FILENAME}"`
    PKGCPANEL_MAXSQL=`getPkgOpt MAXSQL "${TMP_FILENAME}"`
    PKGCPANEL_MAXSUB=`getPkgOpt MAXSUB "${TMP_FILENAME}"`
    PKGCPANEL_MAXPOP=`getPkgOpt MAXPOP "${TMP_FILENAME}"`
    PKGCPANEL_MAXLST=`getPkgOpt MAXLST "${TMP_FILENAME}"`
    PKGCPANEL_MAXADDON=`getPkgOpt MAXADDON "${TMP_FILENAME}"`
    if [ "${PKGCPANEL_MAXADDON}" = "0" ]; then
            PKGCPANEL_MAXADDON="1"
    fi
    PKGCPANEL_BWLIMIT=`getPkgOpt BWLIMIT "${TMP_FILENAME}"`
    PKGCPANEL_QUOTA=`getPkgOpt QUOTA "${TMP_FILENAME}"`
    echo "${PACKAGE_NAME}" >> ${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=unlimited
nemailml=${PKGCPANEL_MAXLST}
nemailr=unlimited
nemails=${PKGCPANEL_MAXPOP}
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}"
        rm -f ${TMP_FILENAME}
        echo "Converted ${PACKAGE_NAME}..."
done

exit 0
