#!/bin/sh
# This script is written by Martynas Bendorius and DirectAdmin
# It is used to install RoundCube webmail into DirectAdmin servers
# Official RoundCube webmail page: http://www.roundcube.net

VERSION=0.1-rc1

DA_SCRIPTS=/usr/local/directadmin/scripts
DA_MYSQL=/usr/local/directadmin/conf/mysql.conf
TARFILE=${DA_SCRIPTS}/packages/roundcubemail-${VERSION}.tar.gz
WWWPATH=/var/www/html
REALPATH=${WWWPATH}/roundcubemail-${VERSION}
ALIASPATH=${WWWPATH}/roundcube
if [ -e /etc/httpd/conf/exta/httpd-alias.conf ]; then
	HTTPDCONF=/etc/httpd/conf/exta/httpd-alias.conf
else
	HTTPDCONF=/etc/httpd/conf/httpd.conf
fi
CONFIG=${REALPATH}/config/main.inc.php
DA_HOSTNAME=`hostname`
HTTPPATH=http://servermonkeys.com/projects/els/roundcube

OS=`uname`

# variables for the database:
ROUNDCUBE_DB=da_roundcube
ROUNDCUBE_DB_USER=da_roundcube
ROUNDCUBE_DB_PASS=`perl -le'print map+(A..Z,a..z,0..9)[rand 62],0..7'`;
DB_CONFIG=${REALPATH}/config/db.inc.php
MYSQLUSER=`grep "^user=" ${DA_MYSQL} | cut -d= -f2`
MYSQLPASSWORD=`grep "^passwd=" ${DA_MYSQL} | cut -d= -f2`

if [ "${OS}" = "FreeBSD" ]; then
	WGET=/usr/local/bin/wget
	TAR=/usr/bin/tar
	CHOWN=/usr/sbin/chown
	ROOTGRP=wheel
else
	WGET=/usr/bin/wget
	TAR=/bin/tar
	CHOWN=/bin/chown
	ROOTGRP=root
fi 

if [ ! -e ${TARFILE} ]; then
	${WGET} -O ${TARFILE} ${HTTPPATH}/roundcubemail-${VERSION}.tar.gz
fi

if [ ! -e ${TARFILE} ]; then
	echo "Can not download roundcubemail-${VERSION}"
	exit 1
fi

#Extract the file
${TAR} xzf ${TARFILE} -C ${WWWPATH}

if [ ! -e ${REALPATH} ]; then
	echo "Directory ${REALPATH} does not exist"
	exit 1
fi

if [ -e ${ALIASPATH} ]; then
	if [ -d ${ALIASPATH}/logs ]; then
		cp -fR ${ALIASPATH}/logs/* ${REALPATH}/logs
	fi
	if [ -d ${ALIASPATH}/temp ]; then
		cp -fR ${ALIASPATH}/temp/* ${REALPATH}/temp
	fi
fi

#link it from a fake path:
/bin/rm -f ${ALIASPATH}
/bin/ln -sf roundcubemail-${VERSION} ${ALIASPATH}
cd ${REALPATH}

#insert data to mysql and create database/user for roundcube:
if [ ! -d /var/lib/mysql/${ROUNDCUBE_DB} ]; then
	if [ -d SQL ]; then
		echo "Inserting data to mysql and creating database/user for roundcube..."
		mysql -e "CREATE DATABASE ${ROUNDCUBE_DB};" --user=${MYSQLUSER} --password=${MYSQLPASSWORD}
		mysql -e "GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON ${ROUNDCUBE_DB}.* TO '${ROUNDCUBE_DB_USER}'@'localhost' IDENTIFIED BY '${ROUNDCUBE_DB_PASS}';" --user=${MYSQLUSER} --password=${MYSQLPASSWORD}
		mysql -e "use ${ROUNDCUBE_DB}; source SQL/mysql.initial.sql;" --user=${ROUNDCUBE_DB_USER} --password=${ROUNDCUBE_DB_PASS}
		echo "Database created, ${ROUNDCUBE_DB_USER} password is ${ROUNDCUBE_DB_PASS}"
	else
		echo "Can not find SQL directory in roundcubemail-${VERSION}"
		exit 1
	fi
else
	mysql -e "SET PASSWORD FOR '${ROUNDCUBE_DB_USER}'@'localhost' = PASSWORD('${ROUNDCUBE_DB_PASS}');" --user=${MYSQLUSER} --password=${MYSQLPASSWORD}
	if [ `cat index.php | grep RCMAIL_VERSION | awk '{ print $2}' | cut -d\' -f2` != "${VERSION}" ]; then
		mysql -e "use ${ROUNDCUBE_DB}; source SQL/mysql.initial.sql;" --user=${ROUNDCUBE_DB_USER} --password=${ROUNDCUBE_DB_PASS}
	fi
fi

#install the proper config:
if [ -d ../roundcube ]; then
	echo "Editing roundcube configuration..."
	cd ${REALPATH}/config
	/bin/mv -f db.inc.php.dist db.inc.php
	/bin/mv -f main.inc.php.dist main.inc.php
	/usr/bin/perl -pi -e "s|mysql://roundcube:pass\@localhost/roundcubemail|mysql://${ROUNDCUBE_DB_USER}:${ROUNDCUBE_DB_PASS}\@localhost/${ROUNDCUBE_DB}|" db.inc.php >/dev/null
	/usr/bin/perl -pi -e "s|\['enable_caching'] = TRUE|\['enable_caching'] = FALSE|" main.inc.php > /dev/null
	/usr/bin/perl -pi -e "s|\['imap_root'] = ''|\['imap_root'] = 'INBOX.'|" main.inc.php > /dev/null
	/usr/bin/perl -pi -e "s|\['default_host'] = ''|\['default_host'] = 'localhost'|" main.inc.php > /dev/null
	/usr/bin/perl -pi -e "s|\['junk_mbox'] = 'Junk'|\['junk_mbox'] = 'spam'|" main.inc.php > /dev/null
	/usr/bin/perl -pi -e "s|\['default_imap_folders'] = array\('INBOX', 'Drafts', 'Sent', 'Junk', 'Trash'\)|\['default_imap_folders'] = array\('Drafts', 'Sent', 'spam', 'Trash'\)|" main.inc.php > /dev/null
	echo "Roundcube has been installed successfully."
fi

#set the permissions:
${CHOWN} -R root:${ROOTGRP} ${REALPATH}
${CHOWN} -R apache ${REALPATH}/temp ${REALPATH}/logs
/bin/chmod -R 700 ${REALPATH}/temp
/bin/chmod -R 700 ${REALPATH}/logs

#writing alias to httpd.conf
COUNTALIAS=`grep -c -e "Alias /roundcube" ${HTTPDCONF}`
if [ "${COUNTALIAS}" = "0" ]; then
   echo "Adding roundcube alias to ${HTTPDCONF}"
   echo "" >> ${HTTPDCONF}
   echo "# Alias for RoundCube webmail" >> ${HTTPDCONF}
   echo "Alias /roundcube ${ALIASPATH}/" >> ${HTTPDCONF}
   echo "" >> ${HTTPDCONF}
   echo "You need to restart the httpd service if you want alias to work."
fi

