#!/bin/bash
#
# /usr/local/sbin/localezcreate
# Copyright 2001-2002 Jonas Smedegaard <dr@jones.dk>
#
# $Id: localezcreate,v 1.9 2002/04/10 01:12:13 jonas Exp $
#
# Create local eZ Publish site
#

set -e

# Defaults
defaultmaildomain=`hostname -d`
defaultdomain="ez.$defaultmaildomain"
defaultuid="www-data"

# Input
dbuser="$1"
host="$2"
fqdn="$3"
db="$4"
mailuser="$5"
maildomain="$6"
uid="$7"
gid="$8"
dbpasswd="$9"

if [ $# \< 2 -o $# \> 9 ]; then
	echo "\$#: $#"
	echo "Usage: `basename $0` dbuser host [fqdn [db [mailuser [maildomain [ uid [ gid [dbpasswd ]]]]]]]"
	echo
	echo "  dbuser:      MySQL database user"
	echo "  host:        hostname (and only that - no dots!)"
	echo "  fqdn:        Fully qualified domain name (default here is <host>.$defaultdomain)"
	echo "  db:          MySQL database name"
	echo "  mailuser:    User part of mail address (default is <dbuser>)"
	echo "  maildomain:  Domain part of mail address (default here is $defaultmaildomain)"
	echo "  uid:         System user id (default is $defaultuid)"
	echo "  gid:         System group id (default is <uid>"
	echo "  dbpasswd:    MySQL database password (default is to ask for it)"
	echo
	echo "  Example: `basename $0` bilbo news news.forum.com"

	exit 1
fi

# Attempt to find MySQL root password
if [ -f /root/.my.cnf ]; then
	dbrootpw=$(grep password /root/.my.cnf | awk -F= '{print $2}' | head -1 | sed 's/^ //g')
else
	echo -n "Enter MySQL root password: "
	read -s dbrootpw
	echo
fi

pkg="ezpublish"
srcdir="/usr/src/ezpublish"
sqldir="/usr/share/ezpublish/sql"
bindir="/usr/share/ezpublish/bin"
tarballs="lib data install www"
sqlfile="publish_mysql.sql"
sqlfile2="data_mysql.sql"

[ "x$uid" == "x" ] && uid="$defaultuid"
gid="$uid"
[ "x$fqdn" == "x" ] && fqdn="$host.$defaultdomain"
[ "x$db" == "x" ] && db="ez_2_2_$host"
[ "x$mailuser" == "x" ] && mailuser="$uid"
[ "x$maildomain" == "x" ] && maildomain="$defaultmaildomain"
if [ "x$dbpasswd" == "x" ]; then
	echo -n "Enter MySQL password for $dbuser: "
	read -s dbpasswd
	echo
fi
home=`getent passwd $uid | awk -F: '{print $6}';`
basedir="$home/web_$fqdn"
adminhost="admin.$fqdn"
adminbasedir="$basedir/admin"
webcfg="/etc/apache/vhosts.d/$fqdn"

#TODO: Make sure $basedir, $db, $dbuser and $webcfg doesn't exist

if [ "$(basename $0)" = "${pkg}betarecreate" ]; then
	mysqladmin -uroot -p$dbrootpw drop $db
	rm -rf $basedir
fi

echo "Creating database $db"
mysqladmin -uroot -p$dbrootpw create $db
echo "GRANT SELECT,INSERT,UPDATE,DELETE ON $db.* TO '$dbuser'@localhost IDENTIFIED BY '$dbpasswd';" | mysql -uroot -p$dbrootpw

echo "Inject initial data into database"
cat $sqldir/$sqlfile | mysql -uroot -p$dbrootpw $db

echo -n "Unpacking tarballs:"
su $uid -c "
	mkdir $basedir
	cd $basedir
	for tarball in $tarballs; do
		echo -n \" \$tarball\"
		tar -xz -C $basedir -f $srcdir/\$tarball.tar.gz
	done
	echo
"

echo "Adding demo data to database"
mysql -u$dbuser -p$dbpasswd $db < $sqldir/$sqlfile2

echo "Configuring website"
su $uid -c "
	cd $basedir
	$bindir/modfix.sh >/dev/null
	$bindir/secure_modfix.sh >/dev/null
	mkdir -p override
	echo \"[site]
SiteURL=$fqdn
AdminSiteURL=admin.$fqdn
UserSiteURL=$fqdn
SiteTitle=$host eZ site
Keywords=$host $maildomain
SiteAuthor=someone at $maildomain
SiteCopyright=someone &copy; 2001
SiteDescription=a web application suite
SiteKeywords=Content Management System, CMS, e-commerce
Database=$db
User=$dbuser
Password=$dbpasswd

[eZUserMain]
DefaultCountry=58

[eZTradeMain]
OrderSenderEmail=$mailuser@$maildomain
OrderReceiverEmail=$mailuser@$maildomain
mailToAdmin=$mailuser@$maildomain
ForceSSL=disabled
ApacheUser=UserApacheRunsAs

[eZForumMain]
ReplyAddress=$mailuser@$maildomain
\"	> override/site.ini.append
"

echo "Configuring Apache"
echo "# Generated for $pkg by $(basename $0)
<VirtualHost *>
	ServerName	$fqdn
	ServerAdmin	$mailuser@$maildomain
	DocumentRoot	$basedir
	user		$uid
	group		$gid
	<Directory $basedir>
		Options		FollowSymLinks
		AllowOverride	None 
	</Directory>
	php_flag	magic_quotes_gpc off
	RewriteEngine	On
	RewriteRule	^/stats/store/(.*).gif\$ $basedir/ezstats/user/storestats.php [S=4]
	RewriteRule	^/filemanager/filedownload/([^/]+)/(.*)\$ $basedir/ezfilemanager/files/\$1 [T=\"application/oct-stream\",S=3]
	RewriteRule	.*/ezmediacatalogue/catalogue/(.*)\$ $basedir/ezmediacatalogue/catalogue/\$1 [T=\"application/oct-stream\",S=2]
	RewriteRule	^/xmlrpc.*\$  $basedir/index_xmlrpc.php [S=1]
	RewriteRule	!\.(gif|css|jpg|png|jar)\$ $basedir/index.php
</VirtualHost>
<VirtualHost *>
	ServerName	$adminhost
	ServerAdmin	$mailuser@$maildomain
	DocumentRoot	$basedir
	user		$uid
	group		$gid
	<Directory $basedir>
		Options		FollowSymLinks
		AllowOverride	None 
	</Directory>
	php_flag	magic_quotes_gpc off
	RewriteEngine	On
	RewriteRule	.*/ezmediacatalogue/catalogue/(.*)\$ $basedir/ezmediacatalogue/catalogue/\$1 [T=\"application/oct-stream\",S=1]
	RewriteRule     !\.(gif|css|jpg|png|jar) $basedir/index_admin.php
</VirtualHost>
<VirtualHost *>
	ServerName	www.$fqdn
	RewriteEngine	On
	RewriteRule	/ http://$fqdn/ [R]
</VirtualHost>" > $webcfg

echo "Done!"
echo "Remember to reload Apache..."
